Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao tentar ler o campo "ACBrNFe1.NotasFiscais.Items[0].NFe.Emit.CNPJCPF"


  • Este tópico foi criado há 2527 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Estou Carregando o XML de compra do fornecedor, mas está apresentando erro na hora de ler as informações do XML, em Anexo.

Não é todos XML que apresentam BUG, não hora de ser carregado pelo componente do ACBR, mas acontece alguns casos, deste erro.

Pra resolver geralmente baixo o xml do site da SEFAZ, mas este xml ele está abrindo normalmente pelo browser, e por outro software como o "DANFEVIEW ".

Trecho Código:

      frmPrincipal.ACBrNFe.NotasFiscais.Clear;
      frmPrincipal.ACBrNFe.NotasFiscais.LoadFromFile(caminho_xml );

//Linha do Bug Abaixo

     vCNPJ_Fornecedor_NFe := Copy(frmPrincipal.ACBrNFe.NotasFiscais.Items[0].NFe.Emit.CNPJCPF, 1, 2) + '.' +
        Copy(frmPrincipal.ACBrNFe.NotasFiscais.Items[0].NFe.Emit.CNPJCPF, 3, 3) + '.' +
        Copy(frmPrincipal.ACBrNFe.NotasFiscais.Items[0].NFe.Emit.CNPJCPF, 6, 3) + '/' +
        Copy(frmPrincipal.ACBrNFe.NotasFiscais.Items[0].NFe.Emit.CNPJCPF, 9, 4) + '-' +
        Copy(frmPrincipal.ACBrNFe.NotasFiscais.Items[0].NFe.Emit.CNPJCPF, 13, 2);

 

35170446054219000174550010066178681938405200-nfe.xml

35170446054219000174550010066185711498818475-nfe.xml

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Qual é o erro apresentado?

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Moderadores
28 minutos atrás, Luciano Carvalho disse:

O problema é a codificação desses arquivos, que está em UTF-16.

O MOC determina que os arquivos XML estejam em UTF-8, e contenham o cabeçalho <?xml version="1.0" encoding="UTF-8"?>, o que esses arquivos não tem.

Uma simples conversão de encoding num editor de texto resolve o problema (e reduz o tamanho do arquivo pela metade).

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

Esse erro indica que você está tentando ler uma posição inexistente na string, nesse caso Emit.CNPJCPF. O índice das posições do copy não deveriam começar em 0 (zero)?

Ao invés de fazer essa copia louca ai, use a função FormatarCNPJouCPF da unit ACBrValidador, algo como abaixo:

vCNPJ_Fornecedor_NFe := FormatarCNPJouCPF(frmPrincipal.ACBrNFe.NotasFiscais.Items[0].NFe.Emit.CNPJCPF);

 

Consultor SAC ACBr

Celso Marigo Junior

Conheça o Portal do Projeto ACBr
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
18 minutos atrás, Luciano Carvalho disse:

E você tem um exemplo de como converter o arquivo do XML de UTF-16 para UTF-8, tenho que fazer de maneira automática, já que o usuário não saberá fazer está conversão.

    SL := TStringList.Create;
    try
      SL.LoadFromFile(OpenDialog1.FileName);
      SL.SaveToFile(OpenDialog1.FileName, TEncoding.UTF8);
    finally
      SL.Free;
    end;

    ACBrNFe1.NotasFiscais.Clear;
    ACBrNFe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName, False);

Delphi XE5.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
16 horas atrás, BigWings disse:

    SL := TStringList.Create;
    try
      SL.LoadFromFile(OpenDialog1.FileName);
      SL.SaveToFile(OpenDialog1.FileName, TEncoding.UTF8);
    finally
      SL.Free;
    end;

    ACBrNFe1.NotasFiscais.Clear;
    ACBrNFe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName, False);

Delphi XE5.

Como eu Utilizo o Delphi 7, não funcionou o comando, consegui converter com o código abaixo: 

        //Converter Arquivo XML em UTF-8
        try
          vXMLDoc := TXMLDocument.Create(self);
          vXMLDoc.LoadFromFile(caminho_xml); 
          vXMLDoc.Version := '1.0';
          vXMLDoc.Encoding := 'UTF-8';
          vXMLDoc.SaveToFile(caminho_xml);
        finally
          vXMLDoc.Free;
        end;

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.