Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Em alguns momentos(ora frequente, ora não) recebo erro de "Access violation" ao executar o RespostaFiscal. Quando esse erro ocorre, ao tentar emitir outro CFe, recebo a mensagem "SAT ocupado! Aguardando resposta da sessão 838033". Para conseguir emitir novamente tenho que fechar a aplicação.

Tentei de várias formas detectar o problema, mas debugando, não consigo simular o erro. Analisando os Logs, percebe-se que o componente aguarda por alguns instantes a resposta do Integrador, quando não recebe, cai na exceção "EComandoIntegradorException"(veja abaixo trecho do log). Alguém já passou por esse problema e poderia me ajudar a solucionar ou pelo menos tratar esse erro?

05/03/18 14:52:25:795 - RespostaFiscal
05/03/18 14:52:25:809 - NumeroSessao: 838033
05/03/18 14:52:25:821 - RespostaFiscal("OMITIDO PARA MELHOR VISUALIZAÇÃO" )
05/03/18 14:52:25:828 - Criando arquivo: C:\Integrador\Input\respostafiscal-838033.tmp
05/03/18 14:52:25:840 - Renomeando arquivo: C:\Integrador\Input\respostafiscal-838033.tmp para: C:\Integrador\Input\respostafiscal-838033.xml
05/03/18 14:52:25:849 - 05/03/2018 14:52:25 - AguardaArqResposta, sessao: 838033
05/03/18 14:52:26:009 - 05/03/2018 14:52:26 - AguardaArqResposta, sessao: 838033
05/03/18 14:52:26:168 - 05/03/2018 14:52:26 - AguardaArqResposta, sessao: 838033

05/03/18 14:52:54:405 - 05/03/2018 14:52:54 - AguardaArqResposta, sessao: 838033
05/03/18 14:52:54:565 - 05/03/2018 14:52:54 - AguardaArqResposta, sessao: 838033
05/03/18 14:52:54:737 - 05/03/2018 14:52:54 - AguardaArqResposta, sessao: 838033
05/03/18 14:52:54:901 - 05/03/2018 14:52:54 - AguardaArqResposta, sessao: 838033
05/03/18 14:52:55:062 - 05/03/2018 14:52:55 - AguardaArqResposta, sessao: 838033
05/03/18 14:52:55:236 - 05/03/2018 14:52:55 - AguardaArqResposta, sessao: 838033
05/03/18 14:52:55:405 - 05/03/2018 14:52:55 - AguardaArqResposta, sessao: 838033
05/03/18 14:52:55:566 - 05/03/2018 14:52:55 - AguardaArqResposta, sessao: 838033
05/03/18 14:52:55:736 - 05/03/2018 14:52:55 - AguardaArqResposta, sessao: 838033
05/03/18 14:52:55:910 - 05/03/2018 14:52:55 - AguardaArqResposta, sessao: 838033
05/03/18 14:52:55:970 - EComandoIntegradorException: Sem Resposta do Integrador
05/03/18 14:53:34:565 - EnviarPagamento

Postado

Pior que não, como mencionei anteriormente, o erro não ocorre sempre. Mas os métodos que executo são:

1º)  RespostaPagamentoMFe := TACBrSATMFe_integrador_XML(DMACBr.ACBrSAT.SAT).EnviarPagamento(PagamentoMFe);

2º) RespostaVerificarStatusValidador := TACBrSATMFe_integrador_XML(DMACBr.ACBrSAT.SAT).VerificarStatusValidador(VerificarStatusValidador);

3º) TACBrSATMFe_integrador_XML(DMACBr.ACBrSAT.SAT).EnviarDadosVenda();

4º) RetornoRespostaFiscal := TACBrSATMFe_integrador_XML(DMACBr.ACBrSAT.SAT).RespostaFiscal(RespostaFiscal);  

 

Postado
52 minutos atrás, André Ferreira de Moraes disse:

Tem um passo a passo para reproduzir o problema?

 

André, a maneira mais próxima de simular o erro, foi fechando o integrador no momento de enviar o respostafiscal. Fazendo isso, ocorre tudo que mencionei anteriormente.

Postado

Os métodos EnviarPagamento,VerificarStatusValidador e RespostaFiscal da classe TACBrSATMFe_integrador_XML tem um trecho de código semelhante, veja por exemplo o RespostaFiscal.

function TACBrSATMFe_integrador_XML.RespostaFiscal(
  ARespostaFiscal: TRespostaFiscal): TRetornoRespostaFiscal;
begin
  TACBrSAT(Owner).DoLog('RespostaFiscal');

  Result := Nil;
  TACBrSAT(Owner).IniciaComando;
  try
    Result := FIntegrador.RespostaFiscal(ARespostaFiscal);
  finally
    TACBrSAT(Owner).FinalizaComando( Result.XML );
  end;
end;

Acontece que, se por algum motivo o integrador não responder ao método FIntegrador.RespostaFiscal(ARespostaFiscal), o Result destes métodos fica como Nil e ocasiona o erro de "Access violation" no TACBrSAT(Owner).FinalizaComando( Result.XML ).

Espero que ajude na resolução do problema.

Postado
function TACBrIntegrador.RespostaFiscal(
  ARespostaFiscal: TRespostaFiscal): TRetornoRespostaFiscal;
var
  Comando, Resp : String;
begin
  Result := TRetornoRespostaFiscal.Create;

  GerarNumeroSessao;

  ARespostaFiscal.Identificador := numeroSessao;
  Comando := ARespostaFiscal.AsXMLString;
  DoLog('RespostaFiscal( '+Comando+' )');

  Resp := FComandoIntegrador.EnviaComando(numeroSessao,'RespostaFiscal',Comando);

  Result.AsXMLString := Resp;
end;
  • Este tópico foi criado há 2458 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...