Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Galera, estou com um problema para validar o xml em anexo, está dando a seguinte mensagem:

Validate failed because the document does not contain exactly one root node.

Alguém tem ideia do que seja? já comparei o xml com outro semelhante que foi autorizado e não consegui verificar alguma diferença de estrutura ou algo que possa atrapalhar.

- Sou desenvolvedor.

- De que linguagem, delphi? .NET? Java?

- Qualquer uma, sou desenvolvedor.

Postado

Galera achei o erro, só não posso corrigir agora no componente, se alguém se propor:

Não pode ter nenhum dado com o conteúdo "%rodo%", no caso do xml em anexo, o email do destinatário é "[email protected]" dando erro no momento de validar a tag rodo, que acaba pegando o conteúdo:

7767.617767.61FRETE VALOR7767.61007767.6112.00932.1121441.75TRANSPORTE DE CARGA01PESO BRUTO15023.000001PESO CUBADO15023.000003VOLUMES4.0000020575312012-10-2710410007372544039196206405MTA667616270T10603ES6823219572003374891GUIMAS PEREIRAISENTOES13444684948010MPG943914320T00600ES0095933379709018990EMERSON PAULO PEREIRAISENTOES1SILVIO MARCIO GODOI DE MOURA05847722702

- Sou desenvolvedor.

- De que linguagem, delphi? .NET? Java?

- Qualquer uma, sou desenvolvedor.

Postado

Italo, assim que possível testarei. enquanto isso, pow, mais de 20:00 na sexta feira? brother, vai pra casa! srsrs

Valeu! muito obrigado.

- Sou desenvolvedor.

- De que linguagem, delphi? .NET? Java?

- Qualquer uma, sou desenvolvedor.

  • 9 meses depois ...
Postado

Italo PESO BRUTO (Kg) PESO BASE CÁLC. (Kg) como eu faco para aparecer no CTE?

 

 

Hoje eu preencho assim:

 

 with infCarga.InfQ.Add do
            begin
                cUnid := uKg;
                tpMed := 'Kg';
                qCarga := CurrencyEdit12.Value;
 
            end;
 
            with infCarga.InfQ.Add do
            begin
                cUnid := uUnidade;
                tpMed := 'UN';
                qCarga := CurrencyEdit13.Value;
            end;
 
            with infCarga.InfQ.Add do
            begin
                cUnid := uM3;
                tpMed := 'M3';
                qCarga := CurrencyEdit21.Value;
            end;
  • Consultores
Postado

Boa tarde Dionatan,

 

No caso do DACTE - Quick Report a dica é o seguinte:

 

cUnid := uKg;

tpMed := 'PESO BRUTO';
qCarga := CurrencyEdit12.Value;
 
 

cUnid := uKg;

tpMed := 'PESO BC';
qCarga := CurrencyEdit12.Value;
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

  • 8 meses depois ...
Postado

Bom dia! Desculpem desenterrar o tópico, porém estou com este mesmo erro mas ao gerar MDF-e e a causa é exatamente a mesma do Mark. 

O nome da empresa e email, contém 'Rodo'

Sei que há um forum específico para MDF-e porém o problema é o mesmo e pelo que ví a unit tbm é.

 

Obrigado

Postado (editado)

Boa tarde, Italo.

O erro ainda continua ocorrendo

class function MDFeUtil.Valida(const AXML: AnsiString;
  var AMsg: AnsiString; const APathSchemas: string = ''): Boolean;
begin
{$IFDEF ACBrMDFeOpenSSL}
  Result := ValidaLibXML(AXML, AMsg, APathSchemas) and
            ValidaModalLibXML(AXML, AMsg, APathSchemas);
{$ELSE}
  Result := ValidaMSXML(AXML, AMsg, APathSchemas) and
            ValidaModalMSXML(AXML, AMsg, APathSchemas)
{$ENDIF}
end;

nos meus fontes está caindo no bloco do ELSE, estou usando a instalação padrão do ACBr com delphi XE... acredito que seja CAPICOM

Obrigado

Editado por GustavoKato
Postado

Juliomar Marchetti, enviei por inbox pois são informações de produção.

 

minha "solução de contorno" foi 

 

na Unit ACBrUtil

function SeparaDados...
begin
  ..
  if MantemChave then
   begin
     PosIni := Pos(UChave, UTexto)-1;
     PosFim := Pos('/' + UChave, UTexto) + length(UChave) + 3;

     if (PosIni = 0) or (PosFim = 0) then
      begin
        PosIni := Pos('NS2:' + UChave, UTexto) - 1;
        PosFim := Pos('/NS2:' + UChave, UTexto) + length(UChave) + 3;
      end;
   end
  else
   begin
     if UChave = 'RODO' then
     begin
       PosIni := Pos('<RODO', UTexto) + Pos('>', copy(UTexto, Pos('<RODO', UTexto), length(UTexto)));
       PosFim := Pos('/' + UChave, UTexto);
     end
     else
     begin
       PosIni := Pos(UChave, UTexto) + Pos('>', copy(UTexto, Pos(UChave, UTexto), length(UTexto)));
       PosFim := Pos('/' + UChave, UTexto);
     end;

     if (PosIni = 0) or (PosFim = 0) then
      begin
        PosIni := Pos('NS2:' + UChave, UTexto) + Pos('>', copy(UTexto, Pos('NS2:' + UChave, UTexto), length(UTexto)));
        PosFim := Pos('/NS2:' + UChave, UTexto);
      end;
   end;
  ..
end;
  • 3 semanas depois ...
Postado

Boa tarde,

 

Hoje ocorreu comigo este mesmo problema (Validate failed because the document does not contain exactly one root node.

 

Analisando o XML que ocorreu o problema e um que emiti anteriormente os dois seguem com a mesma estrutura. 

 

Não consegui identificar nenhum problema nele.

 

Seguindo a alteração sugerida pelo GustavoKato, o problema não ocorreu mais!

 

Obs: O cliente que tive problema é do Paraná.

 

Atenciosamente.

Saudações,

Wislei de Brito Fernandes

  • 2 semanas depois ...
Postado

Boa noite.

 

Está ocorrendo um erro quando eu tento validar um XML no Lazarus.

Uso o certificado A1. Ele assina, mas quando valido o XML ocorre o erro "'xs:base64Binary''.

Só ocorre no Lazarus, o mesmo XML é validado no Delphi.

O erro ocorre em xmlDocGetRootElement(doc)

 
function ValidaLibXML(const AXML: AnsiString;
  var AMsg: AnsiString; const APathSchemas: string = ''; AModeloDF: TpcnModeloDF = moNFe;
  AVersaoDF: TpcnVersaoDF = ve200): Boolean;
 
 
 doc := xmlParseDoc(PAnsiChar(Axml));
 if ((doc = nil) or (xmlDocGetRootElement(doc) = nil)) then
  begin
    AMsg := 'Erro: unable to parse';
    Result := False;
    exit;

  end;  

 

Se alguém tiver uma dica, agradeço.

 

Tércio Lins.

Postado

Boa tarde Juliomar.

Eu uso o Lazarus-1.3-44691-fpc-2.6.2-20140412-win32.

Tirei os comentários do ACBr.inc:

 

{$IFDEF FPC}
  {$DEFINE ACBrNFeOpenSSL}
  {$DEFINE ACBrCTeOpenSSL}
  {$DEFINE ACBrNFSeOpenSSL}
  {$DEFINE ACBrMDFeOpenSSL}
  {$DEFINE ACBrGNREOpenSSL}
  {$DEFINE VCL}
  {$DEFINE UNICODE} // Lazarus 0.9.26 usa UnicodeString como default para String
  {$DEFINE DELPHI7}
  {$DEFINE COMPILER7}
  {$H+}
{$ELSE}
  {$DEFINE BORLAND}
{$ENDIF}
 
Consigo verificar o status na Sefaz.

Pode está faltando algo, não consegui achar.

 

Grato,

Tércio Lins. 

Postado

Boa noite Juliomar.

 

Eu copiei a parte posterior do código, desculpe-me.

 

Foi esta parte que eu tirei o comentário.

 

// Para Usar os componentes de nota fiscal com openssl descomente as linhas abaixo
//--------------------------------------------------------------------------------
{$DEFINE ACBrNFeOpenSSL}
{$DEFINE ACBrCTeOpenSSL}
{$DEFINE ACBrNFSeOpenSSL}
{$DEFINE ACBrMDFeOpenSSL}
{$DEFINE ACBrGNREOpenSSL}
 
Como eu não estou conseguindo validar e, conseguentemente transmitir a NFe, eu fiz um Monitor em Delphi
para fazer todo o processo de envio. Neste caso uso o Capicom.
Não sei se precisaria desabilitar alguma coisa.
 
Grato,
Tércio Lins.
Postado

Pessoal, a funcão SeparaDados da unit "acbr\Fontes\ACBrComum\ACBrUtil" ainda está dando problemas,

mesmo com a alteração feita no dia 14/04/2014 pelo Ítalo conforme proposta feita pelo "Jairo - Microns".

 

Vejam o tracker que gerei sobre isso: http://www.projetoacbr.com.br/forum/index.php?/tracker/issue-28-bug-na-unit-acbrutil/

 

Minha sugestão seria incluir o "<" conforme propos o GustavoKato em

 

Ou seja a função ficaria assim: (ver anexo separadados.txt)

 

separadados.txt

  • Curtir 1
Postado (editado)

Boa tarde Ítalo,

 

eu ví a alteração mas fiquei com uma dúvida.

 

Vc alterou de:

if MantemChave then
  begin
    PosIni := Pos(UChave, UTexto)-1;

 

para:

if MantemChave then
  begin
  PosIni := Pos('<' + UChave, UTexto)-1;

 

Mas como agora se está buscando com o '<', não deveria tirar o '-1' ?

Editado por Adir
  • Este tópico foi criado há 3632 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.