Jump to content

dev botao

Problema importação XML {$DEFINE USE_ACBr_XMLDOCUMENT}


Go to solution Solved by Italo Giurizzato Junior,

Recommended Posts

  • Membros Pro

 

Boa noite pessoal

Atualizei tudo o acbr pra ver se tinham resolvido e não tinha sido, mas vamos lá.

Eu havia feito um alerta que os xmls com mais de 1500 chaves de ctes estavam demorando, foi migrado toda a rotina de cte também para utilizar o acbrxmldocument.. ao invés do antigo, pois bem, foi resolvido tudo, ficou zero bala e agradeço, mas começou a dar problema na importação de XMLs de notas fiscais, ele cai no except a baixo.. com qualquer nota, podem testar e verificar isso? Isso ocorre na hora de dar um .NotasFiscais.LoadFromString.. nos xmls de nfe, coisa que se eu remover o acbrxmldocument do acbrinc não acontece.

Isso ocorre com qualquer xml.

image.png?ex=662783f3&is=66150ef3&hm=85466f20979a6c305c7b4a8d0ea8961b0cc9243e788e1ec6d5590f6c6d3764f3&=

Link to comment
Share on other sites

  • Daniel InfoCotidiano changed the title to Problema importação XML {$DEFINE USE_ACBr_XMLDOCUMENT}
  • Consultores

Bom dia @luisclaudio_jr,

Você sabe nos dizer se o XML da nota que tentou carregar possui por exemplo vogais acentuadas, cedilha ou até mesmo o "&" ?

Se for possível poderia disponibilizar o XML de uma nota que ocorreu o problema?

Já descobrimos que o ACBrXmlDocument não consegue ler um XML que contenha o "&".

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • Membros Pro
6 horas atrás, Italo Giurizzato Junior disse:

Bom dia @luisclaudio_jr,

Você sabe nos dizer se o XML da nota que tentou carregar possui por exemplo vogais acentuadas, cedilha ou até mesmo o "&" ?

Se for possível poderia disponibilizar o XML de uma nota que ocorreu o problema?

Já descobrimos que o ACBrXmlDocument não consegue ler um XML que contenha o "&".

Então, todos que eu havia tentado, vou mandar alguns no email. Outra coisa que vi aqui, como eu tinha atualizado um cliente, precisei mandar um cancelamento de nota e imprimir, hora que deu um loadStream também ja estourou alguns erros..

Envio no consultores com o link aqui.

Link to comment
Share on other sites

  • Membros Pro
12 minutos atrás, Italo Giurizzato Junior disse:

Bom dia @luisclaudio_jr,

Não recebi o e-mail.

Você enviou para:  [email protected]  ?

 

Mandei ontem, depois de horas apareceu que voltou... e reenviei hj novamente as 6h:34, nao recebeu de novo?

 

This is the mail system at host mcrelay.correio.biz.

 

I'm sorry to have to inform you that your message could not be delivered to one or more recipients. It's attached below.

 

For further assistance, please send mail to postmaster.

 

If you do so, please include this problem report. You can delete your own text from the attached returned message.

 

                   The mail system

 

<[email protected]>: lost connection with

    mx3.zoho.com[204.141.43.44] while receiving the initial server greeting

Link to comment
Share on other sites

  • Membros Pro
Posted (edited)
4 horas atrás, Italo Giurizzato Junior disse:

@luisclaudio_jr,

Favor atualizar todos os fontes de todas as pastas, reinstale o ACBr e faça novos testes.

Italo, atualizei reinstalei, mas continua tudo igual por aqui.  ele chega nessa parte e cai no exception, eu vi no log a alteração, mas tu fez só tirar o or de lá.. mas o problema de fato é nessa abaixo... na hora do xmlparseDoC que entra como nil.

'XML declaration allowed only at the start of the document'#$A m <- é isso que dá naquele exception.
image.thumb.png.929350733eed0850d29f6d13925bc2f4.png

Edited by luisclaudio_jr
Link to comment
Share on other sites

  • Consultores

Bom dia @luisclaudio_jr,

Não foi só isso que eu fiz.

Realizei uma correção no código da unit que gerava um AV ao ler o XML.

Dos 2 XML que você disponibilizou um foi lido com sucesso sem a necessidade de fazer nenhuma alteração, mas o outro ocorreu o AV.

Detectei a linha onde isso ocorria e fiz a correção.

 

Uma duvida: O XML que você esta tentando carregar esta salvo em disco ou no banco de dados?

Se esta no banco de dados, pode ser que ele esteja acrescentando na string o caractere #$A que se não me falha a memória é quebra de linha.

Neste caso basta executar um StringReplace no XML lido do banco de dados antes de ser carregado pelo LoadFromString.

 

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • Membros Pro
3 horas atrás, Italo Giurizzato Junior disse:

Bom dia @luisclaudio_jr,

Não foi só isso que eu fiz.

Realizei uma correção no código da unit que gerava um AV ao ler o XML.

Dos 2 XML que você disponibilizou um foi lido com sucesso sem a necessidade de fazer nenhuma alteração, mas o outro ocorreu o AV.

Detectei a linha onde isso ocorria e fiz a correção.

 

Uma duvida: O XML que você esta tentando carregar esta salvo em disco ou no banco de dados?

Se esta no banco de dados, pode ser que ele esteja acrescentando na string o caractere #$A que se não me falha a memória é quebra de linha.

Neste caso basta executar um StringReplace no XML lido do banco de dados antes de ser carregado pelo LoadFromString.

 

Estava vendo nossa rotina aqui, antes a gente carrega o xml em um Txmldocument e depois usa o loadfromstring...

Será que pode ser alguma coisa nesse sentido? (lembrando que antes funcionava normal.. foi após usar o xmlacbrdocument)

var

  aXml: XMLString;

  sl: TStringList;

 ADoc := TXMLDocument.Create(nil);

 try
    ADoc.Active := True;
    ADoc.Version := '1.0';
    ADoc.Encoding := 'utf-8';
    ADoc.Options := [doNodeAutoIndent];

    vTam := TamanhodoArquivo(arquivo); //aruivo em branco
    if (vTam < 100) then
    begin
      abort;

    end;
  
      ADoc.LoadFromFile(arquivo);
   

    aXml := ADoc.XML.Text;
  finally
    sl.Free;
  
  end;

  DM_NFE.ACBrNFe1.NotasFiscais.Clear;
  DM_NFE.ACBrNFe1.NotasFiscais.Add;

    DM_NFE.ACBrNFe1.NotasFiscais.LoadFromString(aXml)

Link to comment
Share on other sites

  • Consultores

Boa tarde @luisclaudio_jr,

Se o XML esta salvo em um campo do banco de dados, porque você não lê esse campo, passando ele para uma variável string e depois executa os comando:

aXML :=  recebe conteúdo do banco de dados que contem o XML da nota;

DM_NFE.ACBrNFe1.NotasFiscais.Clear;
DM_NFE.ACBrNFe1.NotasFiscais.Add;
DM_NFE.ACBrNFe1.NotasFiscais.LoadFromString(aXml)

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • Membros Pro
Em 12/04/2024 at 17:37, Italo Giurizzato Junior disse:

Boa tarde @luisclaudio_jr,

Se o XML esta salvo em um campo do banco de dados, porque você não lê esse campo, passando ele para uma variável string e depois executa os comando:

aXML :=  recebe conteúdo do banco de dados que contem o XML da nota;

DM_NFE.ACBrNFe1.NotasFiscais.Clear;
DM_NFE.ACBrNFe1.NotasFiscais.Add;
DM_NFE.ACBrNFe1.NotasFiscais.LoadFromString(aXml)

No caso não está no banco de dados, é arquivo carregado mesmo, onde o cliente pega da pasta que ele tem e importa.

Link to comment
Share on other sites

  • Consultores

Boa tarde @luisclaudio_jr,

Recapitulando:

Os dois XMLs que você nos enviou por e-mail, um foi lido sem nenhum problema pela unit ACBrNFeXmlReader, já o segundo foi necessário fazer uma correção na unit que inclusive já se encontra no SVN.

Em nenhum dos dois XML contem a sequencia: #$A .

Os XMLs das notas ele esta recebendo por e-mail e salvando em disco?

Se sim, pode ser esse o problema.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • Membros Pro
3 minutos atrás, Italo Giurizzato Junior disse:

Boa tarde @luisclaudio_jr,

Recapitulando:

Os dois XMLs que você nos enviou por e-mail, um foi lido sem nenhum problema pela unit ACBrNFeXmlReader, já o segundo foi necessário fazer uma correção na unit que inclusive já se encontra no SVN.

Em nenhum dos dois XML contem a sequencia: #$A .

Os XMLs das notas ele esta recebendo por e-mail e salvando em disco?

Se sim, pode ser esse o problema.

Ou via email, ou baixam da sefaz,whats... mas sim,pegam local, vou testar com algumas rotinas que usam pra baixar do banco de dados também, pra ver se isso ocorre.

Mas se usar o metodo antigo, funciona de boa, o problema ta no processo novo usando o xmlacbr.

 

Link to comment
Share on other sites

  • Membros Pro
18 horas atrás, Italo Giurizzato Junior disse:

@luisclaudio_jr,

Manda para nós um XML que contem essa sequencia de caracteres para que possamos analisar.

Italo, estava aqui analisando.
Creio que essa sequencia #$D#$A aconteça quando eu jogo o arquivo pra uma TXMLDocument, nós fazemos isso aqui, porque antes de popularmos pro ACBR a gente valida algumas coisas, principalmente pra saber se o XML em questão é uma nfe, se não é um evento, se não veio corrompido (arquivo zerado), se não foi um resumo... Enfim, são feito N situações.

Quando eu dei direto um LoadfromFIle deu certo, meu problema foi no LoadfromString e ai quando eu debuguei, identifiquei que de fato o xml após entrar no TXMLDocument leva essas "quebras" de linha.

Usando um stringReplace e removendo tudo (debugando eu vi que sumiram de fato os #$D#$A ), o problema ainda persistiu. E isso ocorre com todos os xmls, que fazemos usando esse cenario (carregando ele pra uma txmldocument) após isso, usando um loadfromString.. Vou enviar mais xmls contendo o topico novamente, mas basicamente todos acontece isso, quando carregamos dessa forma.

 

 

 

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...
  • Membros Pro
1 minuto atrás, Italo Giurizzato Junior disse:

Boa tarde @luisclaudio_jr,

Não conseguimos ainda simular esse problema.

Certo Italo, mas é algo que eu possa estar ajudando? O problema como eu simulei aqui foi justamente da forma que citei na ultima vez, o problema acontece quando jogo um arquivo pra um xmlString e ai uso um loadfromstream ou loadfromString... Em algo ele se perde.. Se eu uso um loadfromfile resolve, mas por aqui a gente faz muitas validações antes de liberar pra importação, principalmente porque pode ter xml de eventos(cancelamento, carta de correção..) etc

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.