Olá, Levei a aplicação para emissão de nota para um servidor e emiti tudo tranquilo, porém na hora de gerar o Danfe usando Fast Report da um access violation, alguém pode me ajudar? sabe se precisa de alguma dll no executável ou algo assim?
O erro acontece na máquina de desenvolvimento também?
O erro acontece só na geração do FastReport ou em qualquer operação que envolva a SEFAZ?
Cara, eu testei localmente e deu certo. O problema ta mesmo na hora de quando usa no servidor, o erro acontece na hora que pede para exibir o DANFE e na hora que pede o pfd para baixar.
Caçei o erro no forum do ACBR e encontrei que para emitir o DANFE da NFCe tinha que trocar o componente TACBrNFeDANFEFR por TACBrNFeDANFCEFR, troquei, porém o erro continuou o mesmo.
Acredito que seja algum arquivo que esteja faltando estar com o executavel, porém, não faço menor ideia de qual.
Acho que seu problema e que no servidor não deve ter preview, status e outras msg, então desabilita tudo e só pode gerar o PDF e fazer o upload via stream para o cliente do PDF
Cara, não entendi muito bem. Você ta dizendo que eu vou ter que gerar o pdf em outro executável e que não pode ser o mesmo que gera as notas ?
Não cara, to falando que tu tem que desabilitar as opções do componente ACBrNFeDANFeFR que mostra janelas de diálogos e também não pode usar o preview pois seu servidor vai estar na web, tu vai ter que gerar o pdf e mostrar ele, ou melhor renderizar/serializar/enviar para o cliente o pdf já pronto
@juliomar, mas acredito que ele esteja usando o fonte do emissor da Nuvem Fiscal, a princípio se tem um problema, seria bom corrigir pra todo mundo.
O emissor apenas instancia o componente sem setar nenhuma propriedade, e a emissão é praticamente as seguintes linhas:
DANFE.PathPDF := TPath.GetTempPath;
DANFE.ImprimirDANFEPDF(FACBrNFe.NotasFiscais.Items[0].NFe);
Isso pode mostrar janelas de diálogo? Porque preview não está sendo usado mesmo.
Talvez o problema dele seja mesmo dlls faltantes. Existe uma documentação consolidada do ACBr sobre quais DLLs devem ser disponibilizadas? Eu fui meio na tentativa e erro, usando alguns posts sortidos no fórum do ACBr pra funcionar.
@Joao_Batista, veja no repositório do ACBr, na pasta ACBr\DLLs
, existem várias subpastas lá. Acredito que você pode tentar colocar, junto com seu servidor, as DLLs da pasta ACBR\DLLs\XMLSec\MinGW\32
.
Sim Wagner talvez seja bom corrigir no código do emissor, para desabilitar as caixas de dialogs, outra coisa é que pode ser que ele faça uso do midas.dll e também se estiver usando as ultimas versões do ACBr precisa fazer a verificação se foi pego as últimas dll e colocadas pois foi adicionado o suporte a openssl 1.1 e superiores
@Joao_Batista, quando você diz : “Levei a aplicação para emissão de nota para um servidor e emiti tudo tranquilo” , esse seu servidor é uma VPS , uma máquina dedicada, usa qual Sistema Operacional ?
Coloquei as Dlls na pasta do executável e continuou o mesmo problema. E, ja verifiquei a versão do acbr e das dlls e estão todas atualizadas.
É um servidor na nuvem e o sistema operacional e o WindowsServer.
O erro aparentemente é na hora de criar o componente TACBrNFeDANFCEFR com o FastReport, o erro acontece no metodo CriarComponenteDANFE. Pelo que entendi ele não ta criando o Danfe e está dando AcessViolation na linha :
“Result.ACBrNFe := FACBrNFe;”
Justamente por que não cria o componente. Lembrando que na maquina local ta dando certo, esse problema acontece quando o projeto Servidor está na nuvem.
Acredito que você primeiro simule a operação em uma máquina local por exemplo com o windows 10 para ver se não existe erro. Não havendo o que pode estar criando dificuldades seja PERMISSÕES se o aplicativo funciona como um serviço pode ser que o usuário do serviço não tenhas as permissões necessárias ou que a parta do aplicativo seja liberado para acesso a qualquer usuário e operação.
Amigo, acredito que não seja isso, visto que muitas das coisas que você citou ai não condiz com os assuntos discutidos acima e o exemplo do projeto.
Então João, eu não sou profundo entendedor de ACBr, você fala que o problema é na criação do Danfe, com o FastReport, vc ja tentou usar o Fortes para ver se ocorre o mesmo ? O que citei anteriormente se baseia se por exemplo ao ser criado o componente cria algo em disco, mesmo que temporariamente e não haja permissão para fazê-lo.
Abraço
Testei agora com o fortes e deu tudo certo, porém, queria que funcionasse com o Fast também.
Você tentou entrar em contato com o fórum do ACBr? No emissor o código não tem nada de mais, é apenas criada uma classe do ACBr (no caso o emissor via FastReport). Eu rodo aqui o emissor num VPS Windows Server na Amazon e roda normal.
Até onde eu sei, o Fortes não é confiável para rodar no servidor pois ele não funciona bem em ambiente multi-thread.
Pessoal, eu estava com este mesmo problema, fiquei algum tempo debugando e consegui resolver adicionando a uses MidasLib no projeto, apesar de eu não fazer uso do DBExpress no meu projeto, mas lembrei que o componente do DANFE FAST REPORT utiliza TClientDataset para fazer o bind dos dados.
Espero que esta dica ajude quem passar pelo mesmo problema.