Jump to content

Assista click.png tectoy.png

C6 chamada_c6.png botao.png

Access Violation - AV - assinado xml da NFe


Otavio Benini
Go to solution Solved by Italo Giurizzato Junior,
  • Este tópico foi criado há 531 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Boas tardes, pessoal

em 21/09 tive um problema no usando ACBrNFe, cuja tentativa de solução, apontou para outro; um AV muito cabeludo; esse problema ficou suspenso aqui enquanto eu trabalhava outras questões mais urgentes; agora, e antes que este se torne urgente, preciso resolve-lo

tenho, hoje, 5 clientes que emitem Nfe e neles, portanto, uso ACBr – o primeiro foi em Set/2009;

a unit que trata a Nfe é basicamente a mesma para todos eles, com mínimas variações; poderia até ser a mesma unit, mas eu mantenho um projeto para cada cliente;

o ambiente de desenvolvimento e testes, desde 2014, é uma VM Windows 7, c/ Delphi 2010, Firebird 2.5, tudo 32 bits; o host é um i7, 16 gb RAM e Windows 8 32 bits;

em 21/09/20 quando precisei "forçar" um servidor virtual para um cliente do Ceará, encontrei um problema e antes de qualquer outra providencia atualizei o ACBr; depois dessa atualização fiquei c/ 2 problemas; o principal, que motivou as ações, foi resolvido com um muito bom suporte do @Big Wings; ficou um AV (novíssimo !) exatamente na emissão da Nfe;

para resolver o AV então eu voltei um backup da VM, anterior a 21/09, e ficou tudo ok; a dedução óbvia dessa ocorrência é um "bug" no ACBrNFe, visto que nada além disso mudou;

voltei ao problema no final do mês passado e cá estou até agora;

se eu atualizar o ACBr o problema se repete; eu fiz isso; voltei um backup da VM mais antigo, compilei e emiti uma Nfe; depois atualizo o ACBr, compilo e lá vem a o AV na emissão da Nfe; com o mesmo código, sem alterações;

tentei também remover totalmente o ACBr e atualiza-lo do zero: não funcionou;

estou migrando todo ambiente de desenvolvimento, e havia começado por outro projeto, que não usa ACBr, mas parei tudo pra resolver esse AV;

por host estou usando um Dell i7, 16 gb RAM, Windows 10 Pro 64, Firebird 3; criei uma VM Windows 10 Pro 64, instalei Delphi 10.4 Sydnei e ACBr: AV igualzinho !

eu testei com 3 projetos diferentes; num deles recriei a unit onde uso o ACBr, do zero; nessa Unit não faço nada além de gerar e enviar o xml; os dados estão num data module;

eu uso, com base na publicação "Conheça a ACBrDFeSSL" por Daniel Simões de Almeida, desde a versão 4 da NFe, o seguinte set:

Geral.SSLCryptLib := cryOpenSSL;  Geral.SSLHttpLib := httpOpenSSL;  Geral.SSLLib := libOpenSSL;  Geral.SSLXmlSignLib := xsLibXml2;  WebServices.SSLType := LT_TLSv1_2;

ajustei os parametros do pgr exemplo para esse set, mas dá erro, não compila;

então eu ajustei minha app para ficar igual à que usei no exemplo e que foi aceita:

Geral.SSLCryptLib := cryWinCrypt;  Geral.SSLHttpLib := httpWinHttp;  Geral.SSLLib := libWinCrypt;  Geral.SSLXmlSignLib := xsLibXml2;  WebServices.SSLType := LT_TLSv1_2;

essas propriedades só puderam ser ajustadas diretamente no componente (no Delphi Sydnei, no 2010 não sei, uso no componente direto), dá erro e não compila se alterar na linha;

o programa exemplo com esse set compila, roda e emite a NFe;

minha app com um ou outro set compila e roda; com ACBr atualizado dá AV, com ACBr "defazado" compila, roda, emite NFe;

mas eu não encontro nada a alterar na minha unit, aliás eu não alterei nada nela, a única diferença é a atualização do ACBr a partir de 21/09;

debugando, o AV ocorre na chamada para assinar o xml: em ACBrNFeNotasFiscais, na procedure NotaFiscal.Assinar, linha 282 – anexo print da tela; a chamada é interna pelos metodos do ACBr, eu apenas chamo ACBrNFe1.Enviar

escrevi toda essa história na esperança que possam acender uma luz para a solução 🙏; nunca antes precisei do suporte como agora;

antes, resta uma via ainda não explorada: como posso salvar o xml antes da assinatura ?  no exemplo só encontro a gravação do xml depois da assinatura;

com o xml gerado pela minha app eu poderei comparar com o xml do exemplo, inclusive envia-lo pra vocês;

agradeço a atenção

Otavio Benini

2-AV_linha_282.jpg

Link to comment
Share on other sites

  • Consultores

Na tela principal do fórum tem um local que destina ao SAc e outro fórum aberto, veja nesse link a sessão do SAC

https://www.projetoacbr.com.br/forum/forum/38-suporte-pago-sac/

13 minutos atrás, Otavio Benini disse:

Boas tardes, pessoal

em 21/09 tive um problema no usando ACBrNFe, cuja tentativa de solução, apontou para outro; um AV muito cabeludo; esse problema ficou suspenso aqui enquanto eu trabalhava outras questões mais urgentes; agora, e antes que este se torne urgente, preciso resolve-lo

tenho, hoje, 5 clientes que emitem Nfe e neles, portanto, uso ACBr – o primeiro foi em Set/2009;

a unit que trata a Nfe é basicamente a mesma para todos eles, com mínimas variações; poderia até ser a mesma unit, mas eu mantenho um projeto para cada cliente;

o ambiente de desenvolvimento e testes, desde 2014, é uma VM Windows 7, c/ Delphi 2010, Firebird 2.5, tudo 32 bits; o host é um i7, 16 gb RAM e Windows 8 32 bits;

em 21/09/20 quando precisei "forçar" um servidor virtual para um cliente do Ceará, encontrei um problema e antes de qualquer outra providencia atualizei o ACBr; depois dessa atualização fiquei c/ 2 problemas; o principal, que motivou as ações, foi resolvido com um muito bom suporte do @Big Wings; ficou um AV (novíssimo !) exatamente na emissão da Nfe;

para resolver o AV então eu voltei um backup da VM, anterior a 21/09, e ficou tudo ok; a dedução óbvia dessa ocorrência é um "bug" no ACBrNFe, visto que nada além disso mudou;

voltei ao problema no final do mês passado e cá estou até agora;

se eu atualizar o ACBr o problema se repete; eu fiz isso; voltei um backup da VM mais antigo, compilei e emiti uma Nfe; depois atualizo o ACBr, compilo e lá vem a o AV na emissão da Nfe; com o mesmo código, sem alterações;

tentei também remover totalmente o ACBr e atualiza-lo do zero: não funcionou;

estou migrando todo ambiente de desenvolvimento, e havia começado por outro projeto, que não usa ACBr, mas parei tudo pra resolver esse AV;

por host estou usando um Dell i7, 16 gb RAM, Windows 10 Pro 64, Firebird 3; criei uma VM Windows 10 Pro 64, instalei Delphi 10.4 Sydnei e ACBr: AV igualzinho !

eu testei com 3 projetos diferentes; num deles recriei a unit onde uso o ACBr, do zero; nessa Unit não faço nada além de gerar e enviar o xml; os dados estão num data module;

eu uso, com base na publicação "Conheça a ACBrDFeSSL" por Daniel Simões de Almeida, desde a versão 4 da NFe, o seguinte set:

Geral.SSLCryptLib := cryOpenSSL;  Geral.SSLHttpLib := httpOpenSSL;  Geral.SSLLib := libOpenSSL;  Geral.SSLXmlSignLib := xsLibXml2;  WebServices.SSLType := LT_TLSv1_2;

ajustei os parametros do pgr exemplo para esse set, mas dá erro, não compila;

então eu ajustei minha app para ficar igual à que usei no exemplo e que foi aceita:

Geral.SSLCryptLib := cryWinCrypt;  Geral.SSLHttpLib := httpWinHttp;  Geral.SSLLib := libWinCrypt;  Geral.SSLXmlSignLib := xsLibXml2;  WebServices.SSLType := LT_TLSv1_2;

essas propriedades só puderam ser ajustadas diretamente no componente (no Delphi Sydnei, no 2010 não sei, uso no componente direto), dá erro e não compila se alterar na linha;

o programa exemplo com esse set compila, roda e emite a NFe;

minha app com um ou outro set compila e roda; com ACBr atualizado dá AV, com ACBr "defazado" compila, roda, emite NFe;

mas eu não encontro nada a alterar na minha unit, aliás eu não alterei nada nela, a única diferença é a atualização do ACBr a partir de 21/09;

debugando, o AV ocorre na chamada para assinar o xml: em ACBrNFeNotasFiscais, na procedure NotaFiscal.Assinar, linha 282 – anexo print da tela; a chamada é interna pelos metodos do ACBr, eu apenas chamo ACBrNFe1.Enviar

escrevi toda essa história na esperança que possam acender uma luz para a solução 🙏; nunca antes precisei do suporte como agora;

antes, resta uma via ainda não explorada: como posso salvar o xml antes da assinatura ?  no exemplo só encontro a gravação do xml depois da assinatura;

com o xml gerado pela minha app eu poderei comparar com o xml do exemplo, inclusive envia-lo pra vocês;

agradeço a atenção

Otavio Benini

2-AV_linha_282.jpg

Para solução existem algumas coisas, por exemplo usar as versões mais nova do openssl que pode ser esse o caso.

 

  • Like 1
Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Membros Pro
29 minutos atrás, Juliomar Marchetti disse:

Para solução existem algumas coisas, por exemplo usar as versões mais nova do openssl que pode ser esse o caso.

eu rodo meu app sem nenhuma dll na pasta, tal qual roda o prg exemplo
então vale o que está na pasta windows\syswow64 e lá estão as dlls mais recentes, comparando com o que traz o ACBr; veja figura;

 

 

dlls.png

Link to comment
Share on other sites

  • Consultores

Há tá o exemplo do svn não ocasiona erros? somente sua aplicação?

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Consultores

Tu chama o enviar né?

faz ACBrNFe.NotasFicais.GerarXML

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Consultores
  • Solution

Boa tarde Otavio,

Eu salvaria o XML assinado, pois se você gerar o XML e tentar validar ele vai ocorrer erro de validação, uma vez que a validação exige que o XML esteja assinado.

E para ter o XML assinado salvo em disco basta executar o método Assinar.

  • Like 1
Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

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

Boa tarde Otavio,

Eu salvaria o XML assinado, pois se você gerar o XML e tentar validar ele vai ocorrer erro de validação, uma vez que a validação exige que o XML esteja assinado.

E para ter o XML assinado salvo em disco basta executar o método Assinar.

Italo, boa noite
eu quero gerar o xml antes da assinatura para comparar com o xml gerado pelo exemplo

não sei se vc teve oportunidade de ler o histórico que inicio este pedido de suporte

trata-se de um AV na chamada para assinar o xml, ocasionado depois de atualização do ACBr

em 21/09 quando o prbl começou, o Daniel pediu prá rodar o exemplo e se este rodasse então o prbl seria da minha aplicação

mas não é bem assim, como estou tentando demonstrar

nunca estive debruçado por tanto tempo em cima de um problema - no mato sem cachorro

obrigado por seu  interesse

Link to comment
Share on other sites

  • Consultores

Bom dia Otavio,

O Juliomar lhe mostrou como salvar o XML gerado sem a assinatura, uma vez que o AV ocorre ao tentar assinar.

Você poderia gerar e anexar o XML para que possamos analisar?

Outra coisa o AV ocorre na linha 282 da unit ACBrNFeNotasFiscais, correto?

Tentou durante o "debug" dar Trace into (F7) nessa linha?

Pois dessa forma saberemos a linha exata que ocorre o AV, uma vez que o método Assinar da linha 282 esta implementando na unit ACBrDFeSSL.

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

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

Bom dia Otavio,

O Juliomar lhe mostrou como salvar o XML gerado sem a assinatura, uma vez que o AV ocorre ao tentar assinar.

Você poderia gerar e anexar o XML para que possamos analisar?

Outra coisa o AV ocorre na linha 282 da unit ACBrNFeNotasFiscais, correto?

Tentou durante o "debug" dar Trace into (F7) nessa linha?

Pois dessa forma saberemos a linha exata que ocorre o AV, uma vez que o método Assinar da linha 282 esta implementando na unit ACBrDFeSSL.

ok, Italo

assim que estiver no jeito te envio

estou às voltas com falta de energia e a VM onde estava o Delphi Berlin não está abrindo...

  • Like 1
Link to comment
Share on other sites

  • Membros Pro

boa tarde, Italo
reconstrui a VM, Win10Pro64, instalei Delphi 10.4 +patchs 1, 2 e 3, ACBr At revision: 20958

antes do AV, 2 informações:

  1. anexo tela1 com erro na fixação dos atributos em ACBrNFe1.Configurações.Geral.SSLs, acusa valor não declarado; só fixando no componente; 
  2. tentando usar OpenSSL, gera erro de cara, conf. tela2; as dll's carregadas em \Windows\SysWow64 foram da versão  1.1.1.4; substitui-as pelas da versão 1.1.1.7 mas o erro persistiu; eu uso OpenSSL desde a nfe-v4;

compilei minha app usando cryWinCrypt, httpWinHttp, libWinCrypt, xsLibXml2, que deu certo no exemplo antes;

executei consulta ao ambiente, consulta de nfe usando xml, consulta de nfe informando chave: tudo ok

emitindo uma nfe e debugando conf. sua instrução, parou na linha 635 da ACBrDFeXsLibXml2 (tela3) e daí não dá prá seguir;

gravei o xml sem assinatura da nfe que tentei emitir - anexo;

anexo tela 0 c/ AV rodando app direto;

vou usar o exemplo e te informo os resultados;

obrigado por seu empenho

Otavio Benini

tela1-Erro_declarando_SSLs.jpg

tela2-Erro_OpenSSL.jpg

tela3-AV_linha_635_ACBrDFeXsLibXml2.jpg

tela 0-AV.jpeg

225.xml

Link to comment
Share on other sites

  • Consultores

Bom dia.

como ficou marcado as opções do instalador para copiar as dll para você usar?

ele copia para o diretorio do windows ou para a pasta do delphi?

 

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Consultores

Bom dia Otavio,

Na primeira imagem que você anexou que ocorre erro de valor não declaro basta você incluir no Uses dessa Unit a unidade: ACBrDFeSSL.

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Membros Pro
3 horas atrás, Juliomar Marchetti disse:

Bom dia.

como ficou marcado as opções do instalador para copiar as dll para você usar?

ele copia para o diretorio do windows ou para a pasta do delphi?

 

bom dia, Italo

copia para pasta do Windows, neste caso SysWow64

3 horas atrás, Italo Giurizzato Junior disse:

Bom dia Otavio,

Na primeira imagem que você anexou que ocorre erro de valor não declaro basta você incluir no Uses dessa Unit a unidade: ACBrDFeSSL.

eu declarei essa unit em Uses, mas o AV se repetiu...

uma diferença que, aparentemente, não tem efeito prático é como se constroe o xml

meu app foi baseado no exemplo existente em 2009 e de lá prá cá só fiz pequenos ajustes, a estrutura principal não mudou

nessa ocasião, consultei o exemplo e não me lembro dele ter a estrutura que tem hoje

prg exemplo:

// declara colletions

  NotaF: NotaFiscal;
  Produto: TDetCollectionItem;
  Volume: TVolCollectionItem;
  Duplicata: TDupCollectionItem;
  ObsComplementar: TobsContCollectionItem;
  ObsFisco: TobsFiscoCollectionItem;
...

// usa collection

NotaF := ACBrNFe1.NotasFiscais.Add;
  NotaF.NFe.Ide.natOp     := 'VENDA PRODUCAO DO ESTAB.';

Produto := NotaF.NFe.Det.New;
  Produto.Prod.nItem    := 1; // Número sequencial, para cada item deve ser incrementado

Duplicata := NotaF.NFe.Cobr.Dup.New;
  Duplicata.nDup  := '001';

// finaliza

  ACBrNFe1.NotasFiscais.GerarNFe;

 

meu app:

// monta o xml

with ACBrNFe1.NotasFiscais.Add.NFe do begin
  with dtmLib do begin
    Ide.cNF       := Calc_cNF(dtmPed.cdsCabCODIGO.Value);
    Ide.natOp     := 'VENDA DE MERCADORIAS ADQUIRIDAS DE TERCEIROS';
    Ide.indPag    := ipPrazo;
    Ide.modelo    := strTOint(cdsEmpNFE_MODELO.Value);
    Ide.serie     := strTOint(cdsEmpNFE_SERIE.Value);
    Ide.nNF       := StrToInt(NumNFe);
    Ide.dEmi      := Now;
    Ide.dSaiEnt   := Now;
    Ide.tpNF      := tnSaida;
    Ide.tpEmis    := teNormal;

// finaliza

ACbrNF1.Enviar(nNFe);

 

usei GerarNFe, como no exemplo, mas o AV se repete

 

 

Link to comment
Share on other sites

  • Consultores

Seria necessário mexer e entender seu fonte mas é algo nele que está ocorrendo

pois se rodarmos o exemplo do svn o erro não ocorre correto?

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Consultores
Em 02/12/2020 at 11:09, Otavio Benini disse:

bom dia, BigWings

deletei .dproj e dproj.local: não resolveu, o AV persiste, no mesmo ponto fora da minha unit

Bom dia Otavio.

   Se você criar uma nova aplicação e colocar o seu código nela, gera o AV?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
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.