O erro "Variable is not array - Type [U]" ao processar acerto de inventário no SIGAEST ocorre quando a variável aRet está nula, geralmente por procedures desatualizadas ou falhas de bloqueio (lock). Recomenda-se atualizar procedures, garantir exclusividade no processamento e, se necessário, realizar debug técnico.
Tempo aproximado para leitura: 02:00:00 min
Dúvida
Ao processar o acerto de inventário no módulo SIGAEST (Estoque) é gerado o seguinte erro no error.log:
Variable is not array - Type [U] on A340THREAD(MATA340.PRX) 12/11/2024 19:00:29 line : 1648
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - Estoque/Custos - Todas as versões.
Solução
Certifique-se que o ambiente esteja devidamente atualizado:
- Acumulado BackOffice conforme sua versão
- LIB Atual - Logo Guará | Harpia
- Appserver
- Smartclient - Lobo Guará | Harpia
- DBAccess
- Central de Atualizações | Procedures de 14 a 22
O erro Type [U] em indica que a variável é do tipo Undefined (Indefinida/Nula).
Neste contexto específico, o sistema tenta acessar um índice de um array (posição [1]), porém a variável aRet — que deveria conter esse array — está vazia/nula no momento da execução.
O que a variável aRet armazena?
Esta variável é projetada para receber o retorno de:
Validações de Estoque: Execução de Stored Procedures que calculam saldos e custos.
Bloqueio de Registros (Lock): Tentativas de reservar o registro do produto para uso exclusivo da rotina.
Por que ela retorna Nulo?
Se houver uma falha de Lock (registro em uso por outro usuário/processo) ou um erro na execução da Stored Procedure (retorno inesperado do banco de dados), a função de validação pode não preencher o array, resultando no erro ao tentar ler seu conteúdo posteriormente.
Procedimentos de Indicado
Para corrigir essa inconsistência, recomenda-se seguir o roteiro de diagnóstico abaixo:
Atualização de Stored Procedures e rotinas (se desatualizado)
A causa mais comum é a desatualização ou incompatibilidade das Procedures de controle de saldo e custo.
Ação: Valide se as Stored Procedures (especificamente da 14 à 22) estão instaladas e atualizadas no banco de dados.
-
Referência: Utilize o boletim técnico oficial para verificação e reinstalação:
Cross Segmento - Backoffice (Linha Protheus) - SIGAEST - Procedure Desatualizada ou Incompatível
Concorrência e Bloqueio (Lock)
O erro pode ser intermitente, causado por concorrência de acesso ao mesmo registro de produto.
Ação: Verifique se, no momento do processamento, existem outros usuários realizando movimentações ou consultas nos produtos que estão sendo inventariados.
Teste: Tente efetuar o processamento de forma exclusiva (em horário de menor movimento ou garantindo que ninguém esteja manipulando os itens do inventário) para descartar falha de Lock.
Se as validações de Procedures e Concorrência não resolverem o problema, trata-se de um cenário que exige investigação aprofundada.
O error.log padrão não registra os parâmetros exatos passados para a função no momento da falha, nem o motivo específico pelo qual a Procedure ou o Lock falharam silenciosamente (retornando nulo).
Necessidade: Será necessário realizar um processo de Debug (depuração de código) no ambiente (ou via simulação com dados reais) para rastrear o momento exato em que a variável
aRetdeixa de ser alimentada.O Suporte Técnico poderá direcionar o caso para uma avaliação via Consultoria, visando identificar particularidades do ambiente ou dos dados que estejam impedindo a validação correta.
Saiba Mais:
Clique aqui e veja mais artigos sobre Movimentações no Estoque
0 Comentários