Rotina automática PLSA260FD6DEMAIS

Olá,

Estou precisando usar a rotina automática PLSA260FD6DEMAIS ("Demais Dados Cadastrais da família"), para complementar alguns dados via uma API.

Mas na hora de executar o "oModel:vldData()" dá o erro: "variable does not exist LJURIDICO"

Segue o trecho do fonte:

oModel := FWLoadModel("PLSA260FD6DEMAIS") oModel:SetDescription('Preenche Demais Dados Cadastrais da familia') oModel:setOperation(MODEL_OPERATION_UPDATE) BA3->(DBGoTop()) // reposiciono pois o FWLoadModel pode ter jogado para outro registro ou para EOF oModel:activate() oModel:setValue( 'MasterBA3', "BA3_HORACN", '1130') ) If !(oModel:vldData() .AND. oModel:commitData()) BREAK EndIf oModel:DeActivate() oModel:Destroy() oModel := NIL

Cara foi você que criou está rotina?
Use um nome para ela até 10 caracteres e vê se resolve

Olá,

Verifique se a atualização dos fontes do Protheus resolve o seu problema, caso não resolva, abra uma issue para a equipe responsável pela manutenção da rotina PLSA260FD6DEMAIS, pois essa rotina ou alguma dependência da mesma está utilizando de uma variável private indevidamente e no seu caso, ela não existe.

Todo modelo pode ser utilizado fora de sua rotina ou como um serviço, logo criar uma dependência de uma variável private é um erro.

A utilização de variáveis private é complexa e inúmeras vezes leva a exceção, eu pessoalmente nunca uso isso.

Enquanto você aguarda a correção por parte da TOTVS você tem uma alternativa, em seu fonte você vai criar a variável lJuridico e informar um valor booleano para a mesma, colocando por exemplo como .F. e então efetuar novos testes, verificando se tudo foi gravado como você esperava, claro, novos erros podem ocorrer, pois é possível que a rotina dependa de outras variáveis.

Como já disse, a utilização de variáveis private não é uma boa prática, portanto caso você solucione o problema assim, recomendo você remover essa variável após a correção por parte da TOTVS.

Muito obrigado Daniel.
Vou fazer as 2 coisas: abrir uma issue para a equipe responsável pela manutenção da rotina PLSA260FD6DEMAIS e testar criar uma variável private lJuridico para ver o resultado.
E assim que tiver um resultado eu posto aqui…

Criar uma variável lJuridico não deu certo. Continua acusando “variable does not exist LJURIDICO”.
Vou tentar atualizar atualizar os fontes e o dicionário…

A criação da variável lJuridico deve ser feita como uma variável private, precisa possuir um valor lógico, a criação deve ser feita ANTES de qualquer coisa feita na rotina PLSA260FD6DEMAIS, e deve ser feita de uma forma que a stack da variável seja mantida durante a utilização da rotina PLSA260FD6DEMAIS.

Verificando …

Mais uma vez obrigado Daniel.
Foi isso mesmo, criei “Private lJuridico := .F.” e funcionou.
Agora vou reportar para a Totvs verificar…