Ir para conteúdo
  • Cadastre-se

marcelo_sp

Membros
  • Total de ítens

    579
  • Registro em

  • Última visita

  • Days Won

    7

Tudo que marcelo_sp postou

  1. try ..escolha do certificado... "Não resolve ??" except end ;
  2. Se não testou , tente tbm isso : No Internet Explorer vai em Ferramentas/Opções da Internet/Avançada e desmarque as opções abaixo : Verificar se ha revogacao de certificado do editor Verificar se ha revogacao de certificado do servidor Verificar se ha assinatura em programas baixados
  3. Antes de dar open na IBQuery , altere as Propriedades : IBQuery1.BufferChunks := 100 ; // Defaut = 1000 , coloque 100 IBQuery1.Unidirectional := True ; // Defaut = False , coloque True Com isso vai resolver o seu problema ! Obs : Coloque Tópico como Resolvido neste e os demais que resolveu !
  4. Tive um problema similar e pensei que fosse no componente ACBrSpedFiscal , mas depois de inumeros Debug's e testar debug com arquivos com 300 mil linhas , imagina ! pois com poucas linhas não dava erro algum . Acabei encontrando o bug em outro módulo do aplicativo como espliquei no topico em questão desta semana . Uma pergunta , qual Banco de dados e quais componentes de acesso a base vc esta usando ? Se for firebird com componentes Interbase , tem um bug no componente IBQuery para retorno de muitos registros !
  5. Apos o Ctrl + M Apuração , valide novamente o arquivo , pronto ! Obs : Apos a apuracao , o PVA não permite mais alteraçoes na escrituração !
  6. Bloco 1 sempre foi obrigatório , mas nas versões anteriores ele só advertia, agora o bloco 1 é de preenchimento obrigatório , como vc não exportou o registro 1010 , neste caso clique em Não se Aplica e coloque N ou S nas opções e salve , caso seja S , vc tera que preencher o Devido Registro correspondente , apos peça pra validar novamente que o erro desaparece . REGISTRO 1010: OBRIGATORIEDADE DE REGISTROS DO BLOCO 1 Este registro deverá ser apresentado por todos os contribuintes. Caso a resposta seja “S”, o contribuinte está obrigado à apresentação do registro respectivo. Se houver dispensa de apresentação do registro pela unidade federada, a resposta para o campo específico do registro deverá ser “N”. veja : http://www1.receita.fazenda.gov.br/sistemas/sped-fiscal/download/GUIA_PRATICO_DA_EFD_Versao_2.0.11.pdf
  7. ricksarre , vc pode utilizar a função Trunc do Object Pascal ! Derrepente vc pode ter que truncar em outras ocasiões , não só no ECF . vc vai precisar ter um parametro no ini do seu sistema exemplo : Trunca_Arredonda=0 ( 0=Trunca , 1=Arredonda ) , tem que flexibilizar pra vc ter as duas opções no seu sistema pra quando precisar em Devices diferentes . Exemplo 1 = http://www.planetadelphi.com.br/dica/624/truncando-valores-reais-para-apenas-n-casas-decimais Exemplo 2 = http://www.resumoti.com.br/?p=136 ...entre outros do Google .
  8. marcelo_sp

    Acbrecf

    A atribuição não é o inverso não manu ? Vc está novamente atribuindo valores para as variaveis , somente o baud vc fez correto . faz assim : procedure TForm1.Button2Click(Sender: TObject); begin ateconfig; acbrecf1.Porta := P ; acbrecf1.ModeloStr := M ; ACBRECF1.Device.Baud :=StrToInt( ; end ;
  9. Vc atualizou a cadeia de Certificados no WinXp SP3 ? Se não atualizou , estou disponibilizando ! Após instalação reinicie o Computador !
  10. O Isaque , com certeza , estamos juntos ! Abraço .
  11. Qual UF ? Em SP tbm estava com esse problema , acabei de testar neste instante em Homologação e no momento está normal o horário atual do PC com o horário do Sefaz , não retornou erro algum pra CAn ! Mas ha 1 ou 2 meses atraz tive que adaptar uma função para ajustar o horário em 2 horas de atrazo e funcionava normal para poder estar enviando Eventos CAn , CCe "Em SP"... , fiz uma função porque ficava mais facil de corrigir na aplicação tá ! Segue exemplo : uses DateUtils ; Function TFrmPrincipal.Pega_Horario_Verao : TDateTime ; var Data_Hora_Evento : TDateTime ; begin Data_Hora_Evento := Now ; Data_Hora_Evento := IncHour( Data_Hora_Evento , - 2 ) ; Result := Data_Hora_Evento ; end ; pra utilizar : .... infEvento.dhEvento := FrmPrincipal.Pega_Horario_Verao ;
  12. Sequência Hierárquica Registros de ECF do Sped Fiscal : C400 = Hierárquia - 2 - Filho do C001 C405 = Hierárquia - 3 - Filho do C400 C410 = Hierárquia - 4 - Filho do C405 C420 = Hierárquia - 4 - Filho do C405 C425 = Hierárquia - 5 - Filho do C420 C460 = Hierárquia - 4 - Filho do C405 C470 = Hierárquia - 5 - Filho do C460 C490 = Hierárquia - 4 - Filho do C405 C495 = Hierárquia - 2 - Filho do C001
  13. Daniel e demais colegas , estou dando o feed back aqui e comunicando que o problema acima reportado no inicio do tópico "Out Of Memory" "Não foi gerado pelo Componente ACBRSpedFiscal" por coincidencia foi um erro semelhante que tbm era gerado no componente mas que vós tratou com a concomitancia . Como estamos trabalhando tbm para geração de arquivos para Contimatic G5 , Folhamatic e Mastermaq , com alguns TStringList... dinamicos dentro da aplicação e algumas treeds... e tal , depois de inumeros testes verificamos que um desses componentes era alimentado e chegava ao resultado "Out Of Memory" . Pedimos desculpas pelo transtorno e grato pela atenção dispensada .
  14. Daniel , em uma das tentativas aqui efetuadas eu comentei o RegC001.RegistroC400.Clear; e o componente gerou mais de Dois milhões de linhas rapidinho sem nenhum erro e eu anexei o comando ACBrSPEDFiscal1.WriteBloco_C(False) ao termino do C470 onde eu quero o comando , rodou blz , é claro que duplicando registros , pois sem o clear o componente só agrega itens ao C400 e nunca limpa , mas acho que pode ser o caminho .
  15. Estou sim Jeferson , a sequencia esta correta como no manual de integração e tbm Demo ; oque acontece com os registros C400 ... é que eu não consigo concomitar como nos Registros C170 com o comando ACBrSPEDFiscal1.WriteBloco_C(False) , quando dou esse comando o erro "List index out of bounds" aparece ao proximo New de qualquer sequencia C405 , C460 C470 , ou seja , só consigo dar ACBrSPEDFiscal1.WriteBloco_C(False) ao iniciar o New do próximo looping do registro C400 with RegistroC400New do , isso se da porque o componente da um Clear na list inteira C400... fiz oque o Daniel pediu Write , WriteBuffer mas não deu certo , no Demo tbm não posso efetuar o comando ACBrSPEDFiscal1.WriteBloco_C(False) antes de terminar o C400 completo !
  16. Bom... Tentei colocar concomitancia = ACBrSPEDFiscal1.WriteBloco_C(False) no looping entre os registros C400 , C405 , C460 , C470 ... sem sucesso , dando o erro acima citado , amanhã estarei fazendo mais um debug pra ver se encontro onde está gerando o bug , a principio fica novamente onde está o erro que ao dar o write entre os registros C400...etc , gera-se o erro abaixo : function TBloco_C.RegistroC460New: TRegistroC460; var C400Count: integer; C405Count: integer; begin C400Count := FRegistroC001.RegistroC400.Count -1; C405Count := FRegistroC001.RegistroC400.Items[C400Count].RegistroC405.Count -1; // Erro Aqui no segundo looping após Write... // Result := FRegistroC001.RegistroC400.Items[C400Count].RegistroC405.Items[C405Count].RegistroC460.New; end; até .
  17. Não sei se eu estou fazendo coisa errada , me perdoem se for mas , vou resumir , acima ta meio zuado : 1º Nos registros C100 , C170 esta perfeito , sem nenhum erro . Estou fazendo assim para os C460 e filho C470 : while Cupons do // no segundo looping da o erro "List index out of bounds" , somente após quando ACBrSPEDFiscal1.WriteBloco_C(False) ; begin with RegistroC460New do begin ...Item do C460 with RegistroC470New do begin ...Itens do C470 , varios itens end ; end ; ACBrSPEDFiscal1.WriteBloco_C(False) ; end ; Nesta função da o erro : function TBloco_C.RegistroC460New: TRegistroC460; var C400Count: integer; C405Count: integer; begin C400Count := FRegistroC001.RegistroC400.Count -1; C405Count := FRegistroC001.RegistroC400.Items[C400Count].RegistroC405.Count -1; // Erro Aqui no segundo looping após Write... // Result := FRegistroC001.RegistroC400.Items[C400Count].RegistroC405.Items[C405Count].RegistroC460.New; end;
  18. Olhe , coloquei pra ser escrito a cada C460 após os filhos C470 anexados ele escrever , Só que o primeiro looping vai blz e no Segundo gera exceção "List index out of bounds" : // C460: DOCUMENTO FISCAL EMITIDO POR ECF (CÓDIGO 02 e 2D). if Bloco_0.Registro0000.IND_PERFIL <> pfPerfilB then begin QryRegistro_C460.Close ; QryRegistro_C460.SQL.Clear ; QryRegistro_C460.SQL.Text := 'SELECT CF.COD_CUPOM_FISCAL , '+ 'CF.NUMERO_SERIE_ECF , '+ 'CF.NUMERO_ECF , '+ 'CF.COO , '+ 'CF.DATA , '+ 'CF.NUMERO_PDV , '+ 'CF.CNPJ_CPF_CLIENTE , '+ 'CF.VALOR , '+ 'SUM(CF_ITENS.PIS_VALOR)AS VALOR_PIS , '+ 'SUM(CF_ITENS.COFINS_VALOR)AS VALOR_COFINS '+ 'FROM '+ 'CADASTRO_CF_ITENS CF_ITENS '+ 'INNER JOIN CADASTRO_CF_GERAL CF ON ( CF.COD_CUPOM_FISCAL = CF_ITENS.COD_CUPOM_FISCAL ) '+ 'Where CF.NUMERO_SERIE_ECF=:NUMERO_SERIE_ECF and CF.DATA=:DATA '+ 'GROUP BY '+ 'CF.COD_CUPOM_FISCAL, '+ 'CF.NUMERO_SERIE_ECF, '+ 'CF.NUMERO_ECF, '+ 'CF.COO , '+ 'CF.DATA , '+ 'CF.NUMERO_PDV , '+ 'CF.CNPJ_CPF_CLIENTE , '+ 'CF.VALOR '+ 'Order By CF.COO asc' ; QryRegistro_C460.ParamByName('NUMERO_SERIE_ECF').AsString := QryECFs.FieldByName('NUMERO_SERIE_ECF').AsString ; QryRegistro_C460.ParamByName('DATA').AsDate := QryECFReducao_Z.FieldByName('DATA_FECHAMENTO').AsDateTime ; QryRegistro_C460.Prepare ; QryRegistro_C460.Open ; while not QryRegistro_C460.Eof do // Aqui da o erro - "List index out of bounds" no segundo looping após o ACBrSPEDFiscal1.WriteBloco_C(False) ; begin with RegistroC460New do begin COD_MOD := QryECFReducao_Z.FieldByName('MODELO_DOC').AsString ; COD_SIT := sdRegular ; NUM_DOC := QryRegistro_C460.fieldbyname('COO').AsString ; DT_DOC := QryRegistro_C460.fieldbyname('DATA').AsDateTime ; VL_DOC := QryRegistro_C460.fieldbyname('VALOR').AsFloat ; VL_PIS := QryRegistro_C460.fieldbyname('VALOR_PIS').AsFloat ; VL_COFINS := QryRegistro_C460.fieldbyname('VALOR_COFINS').AsFloat ; if (Length(QryRegistro_C460.fieldbyname('CNPJ_CPF_CLIENTE').AsString) = 11) or (Length(QryRegistro_C460.fieldbyname('CNPJ_CPF_CLIENTE').AsString) = 14) then begin CPF_CNPJ := QryRegistro_C460.fieldbyname('CNPJ_CPF_CLIENTE').AsString ; NOM_ADQ := 'Cliente Cadastrado : '+ CPF_CNPJ ; end ; // C470: ITENS DO DOCUMENTO FISCAL EMITIDO POR ECF (CÓDIGO 02 e 2D). QryRegistro_C470.Close ; QryRegistro_C470.SQL.Clear ; QryRegistro_C470.SQL.Text := 'Select * From CADASTRO_CF_ITENS ' + 'Where NUMERO_SERIE_ECF=:NUMERO_SERIE_ECF and COO=:COO '+ 'Order By ITEM asc' ; QryRegistro_C470.ParamByName('NUMERO_SERIE_ECF').AsString := QryRegistro_C460.fieldbyname('NUMERO_SERIE_ECF').AsString ; QryRegistro_C470.ParamByName('COO').AsString := QryRegistro_C460.fieldbyname('COO').AsString ; QryRegistro_C470.Prepare ; QryRegistro_C470.Open ; while not QryRegistro_C470.Eof do begin with RegistroC470New do begin application.ProcessMessages ; COD_ITEM := QryRegistro_C470.fieldbyname('CODIGO').AsString ; QTD := QryRegistro_C470.fieldbyname('QUANTIDADE').AsFloat ; QTD_CANC := 0 ; UNID := QryRegistro_C470.fieldbyname('UNIDADE').AsString ; VL_ITEM := QryRegistro_C470.fieldbyname('TOTAL').AsFloat ; CST_ICMS := QryRegistro_C470.fieldbyname('ICMS_CST').AsString ; CFOP := QryRegistro_C470.fieldbyname('CFOP').AsString ; ALIQ_ICMS := QryRegistro_C470.fieldbyname('ICMS_PERCENTUAL').AsFloat ; VL_PIS := QryRegistro_C470.fieldbyname('PIS_VALOR').AsFloat ; VL_COFINS := QryRegistro_C470.fieldbyname('COFINS_VALOR').AsFloat ; // TAG's Adicionais para registro C470 Formato = ( Contimatic Phoenix G5 ) if Radio_Contimatic_G5.Checked = True Then begin C470_CST_PIS := QryRegistro_C470.FieldByName('PIS_CST').AsString ; C470_NAT_REC_PIS := '' ; C470_VL_BC_PIS := FormatFloat('0.00',QryRegistro_C470.FieldByName('PIS_BC').AsFloat) ; C470_ALIQ_PIS := FormatFloat('0.00',QryRegistro_C470.FieldByName('PIS_PERCENTUAL').AsFloat) ; C470_QUANT_BC_PIS := '' ; C470_ALIQ_PIS_QUANT := '' ; C470_CST_COFINS := QryRegistro_C470.FieldByName('COFINS_CST').AsString ; C470_NAT_REC_COFINS := '' ; C470_VL_BC_COFINS := FormatFloat('0.00',QryRegistro_C470.FieldByName('COFINS_BC').AsFloat) ; C470_ALIQ_COFINS := FormatFloat('0.00',QryRegistro_C470.FieldByName('COFINS_PERCENTUAL').AsFloat) ; C470_QUANT_BC_COFINS := '' ; C470_ALIQ_COFINS_QUANT := '' ; C470_COD_CTA := '' ; C470_IND_MOV := '' ; Arquivo_Temp_C470.Add( '|' + C470_CST_PIS + '|' + C470_NAT_REC_PIS + '|' + C470_VL_BC_PIS + '|' + C470_ALIQ_PIS + '|' + C470_QUANT_BC_PIS + '|' + C470_ALIQ_PIS_QUANT + '|' + C470_CST_COFINS + '|' + C470_NAT_REC_COFINS + '|' + C470_VL_BC_COFINS + '|' + C470_ALIQ_COFINS + '|' + C470_QUANT_BC_COFINS + '|' + C470_ALIQ_COFINS_QUANT + '|' + C470_COD_CTA + '|' + C470_IND_MOV ); end ; // TAG's Adicionais para registro C470 Formato = ( Contimatic Phoenix G5 ) end ; QryRegistro_C470.Next ; end ; ACBrSPEDFiscal1.WriteBloco_C(False) ; Application.ProcessMessages ; end ; // with RegistroC460New do QryRegistro_C460.Next ; end ; // while not QryRegistro_C460.Eof do
  19. Daniel . Estou debugando com o Ricardo "designerba" esse SpedFiscal e ta meio osso , o sped em questão tem umas 300 mil linhas aproximadamente , é grande , e o erro só ocorre quando muitas linhas mesmo ! Estamos Gerando os registros do bloco-0 e bloco-C... Oque se percebe é que os Registros do bloco-0 e os registros C100 e C170 , são muito rapido para gerar , coisa de segundos para 30 mil registros , agora para os registros C400... de ECF , em especial o C460 e C470 é onde ocorre o problema , começa a demora , fica parecendo amarrado e quando estão na casa dos 70 mil registros o erro é apresentado "Out of Memory" . 1-Após o C100 e Filhos... dou um = ACBrSPEDFiscal1.WriteBloco_C(False) ; 2-E a cada C400... dou um ACBrSPEDFiscal1.WriteBloco_C(False) ; 3-E por final... dou um = ACBrSPEDFiscal1.WriteBloco_C(True) ; // Fecho Só que com este movimento grande não consigo chegar a realizar a condição 3 acima citada pois fica preso no except "Out of Memory" dentro dos registro C460 e C470 , agora não sei onde em que linha ao certo , estou estudando a estrutura do componente , Daniel por gentileza , caso encontre algo que possa ajudar , ficamos muito grato ! enquanto isso vou vendo aqui pra ver se vejo algo ! no inicio da geração estamos iniciando como no Demo , assim : with ACBrSpedFiscal1 do begin DT_INI := DataInicial ; DT_FIN := DataFinal ; Path := '.\'; Arquivo := SaveDialog1.FileName ; LinhasBuffer := 1000 ; IniciaGeracao ; end ;
  20. Alem do modelo , existe tbm outras propriedades do ACBrECF que se deve parametrizar como , porta de comunicação , velocidade de porta , etc... , vc parametriza e depois ativa o componente , veja como funciona o Demo do ACBrECF que se encontra na pasta exemplo do ACBr !
  21. Daniel , este arquivo que anexei descompactado do ACBrECF.log tem 12-MB , é de um ECF Sweda ST120 com movimento até Hoje 24-01 por volta das 18 hrs , não estou tendo nenhum problema tá ! , só achei interessante postar para vc ou algum colega que quizer comparar e tbm acompanhar se consegue achar alguma situação estranha neste Log ! blz ! . Este ECF ha uma ou duas semanas atraz teve um problema na placa , ele alterava a Data para 2029 , o defeito fisico gerado no ECF foi problemas com queda de energia , nada do mencionado que segue em questão neste tópico .
  22. Um problema grave que enfrento hj foi descontinuação da Microsoft para desenvolvimento Windows Mobile do VS 2010.. em diante , tenho que ter um VS 2008 para suprir alguns clientes que tem PDA's com essa plataforma e os Clientes não querem substituir os aparelhos pra não gerar custo , e outro VS 2012 para novas versões de aplicativos para Windows Phone... ! Ai vc fala pro Cliente "Mas não tem mais desses PDA's , vc não acha pra comprar !!!" Bicho , os cara aparece com uma caixa cheia não sei da onde acha véio ! , Vai brigar com Cliente de que jeito !!! enquanto tiver essa zica tem que aguentar os cara , fazer oque ! Se o Rad Studio saisse com uma versão para tbm Deploy Nativo para Device com Windows Mobile seria mais doque um sonho ! pois mesmo com a novidade Windows 8 RT ... ainda se ve muitos PDA's em negociação no mercado com essa Plataforma ( Windows Mobile ) , não sei se importado mas existe , os Clientes acham !
  23. Então , em subtotalização , pagamento , nunca tive nenhum bug reportado por nenhum cliente , claro que tbm existe consistencias para efetuar a sequencia de cada comando antes de efetuar o Comando seguinte para o ECF para então efetuar o loop , ou seja , não deixo executar o Pagamento se o ECF não Subtotalizado , e por ai vai ... verificar sempre o Estado do ECF é sempre bacana ! algumas variaveis booleanas é uma mão na roda para alguns tipos de consistencias . Utilizo hj o ACBrECF por completo na minha AC , mas utilizei por muito tempo as Dlls sersweda e swecf e na época tbm utiliza a mesma estratégia de hj com o ACBrECF !
  24. TimeOut: 3 é muito pouco pra Sweda , aumente ! tenta colocar 30 . mas... Daniel , verificando meus fontes , talvez seja isso que não consigo detectar erros nos comandos que os cara comenta , preciso ver um log pra ver se isso acontece comigo tbm , tenho uns 30 clientes que utiliza Sweda e não consigo detectar isso ; Utilizo try except quando mando comando pro ecf esta mais ou menos assim : Tentativa : integer ; Ok : Boolean ; begin Tentativa := 1 ; Ok := False ; While Ok = False do begin try Ok := True ; AcbrECf.... // Todos os Comandos do Acbr estão assim ... except Sleep(30) ; Ok := False ; if Tentativa > 10 Then // Só se Except 10 vezes para pedir para Vazar do Sistema que bichou tudo ! begin Application.MessageBox(Problemas no ECF , Contate o Administrador do Sistema !','I N F O R M A Ç Ã O',mb_ok + mb_iconerror); // Vaza aqui ; end ; inc(Tentativa) ; end ; end ; end ; é isso .
  25. Evandro , é ai que ta o pulo do gato do VS quando vc diz " desenvolvido um aplicativo comercial nele, as chances são mínimas de uma migração futura " , discordo ! , Segundo o pluguin da Xamarin no VS existe um mecanismo de change plataform onde a sua aplicação desenvolvida em C# ou .net para Windows... , vc abre o seu fonte e da um deploy diretamente para outra plataforma móvel , parece magica , por exemplo no proprio Android ! Como disse não testei ainda por falta de tempo , a Xamarin fornece o pluguin trial para desenvolvimento , estarei testando essa parafernalha como Emuladores coisa e tal e assim que puder posto o feed back!
×
×
  • 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.