Ir para conteúdo
  • Cadastre-se

dev botao

O número de campos informado no registro difere do número de campos especificado no leiaute do arquivo.


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

Recommended Posts

Na validação do arquivo Sped Fiscal está apresentando erro de leiaute:

No registro E310 era pra ser gerado 14 campos e está sendo gerado 22. 

O erro está na unit "ACBrEFDBloco_E_Class" linha 1060. Não pode comparar a data atual para gerar os registros E310 novos e sim a data final do período informado.

* Código antigo: if (Date <= EncodeDate(2016, 12, 31)) then begin

* Código correto: if (DT_FIN <= EncodeDate(2016, 12, 31)) then begin

 

Por favor corrijam.

Valter Patrick

Gerente de Projetos na empresa CTEC

(33)98400-0936

GitHub: https://github.com/valterpatrick

Link para o comentário
Compartilhar em outros sites

  • Consultores

Por favor, anexe o arquivo alterado.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

15 horas atrás, Juliomar Marchetti disse:

Boa tarde

está no svn a correção

 

Pessoal, o campo DT_FIN é do tipo TDateTime, dessa forma ao gerar o arquivo ele vai cair no else e gerar o arquivo com 22 campos. Em vez de usar EncodeDate, deve ser usado EncodeDateTime. Pra gerar com 14 campos deve ser feita a seguinte alteração:

*Código incorreto: if (DT_FIN <= EncodeDate(2016, 12, 31)) then begin

 *Código correto: if (DT_FIN <= EncodeDateTime(2016, 12, 31, 23, 59, 59, 999)) then begin

Pelo menos foi dessa forma que consegui gerar corretamente aqui. Segue o arquivo com a correção.

ACBrEFDBloco_E_Class.pas

Link para o comentário
Compartilhar em outros sites

  • Moderadores

O correto seria a gente gerar ele como TDate certo?

acho que vou passar revendo pois não é necessário a hora em diversos e assim fica correto.

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
Em 05/01/2017 at 14:25, Ubirajara disse:

Ok. Fico no aguardo. Obrigado.

Boa tarde

Tente aplicar a mudança sugerida em seu código, recompilar os componentes e gerar o sped pra ver se ele vai ficar ok!

pois não tenho nada gerando hoje o sped pra testar.

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

16 horas atrás, Juliomar Marchetti disse:

Boa tarde

Tente aplicar a mudança sugerida em seu código, recompilar os componentes e gerar o sped pra ver se ele vai ficar ok!

pois não tenho nada gerando hoje o sped pra testar.

Juliomar, bom dia.

Fazendo a compilação com o arquivo que postei acima a geração fica OK. Ele entra no IF onde tem que gerar o registro com 14 campos e assim o faz. Da outra forma ele cai no else por causa da comparação da string gerada pela data e gera o registro com 22 campos. Eu vou gerar aqui assim e aguardo por updates no svn.

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution

Boa tarde

 o  erro está porque você está passando a data e a hora para o campo!

passe somente a data ou se passa um campo do banco onde tem as duas informações informe tipo

DT_FIN := DateOf(fieldata.value);

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Juliomar Marchetti disse:

Boa tarde

 o  erro está porque você está passando a data e a hora para o campo!

passe somente a data ou se passa um campo do banco onde tem as duas informações informe tipo

DT_FIN := DateOf(fieldata.value);

Fiz dessa forma no DT_FIN do bloco 0 e funcionou. Muito obrigado.

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Moderadores
2 horas atrás, Guilherme Lourenço disse:

Bom dia!

Onde corrijo essas informações 

 

*Código incorreto: if (DT_FIN <= EncodeDate(2016, 12, 31)) then begin

 *Código correto: if (DT_FIN <= EncodeDateTime(2016, 12, 31, 23, 59, 59, 999)) then begin

No próprio arquivo?

Boa tarde

você está informando errado se tu está precisando passar até mesmo a hora minutos e segundos!

o campo é somente para Data! 

se tu passa .AsDateTime coloque um DateOf( ) 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

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