X for Dummies

X++ – Erro interno script número 25

Publicado em AX40, X++, 28/03/2009, por Edvandro Santos

0


Trabalhando com a integração do AX com a DLL do CobreBem para geração de boleto a partir da linha do diário, um erro interno é comumente exibido a cada boleto impresso, porém o processo continua normalmente.

Bem, apesar de no meu caso o problema ter sido a arquitetura em que foi implementada a integração, descobri que esse erro ocorre muito quando trabalhamos na manipulação de tabelas e registros para gerar XML (método xml() da tabela) que possuem campos do tipo MEMO, valor normalmente empregado para campos que não mais existirão em versões novas da aplicação.

Para verificar as tabelas que apresentam esse problema e, também, para replicar o erro, segue um job simples, para entender do que estou falando:


static void exibirErro25(Args args)

{

EmplTable emplTable; //Tabela de funcionários

select firstOnly emplTable; //Obtendo o 1o. registro da tabela de funcionários

info(emplTable.xml());

}

O job acima nada mais faz do que exibe o erro mencionado nesse artigo.

Para resolver o problema, sobrescreva o método xml() e trate os campos com o código abaixo:


//Criando dicionário de dados da tabela de funcionários

SysDictTable sysDictTable = new SisDictTable(tablenum(EmplTable));

SysDictField sysDictField;

Types dataType;

int index; //Posição do array

// ... Sequência do código para gerar xml

for(index = 1; index <= sysDictTable.fieldCnt(); index++)

{

dictField = new SysDictField(tableId,dictTable.fieldCnt2Id(index));

dataType  = dictField.baseType();

if(dataType == Types::VarString) //Caso o campo seja MEMO

{

continue; //Ignora o campo para gerar o xml.

}

// ... Continuação da geração do xml

}

Com isso, o erro passa a ser exibido e o processo continua perfeitamente!

Abraços à todos.


Posts relacionados


    Fatal error: Call to undefined function wp_related_posts() in /home/storage/8/42/49/axfordummies/public_html/wp-content/themes/axfordummies/single.php on line 33