Validador SAT-Error: CFD no codificado en: UTF-8.

La Razon de ser de este sitio, aqui va a ver anuncios, comentarios dudas y quejas de este programa de validacion de Comprobantes Fiscales Digitales.
rodo
Mensajes: 22
Registrado: Lun Jul 11, 2011 2:22 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensajepor rodo » Mar Jul 12, 2011 4:54 pm

El error que te esta marcando se refiere a que estas declarando nuevamente una variable que ya existe.

Siguiendo el mismo ejemplo:


procedure ConvertBOM(infile, outfile: string);
var
Archivo, ArchivoBOM: file of byte;
s: string ;
c: byte;
h: integer;
begin
assignfile(Archivo, infile); {abrir el XML original}
assignfile(ArchivoBOM, outfile); {escribir un XML nuevo}
reset(Archivo);
rewrite(ArchivoBOM);
c:= 239; write(ArchivoBOM, c); {insertar EF}
c:= 187; write(ArchivoBOM, c); {insertar BB}
c:= 191; write(ArchivoBOM, c); {insertar BF}
while not eof(Archivo) do
begin
read(Archivo, c); {leer archivo original}
s:=s+IntToHex(c, 2)+' ';
write(ArchivoBOM, c); {escribir lo mismo en el nuevo}
end;
closefile(Archivo);
closefile(ArchivoBOM);
end;


Saludos!

poliman
Mensajes: 89
Registrado: Jue Dic 30, 2010 9:32 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensajepor poliman » Mar Jul 12, 2011 5:10 pm

pstriegl escribió:En el caso que el SAT insiste de dejarlo asi, no es tan muy dificil de cumplir.
Lo probé con la rutina abajo, que me convierte el XML a otro XML y este si validó perfectamente en el SAT.
Solo Tomo el archivo original como un archivo de bytes (igual el de salida). Antes de escribir los datos del archivo original solo insert el BOM (EF BB BF)
El resto no mas se copea igual (ni si quiera vi lo del DTD, a la mejor el SAT lo pone despues).

procedure Convert$%#$SAT(infile, outfile: string);
var f, outfile: file of byte;
s: string ;
c: byte;
h: integer;
begin
assignfile(f,infile); {abrir el XML original}
assignfile(outfile, outfile); {escribir un XML nuevo}
reset(f);
rewrite(outfile);
c:= 239; write(outfile, c); {insertar EF}
c:= 187; write(outfile, c); {insertar BB}
c:= 191; write(outfile, c); {insertar BF}
while not eof(f) do
begin
read(f,c); {leer archivo original}
s:=s+IntToHex(c, 2)+' ';
write(outfile, c); {escribir lo mismo en el nuevo}
end;
closefile(f);
closefile(outfile);
end;

claro hay que reemplazar el "$%#$" por otra cosa


Muchas gracias. :)

techsjll
Mensajes: 4
Registrado: Dom Sep 19, 2010 8:05 am

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensajepor techsjll » Mar Jul 12, 2011 5:13 pm

Buenas tardes a todos, estos cuates del SAT nos traen de cabeza, alguien me podria ayudar a poner el BOM, estoy desarrollando en VB6.
El codigo que tengo es el siguiente:

Private Function CrearDOM() As MSXML2.DOMDocument60
Dim oDOM As New MSXML2.DOMDocument60

oDOM.async = False
oDOM.validateOnParse = False
oDOM.resolveExternals = False


Dim Nodo As MSXML2.IXMLDOMNode
Set Nodo = oDOM.createProcessingInstruction("xml", "version=""1.0"" encoding=""utf-8""")
oDOM.appendChild Nodo
Set Nodo = Nothing

Set CrearDOM = oDOM
End Function

Intente poner los caracteres al principio del archivo como una cadena, pero me da error

saludos

condor0086
Mensajes: 425
Registrado: Jue Ago 05, 2010 4:11 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensajepor condor0086 » Mar Jul 12, 2011 7:43 pm

Un regalito para ustedes (en Delphi)

Código: Seleccionar todo


procedure InsertaBOM(const XMLFileName : AnsiString);
const
  UTF8BOMString : array[1..3] of char = (#$EF, #$BB, #$BF);
var FS : TFileStream;
    S : AnsiString;
begin
  //Se lee el archivo
  FS := TFileStream.Create( XMLFileName, fmOpenRead);
  try
    if FS.Size = 0 then
      Exit;
    SetLength(S, FS.Size);
    FS.Read( S[1], FS.Size);
  finally
    FS.Free;
  end;

  //Si el archivo no fue nulo y no empieza con el BOM, se le inserta
  if (S[1] <> UTF8BOMString[1]) then begin
    FS := TFileStream.Create( XMLFileName, fmCreate);
    try
      S := UTF8BOMString+S;
      FS.Write( S[1], Length(S))
    finally
      FS.Free;
    end;
  end;
end;


Saludos!

poliman
Mensajes: 89
Registrado: Jue Dic 30, 2010 9:32 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensajepor poliman » Mar Jul 12, 2011 8:15 pm

condor0086 escribió:Un regalito para ustedes (en Delphi)

Código: Seleccionar todo


procedure InsertaBOM(const XMLFileName : AnsiString);
const
  UTF8BOMString : array[1..3] of char = (#$EF, #$BB, #$BF);
var FS : TFileStream;
    S : AnsiString;
begin
  //Se lee el archivo
  FS := TFileStream.Create( XMLFileName, fmOpenRead);
  try
    if FS.Size = 0 then
      Exit;
    SetLength(S, FS.Size);
    FS.Read( S[1], FS.Size);
  finally
    FS.Free;
  end;

  //Si el archivo no fue nulo y no empieza con el BOM, se le inserta
  if (S[1] <> UTF8BOMString[1]) then begin
    FS := TFileStream.Create( XMLFileName, fmCreate);
    try
      S := UTF8BOMString+S;
      FS.Write( S[1], Length(S))
    finally
      FS.Free;
    end;
  end;
end;


Saludos!


Gracias , pero no funciona, marca un error, al parecer los tipos de datos son incompatibles.

[DCC Error] Archivo.pas(148): E2015 Operator not applicable to this operand type

// Si el archivo no fue nulo y no empieza con el BOM, se le inserta
if (S[1] <> UTF8BOMString[1]) then

:cry: :cry:

Avatar de Usuario
Dado
Mensajes: 15824
Registrado: Mar Jul 06, 2010 8:56 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensajepor Dado » Mar Jul 12, 2011 9:05 pm

@condor0086
@poliman

A mi si me funciono, que version de Delphi esta usando cada quien?
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

poliman
Mensajes: 89
Registrado: Jue Dic 30, 2010 9:32 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensajepor poliman » Mar Jul 12, 2011 9:15 pm

DADO escribió:@condor0086
@poliman

A mi si me funciono, que version de Delphi esta usando cada quien?



Delphi 2010. :roll:

condor0086
Mensajes: 425
Registrado: Jue Ago 05, 2010 4:11 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensajepor condor0086 » Mar Jul 12, 2011 9:35 pm

DADO escribió:@condor0086
@poliman

A mi si me funciono, que version de Delphi esta usando cada quien?


Delphi 2007

Algo cambió con el 2010, pero entonces puedes probar:

var
UTF8BOMString : ansistring
begin
UTF8BOMString := #$EF+#$BB+#$BF;
...


Saludos

poliman
Mensajes: 89
Registrado: Jue Dic 30, 2010 9:32 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensajepor poliman » Mar Jul 12, 2011 9:45 pm

condor0086 escribió:
DADO escribió:@condor0086
@poliman

A mi si me funciono, que version de Delphi esta usando cada quien?


Delphi 2007

Algo cambió con el 2010, pero entonces puedes probar:

var
UTF8BOMString : ansistring
begin
UTF8BOMString := #$EF+#$BB+#$BF;
...


Saludos



Si funciono de este forma, gracias.
:)

AEnriquez
Mensajes: 1
Registrado: Mié Jul 13, 2011 10:25 am

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensajepor AEnriquez » Mié Jul 13, 2011 10:28 am

Al respecto del validador del SAT creo que el principal problema es que el SAT no avisa.
Yo he optado por almacenar los XML en SQL 2005 y en este tipo de situaciones lo que regenero es el archivo que contiene el XML anadiendole simplemente los caracteres de control.
Ojala y sirva de algo.


Volver a “SOPORTE del validador de CFDI's "ValidaCFD"”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados