Ir para conteúdo
  • Cadastre-se

dev botao

TACBrNFSeDANFSeFR.PrepareReport lento para muitas notas fiscais


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

Recommended Posts

  • Membros Pro

Ao gerar um relatorio com mais de 200 notas fiscais (sim, o cliente imprime tudo de uma vez para enviar ao contador) fica absurdamente lento.

Identifiquei que o problema é um bug conhecido do fast report neste ponto:

function TACBrNFSeDANFSeFR.PrepareReport(NFSe: TNFSe): Boolean;

.

.

.

      for I := 0 to TACBrNFSe(ACBrNFSe).NotasFiscais.Count - 1 do
      begin

        CarregaDados(TACBrNFSe(ACBrNFSe).NotasFiscais.Items.NFSe);

        if (I > 0) then
          Result := frxReport.PrepareReport(false)
        else
          Result := frxReport.PrepareReport

      end;

Onde o PrepareReport(false) acrescenta um novo relatorio a cada NFs-e (usando o recurso de multi-relatorios). Mas depois de uma certa quantidade fica muito lento.

Fiz algumas alterações nos fontes para tornar isto mais rapido. Qual o procedimento para submeter a alteração à eventual incorporação definitiva?

Abraços

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

O que eu fiz foi usar uma dica conhecida que resolve este problema de degradação do FastReport em multiplos relatorios.

Ao invés de um PrepareReport(FALSE) que vai acumulando os relatórios (e degradando) usa-se um segundo frxReport chamando o PreviewPages.AddFrom(frxReport).

Isto foi feito em uma unit separada em anexo. A única coisa que tive que alterar no código original foi tornar o método CarrgaDados protected.

Abraços

UPolyAcbrDANFSE.pas

Link para o comentário
Compartilhar em outros sites

  • 4 anos depois...
  • Membros Pro

Sei que este post é antigo mas o problema persiste. Eu mantive minha versao da unit durante este tempo mas agora tive que fazer uma atualização geral e o problema retornou. A unit que eu havia enviado anteriormente era uma sobrescrição da classe TACBrNFSeDANFSeFR para evitar alteraçoes no codigo original do Acbr. 

Desta vez entao estou enviando as mudanças feitas na unit original para avaliação dos Srs.

A ideia central (que torna o processo bem mais rápido) é:

frxReport.PreviewPages.AddFrom(frxReportTemp);

na linha 315

Abraços

 

 

 

ACBrNFSeDANFSeFR.pas

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

  • 1 ano depois...
  • Moderadores
22 horas atrás, MagoSchmidt disse:

Vi que voces aceitaram minha colaboração. Muito obrigado!

Identifiquei o mesmo problema na ACBrNFeDANFEFRDM.pas, a original processou por 12hs e nao terminou a geraçao de 3000 NF's

Segue a versao corrigida que fez o trabalho em 50mins

Abraços

 

ACBrNFeDANFEFRDM.pas 96 kB · 1 download

antes de alterar tu atualizou o svn??

antes de alterar e enviar?

 

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

  • Consultores
Em 14/02/2022 at 13:17, MagoSchmidt disse:

Vi que voces aceitaram minha colaboração. Muito obrigado!

Identifiquei o mesmo problema na ACBrNFeDANFEFRDM.pas, a original processou por 12hs e nao terminou a geraçao de 3000 NF's

Segue a versao corrigida que fez o trabalho em 50mins

Abraços

 

ACBrNFeDANFEFRDM.pas 96 kB · 2 downloads

Olá tudo bem?

Infelizmente seu arquivo está muito desatualizado. Não temos como analisar sem saber em qual revisão está.

Por favor, atualize para a última revisão do SVN e anexe novamente para que possamos dar prosseguimento.

  • Curtir 2

[]'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 para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 761 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.