Ir para conteúdo
  • Cadastre-se

Eduardo Andrade_9326

Membros
  • Total de ítens

    2
  • Registro em

  • Última visita

Últimos Visitantes

237 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...