Ir para conteúdo
  • Cadastre-se

dev botao

Problemas com uso do componente ACBrNFSeX fora de um ambiente de desenvolvimento


FelipeMitt
Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 807 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde pessoal.

Estou utilizando o componente ACBrNFSeX para emitir notas fiscais de serviço na prefeitura de Uberlândia. Tive todo o processo de estudo do componente, através do exemplo de teste da acbr. Já consigo emitir nota (fazer o envio do lote de rps) e fazer as consultas.  Depois dessa etapa com o exemplo de teste, eu criei um protótipo (criei um projeto do zero) utilizando o componente ACBrNFSeX. Ele ficou quase um espelho do exemplo de teste porém, mais enxuto pois implementei apenas os recursos que estou utilizando para a emissão das notas. O protótipo também está funcionando tudo certinho (enviando lotes e fazendo consultas de nfses).

O problema começou quando iniciei os testes fora da minha máquina. Nesse outro computador, não tem Delphi e nem os componentes da acbr instalados (simulando o ambiente do cliente). Executei o programa, rodou sem erros, o problema é quando vou testar um recurso q eu considero o mais simples, que é o botão 'Gerar lote RPS'. Aparece o erro 'XmlNode não pode ser nulo' e não gera o arquivo xml assinado, na pasta log.

Junto com o exe do protótipo, eu copiei o arquivo de configuração (ini), os schemas do provedor ISSDSF (provedor da prefeitura de Uberlândia) e as dlls da LibXml2 (pois como uso Wincrypt não vi a necessidade de copiar outras dlls).

Preciso de ajuda para descobrir o que pode estar faltando.

Segue prints dos diretórios onde está o exe do meu protótipo e, print do erro citado acima.

 

 

 

Prot1.png

Prot2.png

Prot3.png

Prot4.png

Prot5.png

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

Bom dia Felipe,

Se o certificado esta instalado na maquina você só informa o numero de série do certificado.

Agora se o certificado não esta instalado, você só informa o caminho + nome do PFX e a senha.

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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Boa tarde Italo e Renato.

Infelizmente ainda não deu certo. Passei a usar só o certificado pfx mas ainda sim dá o msm erro 'XmlNode não pode ser nulo'.

Eu achei que podia ser diretório mas msm mudando de pasta ainda não deu certo.

Essa mensagem 'XmlNode não pode ser nulo' é algum valor das tags de assinatura digital que estão vazios? Prq como esse erro não dá na minha máquina de desenvolvimento, eu não consigo depurar.

Uma coisa que vou tentar amanhã, é trocar a biblioteca de wincrypt para opensll. Estou achando q pode ser o Windows.

Para usar a opensll é só copiar as duas dll para a pasta que está o executável, ou preciso de mais dlls?

Link para o comentário
Compartilhar em outros sites

Boa tarde.

Testei a mudança que mencionei de libWinCrypt para OpenSSL (carregando suas respectivas dlls para a mesma pasta onde está o executável do meu protótipo) e ainda sim dá o mesmo erro 'XMLNode' não pode ser nulo.

Testei em uma terceira máquina e dá o mesmo erro. Estou achando que falta algum arquivo externo. Prq na minha máquina (que tem toda a instalação da acbr) funciona mas em outras máquinas não funciona?

O que me falta testar ainda é o exemplo da acbr nessas outras máquinas. Farei isso amanhã (pois as máquinas são de outros funcionários aqui ... para agilizar esses testes eu vou criar uma VM, acredito q vai ser mais produtivo e rápido de achar o que está faltando ou, o q tem de diferente nessas máquinas e na minha).

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa noite,

Testa o seu protótipo também na sua máquina que funciona, mas em outra pasta, assim como você configura na máquina sem Delphi, para ver se dá o erro, facilitará seus testes de ocorrer.

Pode ser só falta de arquivos mesmo ou outras dlls antigas conflitando com as que deveriam funcionar.

Testa executar como administrador também.

 

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

  • Consultores

Boa tarde Felipe,

Qual é o caminho informado para os Schemas?

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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Boa tarde Italo.

No caso do teste de hoje que fiz, na máquina de teste, utilizando o exemplo de acbr ficou assim ... segue prints.

Lembrando que estou usando o carregamento do certificado pelo arquivo pfx e, utilizando a biblioteca wincrypt.

 

 

Capturar1.PNG

Capturar1.PNG

Capturar3.PNG

Capturar4.PNG

Capturar5.PNG

Editado por FelipeMitt
Link para o comentário
Compartilhar em outros sites

  • Consultores

Felipe,

Alguma coisa esta errada na sua maquina, alguma DLL que esteja faltando, alguma configuração errada.

  • Curtir 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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia Renato e Italo.

Consegui criar a VM e pude fazer testes de forma mais precisa, utilizando o exe do meu protótipo. Consegui gerar o xml assinado e o envio do lote de rps (inclusive as consultas).

Estavam faltando as dlls como o Renato falou, porém elas estavam todas na pasta DLL, dentro do mesmo diretório onde estava o exe. Só quando eu tirei as dlls da pata DLL e coloquei elas exatamente no mesmo diretório do exe é que funcionou.

Somente 3 dlls foram o suficiente para realizar todos os procedimentos de assinatura e envio do lote. São elas: libiconv.dll e libxml2.dll (da pasta LibXml2/x86) e libssl-1_1.dll (da pasta OpenSLL/1.1.1.10/x86).

Agora, estranho é prq na minha máquina dev funciona sem eu ter q colocar essas dlls dentro da pasta onde estão os exes do exemplo do acbr e do meu protótipo?

Vou pedir para não trancar o post ainda pois, queria testar na VM o exe da acbr e testar, com as dlls, as duas máquinas que estava testando semana passada.

 

Segue prints de como ficou o diretório, do protótipo, na VM.

 

Capturar.PNG

Capturar2.PNG

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Felipe, 

Se não me falha a memória na sua maquina de desenvolvimento no programa instalador (ACBrInstall_Trunk2 tem uma opção ativa que copia as DLL para a pasta do Windows.

Ao executar uma aplicação que depende de uma DLL, ela primeiro procura pela DLL dentro da pasta onde a aplicação se encontra, se não achar vai procurar dentro da pasta do Windows (System ou SysWOW64).

  • Curtir 2
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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia Italo e Renato.

Fiz novos testes nos dois computadores (dos meus primeiros testes) e em todos funcionou certinho quando adicionei as 3 dlls. Consegui assinar o lote e comunicar com a sefaz, enviando o lote e realizando consultas.

Gostaria de agradecer muito a ajuda e atenção de vocês.

Problema resolvido. Podem trancar o post.

Vlw!!!

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

  • Este tópico foi criado há 807 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.

The popup will be closed in 10 segundos...