01. DADOS GERAIS
Produto: | TOTVS Manufatura TOTVS Backoffice |
---|---|
Linha de Produto: | Linha Logix |
Segmento: | Manufatura |
Módulo: | Framework |
Função: | Uso de array 4GL dinâmico |
Requisito/Story/Issue (informe o requisito relacionado) : | DFWKTOOLS-2601 |
02. SITUAÇÃO/REQUISITO
A partir do Build AppServer 7.00.131227 revisão 13.1.3.50 houve uma correção na função ArrayDeleteItem() para que no caso de eliminação completa de todas linhas de um array, não permaneça uma linha fixa, o que ocorria até a revisão anterior.
Em relação a definição de um ARRAY 4GL dinâmico sem quantidade de linhas na sua declaração temos atualmente:
DEFINE la_list ARRAY [] OF CHAR(30)
Neste caso o array foi declarado sem uma definição de linhas e a instância inicial dele será alocada com 1 linha fixa.
DEFINE la_list ARRAY [] OF RECORD num_value INTEGER, text_value CHAR(30) END RECORD
Neste caso o array of record foi declarado sem uma definição de linhas e a instância inicial dele será alocada sem nenhuma linha (vazio).
Este é o comportamento padrão da linguagem Totvs AppServer 4GL e no caso de aplicar ação da função ArrayDeleteItem para todas as linhas nestes 2 exemplos, temos comportamento diferente no build de revisão anterior a 13.1.3.50 onde para o ARRAY SIMPLES, ainda permanecia com 1 linha, mesmo indicando eliminação completa de suas linhas, ou seja:
MAIN DEFINE la_list ARRAY [] OF CHAR(30) CALL ArrayDeleteItem(la_list) CALL conout("Linhas array = "||ArrayLength(la_list)) END MAIN
Neste caso o array é alocado inicialmente com 1 linha, mas mesmo após acionar a função ArrayDeleteItem() para eliminar todas linhas, a quantidade de linhas, recuperada pela função ArrayLength() ainda permanece com 1 linha para builds anteriores a revisão 13.1.3.50.
Já para builds de revisão 13.1.3.50 ou superior, agora a ação da funão ArrayDeleteItem() para array simples, sem informar a posição da linha a ser eliminada, elimina completamente todas as linhas.
Esta mudança de comportamento afetou alguns códigos de funcionalidades do framework que precisam de ajuste para que sejam compatíveis com qualquer versão de Build TotvsAppserver.
03. SOLUÇÃO
Foram realizados ajustes em algumas funções do Framework que foram impactadas com a correção da função ArrayDeleteItem liberada no build Application Server - 13.1.3.50, para que seja compatível com todos os builds.
Disponível a partir do pacote oficial 12.1.29 ou Framework Fix 12.1.28.(fix03)IMPORTANTE!
|