Ir para conteúdo
  • Cadastre-se

dev botao

ACBrNFSeX - erro "Resource ACBrNFSeXServicos not found"


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

Recommended Posts

  • Membros Pro
Postado

Recentemente foi feita uma alteração em TACBrNFSeX, que passou a chamar seu método LerCidades() em seu constructor. Isso quebrou compatibilidade com a nossa integração, e gostaríamos que revisassem a abordagem, ou a necessidade de chamar LerCidades() ao instanciar o componente.

O problema é que o LerCidades() depende da configuração do INI, feita em ACBrNFSeX.Configuracoes.Arquivos.IniServicos. Mas só se pode configurar o caminho para o arquivo INI depois de instanciar o componente.

Na nossa aplicação, o INI fica em %APP_DIR%\ACBr\NFSeX\ACBrNFSeXServicos.ini, enquanto o executável fica em %APP_DIR%. Até então, instanciávamos o componente, configurávamos o caminho para o INI, e depois chamávamos explicitamente o método LerCidades(). Com a alteração recente, ao chamar TACBrNFSeX.Create(), é chamado LerCidades(), que tenta ler o INI do diretório do executável, e como não existe, tenta ler o arquivo ACBrNFSeXServicos.res, que também não existe, e acaba gerando o erro

Resource ACBrNFSeXServicos not found

Poderiam reconsiderar essa abordagem de chamar o LerCidades() na criação do componente? Com ela, a configuração ACBrNFSeX.Configuracoes.Arquivos.IniServicos fica sem utilidade, porque não será usada por LerCidades(), que sempre buscará o INI do diretório do executável. Se for indispensável chamar LerCidades() para algum caso, poderiam fazer um overload no constructor, implementando um Create() alternativo que não chame LerCidades()?

logoDW.png.043cb4b50e3275dc9614c728eb3fa617.png

Guilherme Costa

 

  • Consultores
Postado
32 minutos atrás, DatawebDev disse:

Recentemente foi feita uma alteração em TACBrNFSeX, que passou a chamar seu método LerCidades() em seu constructor. Isso quebrou compatibilidade com a nossa integração, e gostaríamos que revisassem a abordagem, ou a necessidade de chamar LerCidades() ao instanciar o componente.

O problema é que o LerCidades() depende da configuração do INI, feita em ACBrNFSeX.Configuracoes.Arquivos.IniServicos. Mas só se pode configurar o caminho para o arquivo INI depois de instanciar o componente.

Na nossa aplicação, o INI fica em %APP_DIR%\ACBr\NFSeX\ACBrNFSeXServicos.ini, enquanto o executável fica em %APP_DIR%. Até então, instanciávamos o componente, configurávamos o caminho para o INI, e depois chamávamos explicitamente o método LerCidades(). Com a alteração recente, ao chamar TACBrNFSeX.Create(), é chamado LerCidades(), que tenta ler o INI do diretório do executável, e como não existe, tenta ler o arquivo ACBrNFSeXServicos.res, que também não existe, e acaba gerando o erro

Resource ACBrNFSeXServicos not found

Poderiam reconsiderar essa abordagem de chamar o LerCidades() na criação do componente? Com ela, a configuração ACBrNFSeX.Configuracoes.Arquivos.IniServicos fica sem utilidade, porque não será usada por LerCidades(), que sempre buscará o INI do diretório do executável. Se for indispensável chamar LerCidades() para algum caso, poderiam fazer um overload no constructor, implementando um Create() alternativo que não chame LerCidades()?

Boa tarde!
Lamentamos que tenha ocorrido tal problema! Buscamos sempre manter os fontes do projeto ACBr compatíveis, mas as vezes é inevitável ocorrer alguma quebra.
A princípio a chamada do método LerCidades foi automatizada desta maneira pelo fato de muitos usuários estarem esquecendo de fazer a chamada manual ao método o que acabava acarretando em erros na hora de utilizar o componente.
Está melhoria também foi feita visando tornar o componente mais inteligente e mais próximo do padrão dos outros DFes.

@Italo Giurizzato Junior, por favor, o que acha desta sugestão do usuário?

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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 !!

  • Membros Pro
Postado
36 minutes ago, Diego Foliene said:

Está melhoria também foi feita visando tornar o componente mais inteligente e mais próximo do padrão dos outros DFes.

Obrigado pela rápida resposta Diego!

Sobre manter o padrão dos outros DFe, usamos o ACBrNFe da mesma forma, com o INI em outro diretório (%APP_DIR%\ACBr\NFe\ACBrNFeServicos.ini), e configurando seu caminho após instanciar o componente. E nele não temos esse problema.

Que tal manter o estado de "CidadesLidas" no ACBrNFSeX, e disparar exceção ao usuário, quando tentar usar um método que dependa das cidades, caso não tenha chamado o LerCidades()? A abordagem de chamar um método que dispara exceção no constructor pode acarretar em outros problemas também. Mas entendo a decisão de vocês, de tentar simplificar o processo.

  • Curtir 1

logoDW.png.043cb4b50e3275dc9614c728eb3fa617.png

Guilherme Costa

 

  • Consultores
Postado
30 minutos atrás, DatawebDev disse:

Obrigado pela rápida resposta Diego!

Sobre manter o padrão dos outros DFe, usamos o ACBrNFe da mesma forma, com o INI em outro diretório (%APP_DIR%\ACBr\NFe\ACBrNFeServicos.ini), e configurando seu caminho após instanciar o componente. E nele não temos esse problema.

Que tal manter o estado de "CidadesLidas" no ACBrNFSeX, e disparar exceção ao usuário, quando tentar usar um método que dependa das cidades, caso não tenha chamado o LerCidades()? A abordagem de chamar um método que dispara exceção no constructor pode acarretar em outros problemas também. Mas entendo a decisão de vocês, de tentar simplificar o processo.

A equipe do ACBr está analisando as possibilidades e pensando em possíveis maneiras de melhorar o uso do método, assim que tivermos novidade daremos um retorno aqui.

  • Curtir 1
Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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 !!

  • Este tópico foi criado há 724 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.