Ir para conteúdo
  • Cadastre-se

dev botao

Argument out of range - Geração do PDF da NFCe


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

Recommended Posts

Ola Boa Noite

Precisando de uma ajuda, meu sistema tem botão chamado fechar mês o msm esta dado erro seguinte mensagem "Argument out of range" na quando clico.

erro da quando passa por esta procedure apos passar por ela dar a mensagem.

procedure TfrmNFCe.GerarXml;
var
  dia, mes, ano: Word;
begin

  ACBrNFeDANFCeFortesA41.MostraPreview := false;
  ACBrNFeDANFCeFortesA41.MostraStatus := false;
  try
    ACBrNFe.NotasFiscais.Clear;
    if (qryXMLSITUACAO.Value = 'T') then
      ACBrNFe.NotasFiscais.LoadFromString(qryXMLXML.AsString);

    if (qryXMLSITUACAO.Value = 'C') then
      ACBrNFe.NotasFiscais.LoadFromString(qryXMLXML_CANCELAMENTO.AsString);

    ACBrNFe.DANFE := ACBrNFeDANFCeFortesA41;
    ACBrNFe.DANFE.Cancelada := false;
    if qryVendaSITUACAO.Value = 'C' then
      ACBrNFe.DANFE.Cancelada := true;
    ACBrNFe.DANFE.vTribFed := qryXMLTRIB_FED.AsFloat +
      qryXML.FieldByName('TRIB_IMP').AsFloat;
    ACBrNFe.DANFE.vTribEst := qryXMLTRIB_EST.AsFloat;
    ACBrNFe.DANFE.vTribMun := qryXMLTRIB_MUN.AsFloat;
    ACBrNFe.DANFE.PathPDF := Dados.qryConfigPATHPDF.Value;
    ACBrNFe.NotasFiscais.ImprimirPDF;

    if (qryXMLSITUACAO.Value = 'T') or (qryXMLSITUACAO.Value = 'C') then
      ACBrNFe.NotasFiscais.GravarXML();

  finally
   ACBrNFeDANFCeFortesA41.MostraPreview := true;
   ACBrNFeDANFCeFortesA41.MostraStatus := true;
  end;

end;

 

Ele da este mensagem de erro 

 

image.png.d9bcdb50eef5bf57ed8ebdaa4b7f362f.png

 

assim nao executa os demais rotinas do botao.

Pelos teste q venho fazendo quando retiro este codigo abaixo consigo gerar o zipado com xml  dar sequencia do resto do processo, mais nao consigo executar a rotina e Salvar o PDF das notas na pasta.

 ACBrNFe.DANFE.PathPDF := Dados.qryConfigPATHPDF.Value;
    ACBrNFe.NotasFiscais.ImprimirPDF;

 

Link para o comentário
Compartilhar em outros sites

procedure TACBrNFeDANFCeFortesA4.ImprimirDANFEPDF(NFE: TNFe);
begin
  if NFe = nil then
   begin
     if not Assigned(ACBrNFe) then
        raise Exception.Create('Componente ACBrNFe não atribuí­do');

     FpNFe := TACBrNFe(ACBrNFe).NotasFiscais.Items[0].NFe;       >>>> NESTE PONTO DA ERRO
   end
  else
    FpNFe := NFE;
  Imprimir(False, fiPDF);
end;

 

 

e para aqui 

 

procedure TWinControl.MainWndProc(var Message: TMessage);
begin
  try
    try
      WindowProc(Message);
    finally
      FreeDeviceContexts;
      FreeMemoryContexts;
    end;
  except
    Application.HandleException(Self);
  end;
end;

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution
17 horas atrás, CHARLESSPOT disse:

Precisando de uma ajuda, meu sistema tem botão chamado fechar mês o msm esta dado erro seguinte mensagem "Argument out of range" na quando clico.

Provavelmente está sendo informando um XML inválido para o método ACBrNFe.NotasFiscais.LoadFromString.

Você pode testar o retorno desse método pra saber se o XML foi carregado ou não.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
7 minutos atrás, CHARLESSPOT disse:

Ola Bom dia

 

Eu nao tenho muito conhecimento talvez voces me passar como eu poderia fazer o teste do retorno deste metodo. 

var
  CarregouXML: Boolean;
begin
  ACBrNFe.NotasFiscais.Clear;
  CarregouXML := ACBrNFe.NotasFiscais.LoadFromString(XML);
  if not CarregouXML then
    raise Exception.Create('Erro ao carregar o XML');
end;

 

  • Curtir 2
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

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