Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Olá a todos.

Venho aqui solicitar mais uma vez uma ajudinha com um problema.

Quando eu envio uma nf-e para a sefaz e gravo o retorno do protocolo da seguinte forma:

ACBrNFe1.WebServices.Retorno.Protocolo

Muitas vezes é gravado o protocolo de uma outra NF-e ou o protocolo esta em branco, o protocolo vem em branco quando o status da NF-E for diferente de 100 - "Autorizado o uso da NF-E", mas ela vem com status 100 e não vem o protocolo, ou vem com o protocolo da outra NF-e.

O que eu reparei é que esta após eu enviar NF-E ela continua com os dados de retorno da ultima nota enviada.

Ante de eu enviar a NF-e eu dou um clear (ACBrNFe1.NotasFiscais.Clear) e depois eu Carrego os dados (ACBrNFe1.NotasFiscais.Add.NFe ... ) e envio (ACBrNFe1.Enviar(_tlote.fieldbyname('lote').AsString, false).

E para garantir se a NF-E foi autorizada eu faço:

if(ACBrNFe1.WebServices.Retorno.cStat = 100)and((ACBrNFe1.WebServices.Retorno.Protocolo <> null)or(ACBrNFe1.WebServices.Retorno.Protocolo <> ''))then

E mesmo assim ocorre do status fica como 100 e o protocolo em branco, ou ele grava o protocolo de outra NF-E.

E o que eu fico mais intrigado é que eu verifico se o protocolo for diferente de null ou vazio, e mesmo assim ele grava em branco.

Att.

Carlos Fitl.

  • Respostas 50
  • Created
  • Última resposta

Top Posters In This Topic

Postado

Estou com este mesmo problema , mais é utilizando o ACBRNFeMonitor , tambem qndo o protocolo nao retorna , ele acaba trazendo o ultimo protocolo enviado . fica errado . pois vc entra no xml e nao foi incluido , mais o acbrNFeMonitor retorna o protocolo do penultimo xml gerado .

Adilson Pazzini .

Postado

Olá anfm, após a atualização que você fez esta ocorrendo muito erro de acesso violation, eu fecho o sistema abro novamente envio uma nota e ao enviar a próxima ocorre o erro novamente.

Com o meu fonte anterior sem esta nova implementação ele não da o erro.

Postado

Sim, no demo ocorre o mesmo erro, é só você enviar uma nota depois enviar outra que ocorre o erro.

Segue em anexo o erro que ocorre, repare também o processo do executável, a cada nota enviada o quanto ele aumenta, isso ocorre por que esta tendo vazamento de memoria no componente. Eu já relatei isso em outro post mas acho que ninguém testou.

Imagem 1

post-398-13548987403591.jpg

Imagem 2

post-398-13548987404038.jpg

Att.

Carlos Fitl.

  • Consultores
Postado

Boa tarde a todos,

Na function TNFeRecepcao.Executar, foi incluido o seguinte código:


if assigned(TACBrNFe( FACBrNFe ).WebServices.Retorno.FNFeRetorno) then

     TACBrNFe( FACBrNFe ).WebServices.Retorno.FNFeRetorno.Free;

Não seria ele o causador do problema?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Consultores
Postado

Carlos,

Analisei os arquivos: *-env-lot.xml, *-rec.xml, *-ped-rec.xml, *-pro-rec.xml e *-nfe.xml de um cliente.

O lote de envio continha 6 notas, no caso todas foram autorizadas ou seja status = 100.

Chequei os numeros de protocolo retornados no arquivo *-pro-rec.xml com os numeros de protocolo incluidos nos arquivos *-nfe.xml correspondentes.

Tudo em ordem, sem nenhum problema.

Como não tenho uma cópia da Base de dados não tenho como informa-lo se a BD foi atualizada de forma correta, acredito que sim.

Será que o problema que esta ocorrendo não esta na forma que você implementou?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

O problema é que não ocorre em todas as notas enviadas, mas em algumas.

Eu envio desta forma: ACBrNFe1.Enviar(_tlote.fieldbyname('lote').AsString, false);

E aguardo o retorno e pego o protocolo: ACBrNFe1.WebServices.Retorno.Protocolo;

Mas tem hora que retorna o protocolo de uma nota anterior a que foi enviada.

Por isso o anfm fez aquela implementação, para matar o objeto da memoria, pois eu também estou achando que ele esta pegando o valor de um objeto já criado.

E eu achei que isso só acontecia comigo, então quando eu coloquei este poste uma outra pessoa relatou que isso também esta acontecendo com ele, mas usando o ACBrMonitor.

Att.

Carlos Fitl.

Postado

O meu problema ta igual ao dele . mais estou usando acbrNFeMonitor Capcom, acontece , qndo estou enviando uma NFe e esta nf-e q esta sendo enviada .da algum problema ou atraso no retorono . dai ele fica pegando o protocolo da ultima que deu certo .

Dai no banco acabo granvando que o protocolo da anterior ,.. soque qndo vc vai imprimir ,. vc v que o xml nao foi incluido a tag protnfe

Adilson Pazzini.

Postado

Como nós podemos resolver este problema, na atualização que eu fiz hoje (revisão 2278) foi comentado o trecho que estava ocorrendo o erro de acesso violation:

if assigned(TACBrNFe( FACBrNFe ).WebServices.Retorno.NFeRetorno) then

TACBrNFe( FACBrNFe ).WebServices.Retorno.NFeRetorno.Free;

Pois agora vai voltar o problema de pegar o protocolo de outra nota, lembrando que não são todas as notas que acontece isso, se você fazer o teste no exemplo do ACBrNFe o erro não ocorre pois isso não ocorre toda horas, pelo que eu testei isso ocorre quando você começa a enviar um fluxo de notas muito grande.

Alguém mais tem relatos deste erro, façam uma pesquisa no banco de dados de vocês a procura de notas com o mesmo protocolo?

Att.

Carlos Fitl.

  • Moderadores
Postado

A alteração foi comentada pois estava causando mais efeitos negativos do que positivos.

Caso vc tenha alguma correção e queira nos enviar será de grande ajuda, caso contrário terá que aguardar a análise do problema com calma e esperar que seja postada uma solução no SVN.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.xpos.com.br
Postado

Eu identifiquei o seguinte;

Na implementação que foi comentada onde ocorria o erro de acesso violation ocorre porque o objeto esta sendo liberado da memoria mais de uma vez, como o objeto não existe mais não tem como dar um free novamente.

O objeto estava sendo liberado na memoria na linha 1184 da unit ACBrNFeWebServices:

Obs:(Este trecho de código foi comentado para não ocorrer mais o erro de acesso violation).

if assigned(TACBrNFe( FACBrNFe ).WebServices.Retorno.NFeRetorno) then

TACBrNFe( FACBrNFe ).WebServices.Retorno.NFeRetorno.Free;

E o objeto esta sendo liberado da memoria novamente na linha 1420 da unit ACBrNFeWebServices:

if assigned(FNFeRetorno) then

FNFeRetorno.Free;

Se comentarmos a linha 1420 e 1421 e tirar o comentário da linha 1184 e 1185?

Att.

Carlos Fitl.

  • 2 semanas depois ...
  • Este tópico foi criado há 4075 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.