O erro "The JSON value could not be converted to System.String. Path: $[0].B1_DESC" ocorre ao gerar relatórios SmartView no Protheus (release 12.1.2310) devido a registros inconsistentes no campo B1_DESC, como valores nulos ou caracteres especiais. Para resolver, isole o produto com problema, corrija o campo descrição no módulo SIGAEST ou via consulta SQL, removendo caracteres inválidos para garantir a correta serialização JSON.
Tempo aproximado para leitura: 00:02:00 min
Ocorrência
Ao tentar gerar qualquer relatorio SmartView, dependendo do filtro utilizado, ocorre o erro: "The JSON value could not be converted to System.String. Path: $[0].B1_DESC", impossibilitando a emissão do documento.
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - SIGAEST - A partir da release 12.1.2310
Causa
Isso ocorre devido a algum produto possuir registros inconsistentes dentro do campo B1_DESC.
Solução
O erro ocorre porque a nova interface do relatório consome dados no formato JSON via API.
O componente espera receber um texto simples (String) no campo de descrição do produto (B1_DESC).
Caso o banco de dados retorne um valor nulo mal formatado, caracteres especiais invisíveis (como quebras de linha ou tabulações) ou caracteres corrompidos, a serialização do JSON é interrompida.
Passos
Refine os parâmetros de geração do relatório por meio de intervalos menores de filiais ou códigos de produtos. Ao gerar o relatório em lotes reduzidos, identifica-se em qual intervalo o erro ocorre até isolar o produto específico que possui a inconsistência no cadastro.
Com o código do produto identificado, acesse o módulo de Estoque e Custos (SIGAEST), vá em Atualizações > Cadastros > Produto (MATA010), localize o item e altere o campo Descrição (B1_DESC), removendo qualquer caractere especial, aspas ou espaços excessivos e salve o registro.
Para o seu analista DBA: Caso o ajuste pela rotina não corrija o comportamento, execute uma consulta (Query) diretamente na tabela SB1 via banco de dados (SQL Server) para o produto afetado. Avalie se o campo B1_DESC contém valores do tipo
NULLou caracteres de controle invisíveis e realize a devida correção via rotina.
Exemplos de validação em SQL.
Cenário 1: Buscar quebras de linha e tabulações (Mais Comum)
Geralmente, o JSON quebra quando o usuário aperta "Enter" ou "Tab" sem querer dentro do campo de descrição no Protheus.
-- Busca caracteres invisíveis de controle (Quebra de linha e Tab)
SELECT B1_FILIAL, B1_COD, B1_DESC
FROM SB1010 WITH (NOLOCK)
WHERE D_E_L_E_T_ = ' '
AND (
B1_DESC LIKE '%' + CHAR(10) + '%' -- Line Feed (Enter)
OR B1_DESC LIKE '%' + CHAR(13) + '%' -- Carriage Return (Enter)
OR B1_DESC LIKE '%' + CHAR(9) + '%' -- Horizontal Tab
);
Cenário 2: Abordagem "Lista Branca"
Esta consulta lista qualquer produto que tenha qualquer caractere fora do alfabeto, números, espaços e acentuação básica. para achar símbolos "estranhos" (como ^, ~ isolados, emojis ou caracteres corrompidos).
-- Lista tudo o que NÃO FOR letra, número, espaço ou acento padrão
SELECT B1_FILIAL, B1_COD, B1_DESC
FROM SB1010 WITH (NOLOCK)
WHERE D_E_L_E_T_ = ' '
AND B1_DESC COLLATE Latin1_General_BIN LIKE '%[^ a-zA-Z0-9áéíóúâêîôûãõçÁÉÍÓÚÂÊÎÔÛÃÕÇ-]%';
Cenário 3: Buscar Espaço Invisível (Copiar/Colar da Web)
Muito comum quando o usuário copia a descrição de um site e cola no Protheus. O espaço do fim da frase não é um espaço normal (ASCII 32), mas sim um caractere especial (ASCII 160) que o serializador JSON rejeita.
-- Busca o caractere "Non-Breaking Space" (Espaço obtido via Web)
SELECT B1_FILIAL, B1_COD, B1_DESC
FROM SB1010 WITH (NOLOCK)
WHERE D_E_L_E_T_ = ' '
AND B1_DESC LIKE '%' + CHAR(160) + '%';📌 (Dica ao Analista/DBA): > Ao identificar o registro problemático através de uma das consultas acima, a correção deve ser feita preferencialmente via rotina do Protheus (MATA010), limpando o campo e digitando-o novamente para que o sistema atualize os índices e tabelas relacionais corretamente.
Saiba mais:
Clique aqui e veja mais artigos sobre Relatórios SmartView do Estoque Custos
0 Comentários