Ir para conteúdo
  • Cadastre-se

Eduardo Andrade_9326

Membros
  • Total de ítens

    2
  • Registro em

  • Última visita

Últimos Visitantes

323 visualizações

Eduardo Andrade_9326's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Conversation Starter
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

0

Reputação

  1. Estou gerando o xml com os eventos do esocial no meu sistema, depois importo no acbresocial para que ele faça a assinatura e envie. Eu gero o xml da forma que ele deve ir para a fazenda, como na estrutura abaixo: <eventos><evento id="1"><esocial>...</esocial><evento id="2"><esocial>...</esocial>....</eventos> Quando tento realizar o load deste xml para o acbresocial ele dá erro: falha ao interpretar xml xmlparsedoc. Analisando o código do acbresocialeventos.pas, ele parece não esperar a estrutura acima, ele espera que venha uma lista de <esocial></esocial>, sem as tags de<evventos> e <evento>. Eu fiz um ajuste no código para que ele consiga realizar a leitura do xml com as tags <eventos> e <evento> basta substituir a função abaixo no código acbresocialeventos.pas function TEventos.LoadFromString(AXMLString: String): Boolean; var // AXML: AnsiString; AXML: String; P: integer; function PoseSocial: integer; begin Result := pos('</eSocial>', AXMLString); end; begin Result := False; AXMLString := copy(AXMLString, pos('<eSocial', AXMLString), length(AXMLString)); P := PoseSocial; while P > 0 do begin AXML := copy(AXMLString, 1, P + 9); AXMLString := Trim(copy(AXMLString, P + 10, length(AXMLString))); AXMLString := copy(AXMLString, pos('<eSocial', AXMLString), length(AXMLString)); Result := Self.Iniciais.LoadFromString(AXML); Result := Self.Tabelas.LoadFromString(AXML) or Result; Result := Self.NaoPeriodicos.LoadFromString(AXML) or Result; Result := Self.Periodicos.LoadFromString(AXML) or Result; SaveToFiles; P := PoseSocial; end; end; Se os moderadores puderem fazer o ajuste seria legal, até entendo que não é um problema comum, mas outros usuários podem sofre com este problema.
  2. Estava com o mesmo e consegui resolver. Veja se o erro de vocês é igual o meu. Por algum motivo, meu arquivo de eventos estava salvo como "envevento_v1.00.xsd" e não "envEvento_v1.00.xsd". Temos o seguinte método no arquivo ACBrDFe.pas : TACBrDFe.AchaArquivoSchema(NomeSchema: String; var AVersao: Double; var ArqSchema: String); Este método verifica qual a versão que deve ser usado para o serviço. No caso do envio de evento ele recebe em NomeSchema = "envEvento" e AVersao = 4. O método verifica se existe um arquivo de schema para AVersao = 4 e como não existe procura o arquivo de schema menor e mais próximo do AVersao, depois de encontrar ele seta ArqSchema com o nome do arquivo e AVersao com a versão do arquivo mais próximo. No nosso caso deveria ser ArqSchema="envEvento_v1.00.xsd" e AVersao=4. A seguinte linha faz o teste para encontrar o arquivo: if (copy(ArqAtual, 1, LenNome) = NomeSchema) then Como o meu arquivo estava salvo como "envevento_v1.00.xsd" e o nome do esquema vem como "envEvento", eles não ficavam igual, então ArqSchema ficava vazio e AVersao ficava igual a 0, dando o erro de schema. A solução foi mudar esta linha para: if (uppercase(copy(ArqAtual, 1, LenNome)) = uppercase(NomeSchema)) then Passando toda comparação para minúsculo com o uppercase ele funciona. Note que antes de fazer a alteração eu tentei renomear o arquivo, deixando como "envEvento_v1.00.xsd", não sei se por algum problema de cache do servidor de arquivos, na busca do arquivo ele continuava trazendo "envevento_v1.00.xsd". Eu também estava com problema na carta de correção e foi resolvido com este método.
×
×
  • 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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...