Ir para conteúdo
  • Cadastre-se

dev botao

ACBRNFE - ImprimirPDF (ISAPI DLL)


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

Recommended Posts

Olá, gerei uma dll isapi com o componente TACBrNFe e TACBrNFeDANFEFR do acbr. A emissão da nfe ocorre corretamente e ela fica validada e aparece no site da receita.

Porem, ao executar a rotina "FNfe.NotasFiscais.Items[0].ImprimirPDF", congela/trava a rotina. 

Tentei com "FNfe.NotasFiscais.Items[0].Imprimir" porem ocorre o mesmo problema.

Ao executar a mesma rotina em um servidor standAlone, funciona normalmente, alguém sabe o que poderia saber?

OBS: No standalone ao executar este comando "ImprimirPDF" apenas é gerado o pdf da nfe na pasta que preenchi nas configurações, não tem nada de visual na aplicação, não abre o exibe o pdf, não exibe o "carregando" do componente para montar o pdf e nem nada, apenas gera o pdf na pasta.

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

Identifiquei onde está o problema... nos eventos dentro do DANFE "DANFeRetrato.fr3".

Vou ver se consigo identificar qual a função dentro do relatório que está genrado o erro.

Outra coisa, a propriedade SilentMode do frxReport assim como a ThreadSafe, precisa estar acessível externamente para que possa ser configurável...

Link para o comentário
Compartilhar em outros sites

Esta é a função dentro do fr3 da DANFE que está com problema ao gerar PDF via ISAPI DLL:

 

procedure InicializaPosicaoCanhoto();
begin
  if Trim(VarToStr( <Parametros."poscanhotolayout"> )) = '0' then
  begin
    if Trim(VarToStr( <Parametros."poscanhoto"> )) = '2' then
       CanhotoCabecalho.Visible := true
    else
       CanhotoCabecalho.Visible := <Parametros."poscanhoto"> = '0';

    CanhotoCabecalho.Child       := CanhotoCabecalhoPadrao;
    CanhtoCabecalhoBarra.visible := false;
    CanhotoRodape.Visible        := <Parametros."poscanhoto"> = '1';
    CanhotoRodapeBarra.Visible   := false;
  end
  else
  begin
    if Trim(VarToStr( <Parametros."poscanhoto"> )) = '2' then
       CanhotoCabecalho.Visible := true
    else
       CanhotoCabecalho.Visible := <Parametros."poscanhoto"> = '0';

    CanhotoCabecalho.Child         := CanhtoCabecalhoBarra;
    CanhotoCabecalhoPadrao.visible := false;
    CanhotoRodape.Visible          := false;
    CanhotoRodapeBarra.Visible     := <Parametros."poscanhoto"> = '1';
  end;
end;

Link para o comentário
Compartilhar em outros sites

O problema parece ser ao modificar via programação a propriedade Child de algum componente visual.

No nosso caso como o default do relatório já é o "CanhotoCabecalho.Child := CanhotoCabecalhoPadrao"

image.thumb.png.055931752233f9fac6e0dd81a6f5ab08.png

apenas inserindo um if de validação em cima da execução da rotina, já resolve o problema:

image.thumb.png.35382e6bb61c5d94cf412de46845254f.png

 

Mas caso quisermos trocar essa propriedade via programação, vai dar problema na geração do relatório... Então isto seria uma solução temporária apenas, para funcionar a geração do relatório via ISAPI DLL com este modelo da danfe ( DANFeRetrato.fr3 )

 

 

Link para o comentário
Compartilhar em outros sites

Se possível, adicionar mais estas propriedades para manipulação externa ao componente do acbr:

frxReport.EngineOptions.SilentMode := True;
frxReport.EngineOptions.IgnoreDevByZero := true;
frxReport.EngineOptions.IgnoreExprError := true;
frxReport.EngineOptions.NewSilentMode := simSilent;
frxReport.EngineOptions.EnableThreadSafe := true;

Estão dentro da use ACBRNFEDANFEFRDM e são importantes para caso de algum erro no relatório, não fique com a requisição congelada na api do ISAPI DLL e consiga seguir com a vida da requisição dentro do backend...

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Moderadores
Em 10/06/2021 at 13:54, Douglas Colombo disse:

Se possível, adicionar mais estas propriedades para manipulação externa ao componente do acbr:

frxReport.EngineOptions.SilentMode := True;
frxReport.EngineOptions.IgnoreDevByZero := true;
frxReport.EngineOptions.IgnoreExprError := true;
frxReport.EngineOptions.NewSilentMode := simSilent;
frxReport.EngineOptions.EnableThreadSafe := true;

Estão dentro da use ACBRNFEDANFEFRDM e são importantes para caso de algum erro no relatório, não fique com a requisição congelada na api do ISAPI DLL e consiga seguir com a vida da requisição dentro do backend...

Douglas por favor altera o componente para expor essas situações e anexa o fr3 com as alterações necessárias para vermos e validar

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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...