CRIAR TXT CONFORME ESPECIFICACOES TECNICAS
Boa noite.
Acho que alguns de vocês conhecem aquele software da secretaria da fazenda, o PER/DCOMP. Não sei muito bem para que serve, mas sei que é importante :D
Estou escrevendo um programinha para criar um arquivo de texto com informações de uma planilha e depois importar este arquivo de texto para o PER/DCOMP. Antes de importar o arquivo de texto é necessário que ele seja criado com algumas especificações.
A minha dúvida é exatamente sobre essas especificações. Na ajuda do sistema tem algumas explicações. Por exemplo:
Alguém pode me dar uma ajuda sobre o que significam essas especificações?
Existem várias, mas sabendo o que significam essas já dá para ter uma noção.
[ ]'s
Acho que alguns de vocês conhecem aquele software da secretaria da fazenda, o PER/DCOMP. Não sei muito bem para que serve, mas sei que é importante :D
Estou escrevendo um programinha para criar um arquivo de texto com informações de uma planilha e depois importar este arquivo de texto para o PER/DCOMP. Antes de importar o arquivo de texto é necessário que ele seja criado com algumas especificações.
A minha dúvida é exatamente sobre essas especificações. Na ajuda do sistema tem algumas explicações. Por exemplo:
Organização: Seqüencial ASCII de Hex 20 a Hex 7E;
Delimitadores de campos - ponto e virgula [Ô];[Ô] : (hex 3B)
Delimitadores de registro (EOL): Hex 0D + Hex 0A.
Finalizador de Arquivo (EOF): Hex 1A, opcional;
Alguém pode me dar uma ajuda sobre o que significam essas especificações?
Existem várias, mas sabendo o que significam essas já dá para ter uma noção.
[ ]'s
Organizacional: caracter 32 a 126
[ESPAÇO] -!-[Ô]-#-$-%-&-[ô]-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-'-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~
o Delimitador é para criar o arquivo de texto...
RODOLFO DA CRUZ GOMES;24;RIO DE JANEIRO;NOVA IGUAÇU;BRASIL
POIROREW WQ OPEID XYUIA;24;RIO DE JANEIRO;NOVA IGUAÇU;BRASIL
ETC.. no caso isso deverá ser montado por um processo final..que vai colher de todos os campos;
pq basta concactenar o Ponto e vÃrgula entre os campos..na hora da [ô]coleta[ô]
de todo modo, deverá saber se o arquivo é delimitado..por exemplo o campo nome tem q ter 35 caracteres ou seja o nome (maria de amaral - possui 15 caracteres o restante deverá ser preenchido com zero.. ficaria no arquivo maria de amaral000000000000000;) e assim vai ;;;;;;;
espero ter ajudado;
[ESPAÇO] -!-[Ô]-#-$-%-&-[ô]-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-'-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~
o Delimitador é para criar o arquivo de texto...
RODOLFO DA CRUZ GOMES;24;RIO DE JANEIRO;NOVA IGUAÇU;BRASIL
POIROREW WQ OPEID XYUIA;24;RIO DE JANEIRO;NOVA IGUAÇU;BRASIL
ETC.. no caso isso deverá ser montado por um processo final..que vai colher de todos os campos;
pq basta concactenar o Ponto e vÃrgula entre os campos..na hora da [ô]coleta[ô]
de todo modo, deverá saber se o arquivo é delimitado..por exemplo o campo nome tem q ter 35 caracteres ou seja o nome (maria de amaral - possui 15 caracteres o restante deverá ser preenchido com zero.. ficaria no arquivo maria de amaral000000000000000;) e assim vai ;;;;;;;
espero ter ajudado;
Bom dia Srs!
Entendi quase tudo.
Só mais uma dúvida:
Na parte que fala sobre [Ô]delimitador de registro[Ô] que seria Hex 0D + Hex 0A (ou chr(13) + chr(10)), entendi que serve para delimitar um registro do outro, ou seja, uma linha da outra.
Mas eu não usei conforme essa especificação. Simplesmente mandei escrever uma nova linha no arquivo de texto e deu tudo certo no final.
Ou seja, a o final de cada linha inserida eu não coloquei os caracteres Hex 0D + Hex 0A.
Até onde eu sei:
Hex 0D = Chr(13) = ENTER
e
Hex 0A = Chr(10) = LF ou NF = Nova Linha
logo,
Hex 0D + Hex 0A = EOL (end of line)
Estou usando FSO para criar e escrever arquivos de texto. Acho que a a propriedade WriteLine, usada para inserir uma nova linha, já deve inserir no inÃcio da nova linha o EOL (end of line) é composto por Chr(13) + Chr(10) ou Hex 0D + Hex 0A.
Pergunto isso porque são informações que irão para a receita federal. E tenho receio de que vá dar algum problema quando a receita for utilizar os dados lá em seus sistemas internos se eles não estiverem formatados exatamente como manda a especificação.
Por outro lado, a importação do arquivo txt gerado pelo meu programa para dentro do programa da receita PER/DCOMP ocorreu sem problemas. Isto já seria uma garantia de formatação conforme a especificação?
[ ]'s
Entendi quase tudo.
Só mais uma dúvida:
Na parte que fala sobre [Ô]delimitador de registro[Ô] que seria Hex 0D + Hex 0A (ou chr(13) + chr(10)), entendi que serve para delimitar um registro do outro, ou seja, uma linha da outra.
Mas eu não usei conforme essa especificação. Simplesmente mandei escrever uma nova linha no arquivo de texto e deu tudo certo no final.
Ou seja, a o final de cada linha inserida eu não coloquei os caracteres Hex 0D + Hex 0A.
Até onde eu sei:
Hex 0D = Chr(13) = ENTER
e
Hex 0A = Chr(10) = LF ou NF = Nova Linha
logo,
Hex 0D + Hex 0A = EOL (end of line)
Estou usando FSO para criar e escrever arquivos de texto. Acho que a a propriedade WriteLine, usada para inserir uma nova linha, já deve inserir no inÃcio da nova linha o EOL (end of line) é composto por Chr(13) + Chr(10) ou Hex 0D + Hex 0A.
Pergunto isso porque são informações que irão para a receita federal. E tenho receio de que vá dar algum problema quando a receita for utilizar os dados lá em seus sistemas internos se eles não estiverem formatados exatamente como manda a especificação.
Por outro lado, a importação do arquivo txt gerado pelo meu programa para dentro do programa da receita PER/DCOMP ocorreu sem problemas. Isto já seria uma garantia de formatação conforme a especificação?
[ ]'s
Amigo, os caracteres 0D e 0A, são nada menos que a variável pública VbNewLine; O delimitador [Ô]ponto-e-vÃrgula[Ô] é o mais comum para delimitação e o ^Z no final como já disseram é automático, então:
Open [Ô]C:\pasta\Arquivo.csv[Ô] for output as #1
Print [Ô]Campo1[Ô] & [Ô];[Ô] & [Ô]Campo2[Ô] & [Ô];[Ô] & [Ô]Campo3[Ô] & [Ô];[Ô] & VbNewLine, #1
Close #1
O código acima, geraria um arquivo exatamente nessas especificações...
Open [Ô]C:\pasta\Arquivo.csv[Ô] for output as #1
Print [Ô]Campo1[Ô] & [Ô];[Ô] & [Ô]Campo2[Ô] & [Ô];[Ô] & [Ô]Campo3[Ô] & [Ô];[Ô] & VbNewLine, #1
Close #1
O código acima, geraria um arquivo exatamente nessas especificações...
Citação:Por outro lado, a importação do arquivo txt gerado pelo meu programa para dentro do programa da receita PER/DCOMP ocorreu sem problemas. Isto já seria uma garantia de formatação conforme a especificação?
FBUR -> Sim, partindo do principio que esses arquivos recebem um baita tratamento e podem ser validados ou não..se ele passou no processo de validação do site em questão...é bem possivel que esteja correto...
mais vale dar mais uma olhada...
por exemplo aqui na empresa enviamos arquivos para uma empresa alemã...se meu arquivo estiver com 1 virgula errada todo o arquivo e julgado invalido...mas não que eles não poderiam recursar..eles até pegariam as informações mais..é melhor invalidar..pra nao dar jeitinho no arquivo...
enfim FBUR acho q vc esta no caminho..basta fazer alguns testes pra saber o q pode encrencar...abraçosss
Olá pessoal,
Me registrei no fórum só por causa desse tópico.
FBUR, vc disse que estava conseguindo [Ô]exportar[Ô] os dados do TXT para o Perdcomp. Pois é, eu não estou conseguindo de jeito nenhum.
O programa da Receita fala que tem um [Ô]Campo com valor inválido[Ô]. Estou editando o TXT manualmente, então acho que não estou fazendo na formatação certinha.
Uma linha do meu TXT tá assim (cnpj;ano e mês; nf de ex; série da nf; data da nf; valor da ex; num re):
xxxxxxxxxxxxxx;201010;83;1;13/10/2010;67927;101455374001
Tem alguma coisa errada nisso ai?
Valeu pela força!
Me registrei no fórum só por causa desse tópico.
FBUR, vc disse que estava conseguindo [Ô]exportar[Ô] os dados do TXT para o Perdcomp. Pois é, eu não estou conseguindo de jeito nenhum.
O programa da Receita fala que tem um [Ô]Campo com valor inválido[Ô]. Estou editando o TXT manualmente, então acho que não estou fazendo na formatação certinha.
Uma linha do meu TXT tá assim (cnpj;ano e mês; nf de ex; série da nf; data da nf; valor da ex; num re):
xxxxxxxxxxxxxx;201010;83;1;13/10/2010;67927;101455374001
Tem alguma coisa errada nisso ai?
Valeu pela força!
Uhul!!!
Pessoal, pode deixar!
Resolvi aqui.
Para constar:
Não se pode fazer esse TXT com o bloco de notas, igual eu tava fazendo. Tem-se que preparar a planilha, salvar como csv, estipular a forma de divisão dos campos, depois abrir com o bloco de notas e salvar como txt. Ai sim funciona perfeito.
Valeu pessoal!
Pessoal, pode deixar!
Resolvi aqui.
Para constar:
Não se pode fazer esse TXT com o bloco de notas, igual eu tava fazendo. Tem-se que preparar a planilha, salvar como csv, estipular a forma de divisão dos campos, depois abrir com o bloco de notas e salvar como txt. Ai sim funciona perfeito.
Valeu pessoal!
Galera, muito obrigado pelas informações.
Caro MYNAMEISONE
Este é meu receio. No entanto, como eu primeiro devo importar o meu TXT para dentro de um software que já é do governo (PER/DCOMP), creio que ele faz as verificações necessárias para validar o arquivo antes de efetivar a importação. Depois, ainda dentro do PER/DCOMP, existe uma opção para a geração do arquivo que irá para a receita. Creio que não iremos ter problemas. Obrigado por compartilhar seu exemplo!
Caro DUDUMORAES,
Quando eu gero o meu TXT, gero direto pelo VB. Eu não precisei criar uma planilha e salvá-la em CSV assim como vc fez.
No seu exemplo, parece falta uma vÃrgula no valor 67927. O que poderia ser 67927,00 ou 679,27. Acho que é por isso que o sistema não importou. O restante parece estar dentro da formatação.
Para gerar o meu TXT eu segui a ajuda do programa PER/DCOMP. Lá tem instruções para a geração de arquivos, explicando os formatos dos campos. De qualquer forma vale a pena dar uma lida na ajuda [Ô]Instruções de Importação[Ô].
[ ]'s
Caro MYNAMEISONE
Este é meu receio. No entanto, como eu primeiro devo importar o meu TXT para dentro de um software que já é do governo (PER/DCOMP), creio que ele faz as verificações necessárias para validar o arquivo antes de efetivar a importação. Depois, ainda dentro do PER/DCOMP, existe uma opção para a geração do arquivo que irá para a receita. Creio que não iremos ter problemas. Obrigado por compartilhar seu exemplo!
Caro DUDUMORAES,
Quando eu gero o meu TXT, gero direto pelo VB. Eu não precisei criar uma planilha e salvá-la em CSV assim como vc fez.
No seu exemplo, parece falta uma vÃrgula no valor 67927. O que poderia ser 67927,00 ou 679,27. Acho que é por isso que o sistema não importou. O restante parece estar dentro da formatação.
Uma linha do meu TXT tá assim (cnpj;ano e mês; nf de ex; série da nf; data da nf; valor da ex; num re):
xxxxxxxxxxxxxx;201010;83;1;13/10/2010;67927;101455374001
Para gerar o meu TXT eu segui a ajuda do programa PER/DCOMP. Lá tem instruções para a geração de arquivos, explicando os formatos dos campos. De qualquer forma vale a pena dar uma lida na ajuda [Ô]Instruções de Importação[Ô].
[ ]'s
Tópico encerrado , respostas não são mais permitidas