Ir para conteúdo
  • Cadastre-se

dev botao

TDetCollectionItem gerando Access Violation ao vender item


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

Recommended Posts

Olá pessoal!

 

Tenho um sistema homologado em produção para MF-e. Recentemente, fiz alterações para emitir também NFC-e.

Uso o ACBrECF com VirtualSAT e VirtualNFce.

Depois das alterações passou a dar erro de Access Violation no momento de vender o item (ACBrECFVirtualSAT1QuandoVenderItem)

O erro acontece ao ler o parâmetro Det: TDetCollectionItem;

Já verifiquei várias coisas mas não consegui identificar a causa desse erro...

Alguém já passou por isso? 

 

Agradeço desde já.

 

Aloisio P. Neto

Desenvolvedor

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Apenas foi adicionado um Evento  na Classe base que permite a aplicação chamadora, controlar o Estado do ECF, quando este estiver mudando..

Por favor tente reproduzir o erro com o Demo ECFTeste...

Lembrando que A.V. ocorre quando se tenta acessar um objeto que não existe... ou seja, não foi criado ou já foi destruído 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Em 07/04/2020 at 09:30, Daniel Simoes disse:

Apenas foi adicionado um Evento  na Classe base que permite a aplicação chamadora, controlar o Estado do ECF, quando este estiver mudando..

Por favor tente reproduzir o erro com o Demo ECFTeste...

Lembrando que A.V. ocorre quando se tenta acessar um objeto que não existe... ou seja, não foi criado ou já foi destruído 

Daniel, não quis dizer que é um erro do componente.

Acredito que é alguma configuração errada  no meu projeto que está causando isso.

Já verifiquei várias coisas e não achei o motivo do erro. 

O objetivo do post seria mesmo pedir uma dica pra alguém do grupo que pudesse me dar uma caminho na resolução desse erro ...

Só para ilustrar a situação: o erro ocorre no evento QuandoVenderItem do ACBrVirtualSAT (Aparentemente o Det não está sendo recebido e gera um access violation)

procedure TfPrincipal.ACBrECFVirtualSAT1QuandoVenderItem(
  Det: TDetCollectionItem);
begin
   // Complementa dados dos produtos para o CF-e

   with Det do
      begin
      if wNcm='' then
         Prod.NCM := '99'
      else
         Prod.NCM := wNcm;

      Prod.CFOP  := wCFOP;
      end;
end;

Agradeço quem puder dar alguma dica!

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Você não consegue reproduzir a situação no demo? talvez isso já ajude a encontrar onde precisa ser ajustado no seu código.

Att.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Fundadores
1 hora atrás, aloisiopires disse:

Só para ilustrar a situação: o erro ocorre no evento QuandoVenderItem do ACBrVirtualSAT (Aparentemente o Det não está sendo recebido e gera um access violation)

Humm.. quem invoca esse Evento é o componente...

Deixe um Bkpoint nele, e quando o "Det" estiver como "Nil", verifique no Call Stack, que linha de código chamou o evento...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

18 horas atrás, Daniel Simoes disse:

Humm.. quem invoca esse Evento é o componente...

Deixe um Bkpoint nele, e quando o "Det" estiver como "Nil", verifique no Call Stack, que linha de código chamou o evento...

Debuguei e notei o seguinte:

O evento é chamado na linha 445 da TACBrECFVirtualSATClass.VendeItemVirtual(ItemCupom: TACBrECFVirtualClassItemCupom)  
 

    if Assigned( fsQuandoVenderItem ) then
      fsQuandoVenderItem( Det );

 

O valor de Det está se perdendo entre a chamada e a execução do método ... (anexei o CallStack e o Local Variables)

Existe alguma configuração que possa estar errada que cause esse tipo de erro?

 

 

 


 

 

errosat2.png

errosat1.png

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Clique no segundo item do CallStack, e ache a linha do ACBrECFVirtualSAT... Com um debug nessa rotina, acompanhe a criação do Det, até passar ele pra o evento...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Em 09/04/2020 at 16:02, Daniel Simoes disse:

Clique no segundo item do CallStack, e ache a linha do ACBrECFVirtualSAT... Com um debug nessa rotina, acompanhe a criação do Det, até passar ele pra o evento...

Daniel, eu já tinha feito isso...

Se observar no post anterior eu debuguei e postei as fotos.

Ao entrar no evento ACbrECFVirtualSAT1QuandoVenderItem o Delphi mostra que o valor de Det = inaccessible value.

Pelo que entendi o valor de Det se perde na passagem do parâmetro...

 

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

@aloisiopires,

Não creio que seja esse o problema... O Objeto está sendo criado corretamente, no inicio de "TACBrECFVirtualSATClass.VendeItemVirtual"

procedure TACBrECFVirtualSATClass.VendeItemVirtual(
  ItemCupom: TACBrECFVirtualClassItemCupom);
var
  Det: TDetCollectionItem;
  AliqECF: TACBrECFAliquota;
begin

  with fsACBrSAT do
  begin
    Det := CFe.Det.New;     // <---- AQUI

    Det.nItem := ItemCupom.Sequencia;
    Det.Prod.cProd    := ItemCupom.Codigo;
    Det.Prod.xProd    := ItemCupom.Descricao;
    Det.Prod.qCom     := ItemCupom.Qtd;
    Det.Prod.vUnCom   := ItemCupom.ValorUnit;
    Det.Prod.uCom     := ItemCupom.Unidade;     

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

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