Páginas filhas
  • DFWKTOOLS-2601 DT Ajustes no uso de arrays dinâmicos 4GL


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:

ARRAY SIMPLES 
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.


ARRAY OF RECORD
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:

ARRAYDELETEITEM() para ARRAY SIMPLES 
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.


IMPORTANTE!

Disponível a partir do pacote oficial 12.1.29 ou Framework Fix 12.1.28.(fix03)




|