Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

Olá pessoal, sou novo no fórum ... mas já acompanho o desenvolvimento do projeto a algum tempo.

 

Minha dúvida possivelmente e algo muito simples, estou implementando agora o NFe no meu sistema, e a aplicação trava em toda operação longa.

 

Existe alguma propriedade do ACBr que o deixe Rodando como se fosse uma Thread , algum componente que evite o Freeze ou a solução e realmente criar uma thread e manipular o componente por ela?

 

 

Aguardo respostas, William Mattos.

 

 

Postado (editado)

[Editado : Testei Rapido de mais, achei que tinha resolvido, mas também não resolveu]

 

 

Resolvi com uma gambiarra , mas enquanto não implemento a thread vou utilizar assim:

 

Fiz da Seguinte Maneira:

Atribui o famoso Application.ProcessMessages() no OnStatusChange do ACBr.

Editado por WilliamMattos
Postado

Olá Régys , não se trata de um erro.  

 

só estou buscando uma solução para dar uma experiencia mais agradável ao cliente.

 

Vou tentar explicar de forma mais clara.

 

[Problema]

 

A Velocidade da Banda Larga por aqui , não tem nada de Larga, por isso quando vou realizar por exemplo: Uma consulta do Status de Serviço.

 

A Aplicação para de processar as Mensagens do Windows e da prioridade ate que a consulta se realize, coisa que pode demorar uns 3~6 segundos ou ate mais.

 

Até ai tudo bem, porém... se o usuário por exemplo: Dar alguns cliques na Janela do Sistema ou Tentar arrastar-la .

 

o windows por padrão verifica que aquela aplicação não esta processando as mensagens e logo Coloca a Aplicação como "Não Respondendo" e pode ate apresentar a janela com a opção de encerrar o processo.

 

Este e o 'problema', pois o cliente acha que a aplicação travou e pode encerrar o processo no meio de uma Consulta ou ate mesmo do envio da NFe.

 

 

Este 'problema' é apenas para a experiencia do usuário, pois o sistema na realidade não travou , mas sim.. executa um procedimento longo.

  • Moderadores
Postado

Agora entendi Willian, mas o estranho é que aqui eu não tenho esse problema de congelamento na minha aplicação, eu mostro um formulário de aguarde enquanto está em processamento, durante a exibição dele meu aplicativo fica aguardando até que termine a consulta ou estoure o tempo limite estipulado no componente, nesse meio tempo tudo continua normal mesmo quando o webservice demora a responder.

 

Como você está codificando a consulta de status que foi o seu exemplo acima e também como você está configurando o seu componente?

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Postado

Sim ... esse problema não e serio, minha aplicação também não trava, só quando demora e os 'apressadinhos' ficam clicando na aplicação que fica como não respondendo , mas depois se o usuário não clicar em encerrar processo volta ao normal.

 

No exemplo aqui e simples, 1 formulário , 1 botão , componente acbrnfe2 com todos os valores default , apenas alterando o UF do webservice para 'RJ'.

 

 

Codificação do botão para o exemplo:

ACBrNFE.Configuracoes.Certificados.SelecionarCertificado;
if AcbrNFE.WebServices.StatusServico.Executar then
  ShowMessage('Ok')
else
  ShowMessage('Erro');

como pode ver, o 'problema' e realmente quando o usuário não espera e começa a clicar e arrastar a janela(como se adiantasse alguma coisa) rs

  • 1 ano depois...
  • 3 meses depois ...
Postado (editado)

Sim ... esse problema não e serio, minha aplicação também não trava, só quando demora e os 'apressadinhos' ficam clicando na aplicação que fica como não respondendo , mas depois se o usuário não clicar em encerrar processo volta ao normal.

 

No exemplo aqui e simples, 1 formulário , 1 botão , componente acbrnfe2 com todos os valores default , apenas alterando o UF do webservice para 'RJ'.

 

 

Codificação do botão para o exemplo:

ACBrNFE.Configuracoes.Certificados.SelecionarCertificado;
if AcbrNFE.WebServices.StatusServico.Executar then
  ShowMessage('Ok')
else
  ShowMessage('Erro');

como pode ver, o 'problema' e realmente quando o usuário não espera e começa a clicar e arrastar a janela(como se adiantasse alguma coisa) rs

 

  E ai pessoal post meio antigo, mas  não encontrei uma solução atualizada aqui no forum(salve engano), alguém teria ideia de como fazer ? basicamente seria fazer um Thread no envio da NF-e e deixar a aplicação(interface) livre para o usuário, pois uso o método de envio síncrono.

Editado por FLEXNET

Ricardo

Flexnet Sistemas

  • 2 anos depois...
Postado (editado)

Isso é bem simples de resolver, é só usar o código a seguir:

 

Enabled := false; // Deixa o telasomente leitura, não permite que nenhum comando seja executado pelo usuario

try

  ACBrNFE.Configuracoes.Certificados.SelecionarCertificado;

finally

  Enabled := true;// aconteça o que acontecer  habilita novamente a tela

end;

 

 

Boa noite a todos

Pessoal criei uma thread que contem um time para ficar verificando o status de serviço com o comando abaixo:

procedure TVerificaSefaz.OnTimer(Sender: TObject);
begin
 with Sender as TTimer do
 begin
         fsACBrNFCe.WebServices.StatusServico.Executar;

 end;
end;

só que nesse momento ele gera um erro como se não fosse criado o componente  fsACBrNFCe, alguém saberia informar qual motivo desse erro?

Editado por Adelmo Junior
Postado
9 horas atrás, Adelmo Junior disse:

Pessoal criei uma thread que contem um time para ficar verificando o status de serviço

Cuidado com este tipo de operação q vc pode acabar sendo bloqueado por consumo indevido.

Sobre seu erro citado fica complicado ajudar sem saber se o componente esta na tela ou se vc esta criando ele em tempo de execução.

Att

Ricardo

  • Consultores
Postado

Boa noite Adelmo,

Sugiro que você leia o documento publicado no Portal Nacional da NF-e.

Link: http://www.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=Iy/5Qol1YbE=

Trata sobre o Consumo Indevido.

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

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