Usuários SAC zemarcio 12 Posted January 12 Usuários SAC Report Share Posted January 12 Como faço para exibir a mensagem de validação do XML incluindo o número do item que deu erro. Por exemplo, hoje mostra somente: Erro validação: Código de Enquadramento Legal do IPI. Mas não informa o item da nota que deu esse erro, em uma nota com mais de 100 itens fica difícil de encontrar. Link to post Share on other sites
Fundadores Daniel Simoes 8,707 Posted January 12 Fundadores Report Share Posted January 12 Não deu pra compreender muito bem o problema.. Talvez você esteja querendo melhorar a mensagem de validação do Schema.. mas pode ser um erro do WebService Por favor nos mostre como é exatamente a msg de erro (para sabermos qual rotina gera ela, e de onde ela vem) Se possível, anexe um documento que demonstre a msg de erro... Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to post Share on other sites
Usuários SAC zemarcio 12 Posted January 12 Author Usuários SAC Report Share Posted January 12 (edited) dmACBr.ACBrNFe1.NotasFiscais.Validar; if dmACBr.ACBrNFe1.NotasFiscais.Items[0].Alertas <> '' then begin iMessageBox(handle,PChar(dmACBr.ACBrNFe1.NotasFiscais.Items[0].Alertas),'Erro Validação',MB_OK+MB_ICONWARNING); Edited January 12 by zemarcio Link to post Share on other sites
Solution Italo Giurizzato Junior 9,908 Posted January 13 Solution Report Share Posted January 13 Boa tarde Marcio, Além do método Validar que confronta o XML com os Schemas temos também o método ValidarRegrasdeNegocios. Exemplos de uso: ACBrNFe1.NotasFiscais.ValidarRegrasdeNegocios(xErros); onde xErros é um "Log" que contem os erros encontrados. Nesse Log caso existe algum dado errado referente a um determinado item da nota será apresentado o numero do item que contem esse dado errado. Acredito que vai de encontro com o que você deseja. 1 1 Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP Link to post Share on other sites
Usuários SAC zemarcio 12 Posted January 13 Author Usuários SAC Report Share Posted January 13 Desculpe, não entendi muito bem. Como devo incluir isso aqui? dmACBr.ACBrNFe1.NotasFiscais.Validar; if dmACBr.ACBrNFe1.NotasFiscais.Items[0].Alertas <> '' then begin iMessageBox(handle,PChar(dmACBr.ACBrNFe1.NotasFiscais.Items[0].Alertas),'Erro Validação',MB_OK+MB_ICONWARNING); Link to post Share on other sites
Italo Giurizzato Junior 9,908 Posted January 14 Report Share Posted January 14 Bom dia Marcio, Acredito que você não entendeu. O método Validar é utilizado pelo componente para confrontar o XML com os schemas. Já o método ValidarRegrasdeNegócio confronta o XML com as regras de validação impostas pela SEFAZ. ACBrNFe1.NotasFiscais.ValidarRegrasdeNegocios(xErros); if xErros <> '' then MessageBox(handle,PChar(xErros),'Erro Validação',MB_OK+MB_ICONWARNING); Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP Link to post Share on other sites
Usuários SAC zemarcio 12 Posted January 14 Author Usuários SAC Report Share Posted January 14 e referente ao dmACBr.ACBrNFe1.NotasFiscais.Validar como faço para saber qual item está com erro? Atualmente faço assim mas não retorna o item com problema: try dmACBr.ACBrNFe1.NotasFiscais.Validar; except on eExn : exception do begin iMessageBox(handle,PChar(eExn.Message),'Erro Validação',MB_OK+MB_ICONWARNING); Link to post Share on other sites
Fundadores Daniel Simoes 8,707 Posted January 14 Fundadores Report Share Posted January 14 As mensagens de erro de Validação do Schema não são do controle do ACBr... elas veem da Biblioteca MsXML ou LibXml2, conforme a sua configuração Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to post Share on other sites
BigWings 3,995 Posted January 14 Report Share Posted January 14 13 minutos atrás, zemarcio disse: e referente ao dmACBr.ACBrNFe1.NotasFiscais.Validar como faço para saber qual item está com erro? Como está a configuração de ACBrNFe1.Configuracoes.Geral.FormatoAlerta? Na configuração padrão ele deve te mostrar uma mensagem assim: Veja que o número do item é exibido junto ao caminho do elemento no XML, a %TAGNIVEL% do FormatoAlerta. 1 BigWingsAjude o Projeto ACBr crescer - Assine o SAC Link to post Share on other sites
Usuários SAC zemarcio 12 Posted January 14 Author Usuários SAC Report Share Posted January 14 O formato de alerta está conforme acima mas mesmo assim não mostra o número do item. Vi que o erro está no comando abaixo: ACBrNFe1.NotasFiscais.Validar; Ele gera uma exceção com uma mensagem de erro mas sem mostrar o número do item que está com o erro, se tiver mais de 100 itens como vou saber qual item está com a TAG errada? Link to post Share on other sites
BigWings 3,995 Posted January 14 Report Share Posted January 14 Como está a mensagem de validação exatamente? Veja este tópico sobre um problema parecido: 8 minutos atrás, zemarcio disse: O formato de alerta está conforme acima mas mesmo assim não mostra o número do item. Como exatamente está a configuração do FormatoAlerta? 1 BigWingsAjude o Projeto ACBr crescer - Assine o SAC Link to post Share on other sites
Usuários SAC zemarcio 12 Posted January 14 Author Usuários SAC Report Share Posted January 14 TAG:%TAGNIVEL% ID:%ID%/%TAG%(%DESCRICAO%) - %MSG%. 1 hora atrás, BigWings disse: Como está a mensagem de validação exatamente? Veja este tópico sobre um problema parecido: Como exatamente está a configuração do FormatoAlerta? TAG:%TAGNIVEL% ID:%ID%/%TAG%(%DESCRICAO%) - %MSG%. Link to post Share on other sites
BigWings 3,995 Posted January 14 Report Share Posted January 14 E a mensagem de validação? BigWingsAjude o Projeto ACBr crescer - Assine o SAC Link to post Share on other sites
Usuários SAC zemarcio 12 Posted January 14 Author Usuários SAC Report Share Posted January 14 (edited) Esse é o código completo: Citar //valida try dmACBr.ACBrNFe1.NotasFiscais.Validar; dmACBr.ACBrNFe1.NotasFiscais.ValidarRegrasdeNegocios(xErros); if xErros <> '' then MessageBox(handle,PChar(xErros),'Erro Validação 1',MB_OK+MB_ICONWARNING); if dmACBr.ACBrNFe1.NotasFiscais.Items[0].Alertas <> '' then begin iMessageBox(handle,PChar(dmACBr.ACBrNFe1.NotasFiscais.Items[0].Alertas),'Erro Validação 2',MB_OK+MB_ICONWARNING); TVENDAS.Edit; TVENDASCHAVE_ACESSO.AsString := Copy(dmACBr.ACBrNFe1.NotasFiscais[0].NFe.infNFe.ID,4,50); TVENDASMOTIVO_REJEICAO.AsString := Copy(dmACBr.ACBrNFe1.NotasFiscais.Items[0].Alertas,1,1500); TVENDAS.Post; dmConexao.IBTCONEXAO.CommitRetaining; pAtualizarTela; Exit; end else begin TVENDAS.Edit; TVENDASCHAVE_ACESSO.AsString := Copy(dmACBr.ACBrNFe1.NotasFiscais[0].NFe.infNFe.ID,4,50); TVENDAS.Post; dmConexao.IBTCONEXAO.CommitRetaining; end; except on eExn : exception do begin iMessageBox(handle, pwidechar(dmACBr.ACBrNFe1.NotasFiscais.Items[0].ErroValidacao), 'Erro Validação 3', MB_OK+MB_ICONWARNING); TVENDAS.Edit; TVENDASCHAVE_ACESSO.AsString := Copy(dmACBr.ACBrNFe1.NotasFiscais[0].NFe.infNFe.ID,4,50); TVENDASMOTIVO_REJEICAO.AsString := Copy(eExn.Message,1,1500); TVENDAS.Post; dmConexao.IBTCONEXAO.CommitRetaining; pAtualizarTela; Exit; end; end; E essa a mensagem que ele exibe no Erro de Validação 3 Falha na validação dos dados da nota: 3169 Unidade Comercial. Código de Enquadramento Legal do IPI. Edited January 14 by zemarcio Link to post Share on other sites
BigWings 3,995 Posted January 14 Report Share Posted January 14 1 minuto atrás, zemarcio disse: E essa a mensagem que ele exibe: Falha na validação dos dados da nota: 3169 Unidade Comercial. Código de Enquadramento Legal do IPI. Verifique novamente a configuração FormatoAlerta, aparentemente está apenas como %DESCRICAO%. Se também não exibe o erro gerado pela DLL de validação (LibXML2, MSXML) é por a configuração ExibeErroSchema estar desativada. BigWingsAjude o Projeto ACBr crescer - Assine o SAC Link to post Share on other sites
Usuários SAC zemarcio 12 Posted January 14 Author Usuários SAC Report Share Posted January 14 Link to post Share on other sites
Italo Giurizzato Junior 9,908 Posted January 15 Report Share Posted January 15 Bom dia Marcio, Essa é a configuração do componente que consta no Object Inspector. Em nenhuma rotina da sua aplicação essa configuração não esta sendo alterada? Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP Link to post Share on other sites
Usuários SAC zemarcio 12 Posted January 15 Author Usuários SAC Report Share Posted January 15 Chic ITALO! Era isso mesmo! Muito obrigado! Mas agora teria como melhorar a mensagem abaixo, para ficar mais didático para o usuário: Falha na validação dos dados da nota: 3169 TAG:<det nItem="1"><prod> ID:I09/uCom(Unidade Comercial) - Nenhum valor informado. TAG:<det nItem="1"><imposto><IPI> ID:O06/cEnq(Código de Enquadramento Legal do IPI) - Tamanho maior que o máximo permitido [4215]. Ficar algo do tipo: Item 1 : Unidade Comercial : Nenhum valor informado. Item 1 : Código de Enquadramento Legal do IPI : Tamanho maior que o máximo permitido. Link to post Share on other sites
Italo Giurizzato Junior 9,908 Posted January 15 Report Share Posted January 15 Marcio, Para ser sincero nunca mexi nessa configuração. Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP Link to post Share on other sites
Fundadores Daniel Simoes 8,707 Posted January 15 Fundadores Report Share Posted January 15 @zemarcio essa rotina se aplica a validação de vários Nós e Tags do XML... ela precisa ser genérica e dar a indicação de qual nó ocorreu a validação do Schema... Na minha opinião, a sua aplicação não deveria deixar o problema chegar até esse ponto... No momento da Venda, antes de criar o XML.. você já poderia rodar várias regras de validação interna, e exibir alertas mais específicos para o usuário... Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to post Share on other sites
Usuários SAC zemarcio 12 Posted January 15 Author Usuários SAC Report Share Posted January 15 Entendi, ok, obrigado pessoal! Link to post Share on other sites
Italo Giurizzato Junior 9,908 Posted January 15 Report Share Posted January 15 Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico. Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP Link to post Share on other sites
Recommended Posts