Jump to content

TACBrNFSeDANFSeFR.PrepareReport lento para muitas notas fiscais


MagoSchmidt
  • Este tópico foi criado há 174 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 to comment
Share on other 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 to comment
Share on other sites

  • Membros Pro

Como eu disse, criei uma unit separada para resolver o problema. Isto foi feito para isolar a alteração do ACBr original. A unica lteração no codigo original foi tornar o método CarrgaDados protected (na unit ACBrNFSeDANFSeFR.pas)

Abraços

Link to comment
Share on other sites

  • 4 years later...
  • 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

Edited by MagoSchmidt
Link to comment
Share on other sites

  • 1 year later...
  • Consultores
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
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 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.

  • Like 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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.