AYUDA: XmlSerializer bastante lento. VB/C#

Y para empezar Que es una Factura Electronica? Como empiezo? Necesito Autorizacion? Que medios hay para Facturar Electronicamente? estos y todos los temas de iniciacion deberan estar aqui
gilberto
Mensajes: 67
Registrado: Vie Mar 24, 2017 12:49 am

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor gilberto » Mié Abr 26, 2017 12:13 am

Hola Martin.
No soy experto en programación VB ni en VB.net pero tengo mi parte del código que si funsióna y utilizo visual estudio 2010 y 2012.
Los namespace los tengo referenciados al SAT no son locales y tarda mili segundos en crear el XML.
Y es importante recalcar que el código que utilizo también lo encontré aquí.
Dime si le echamos montón y hacemos fusionar tu código.
Un saludos a los miembros de este foro.
me quito el sombrero.

s3cr3to
Mensajes: 501
Registrado: Mar Dic 28, 2010 2:12 pm

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor s3cr3to » Mié Abr 26, 2017 10:28 am

Nota adicional. Si tienes falla en los DNS de tu Internet, esto afecta la velocidad de resolución de los url y para que te cuento.

Cuando corras tu aplicación usa este comando (como administrador) para que veas a donde se conecta tu programa, ejemplo:

Código: Seleccionar todo

>netstat -bf
Conexiones activas
  Proto  Dirección local       Dirección remota       Estado
 [javaw.exe]
  TCP    192.168.1.88:48355     ssss.aaaa.lan:ms-sql-s  ESTABLISHED
 [javaw.exe]
  TCP    192.168.1.88:48370     a123-12-0-234.deploy.static.akamaitechblahblah.com:http  ESTABLISHED

Aquí se observa a donde se está conectando java. Cuando veas que ya no se conecta al sat resolviste tu problema.

s3cr3to
Mensajes: 501
Registrado: Mar Dic 28, 2010 2:12 pm

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor s3cr3to » Mié Abr 26, 2017 10:39 am

Tip adicional, solo si realmente estas urgido y aún no resuelves lo anterior.

Con este truco con el logré acelerar el proceso (no en milisegundos pero si en pocos segundos), más o menos recuerdo que aproveche que tenemos una intranet (IIS) ahí recree un minisitio con las rutas de los urls + archivos usados por la definición del cfdi y añadí en el archivo "hosts" una referencia que en windows 8.1 64bits seria:

Código: Seleccionar todo

este archvio está en:> dir c:\Windows\System32\drivers\etc\hosts
10/03/2017  12:22 p. m.             1,058 hosts

su contenido de puede ver con:> type c:\Windows\System32\drivers\etc\hosts
# ...
127.0.0.1 www.sat.gob.mx

El archivo "hosts" está protegido por windows y solo como administrador puedes editarlo.
Si bien, esto acelero la creación del cfdi en su momento genera situaciones adicionales:
1) Debes estar al pendiente y actualizar periódicamente los archivos del fake-sitio
2) Con este truco la PC dejará de acceder al verdadero sitio del sat, en mi caso, como la PC está exclusivamente dedicada a generar cfds me sirvió sin problema hasta que se resolvió la situación.
Y con esto el programa generó en segundos y no en minutos como nos ocurrió en aquella ocasión.
* Y también se puede instalar el minisitio usando un servidor web local con nginx o apache.
Son al menos unas 2 a 3 horas para implementar este solución temporal que al final es muy útil para muchos casos semejantes: cuando hay sitios que desaparecen por completo y tienes alguna aplicación necesita descargar algún viejo certificado o librería (me estas leyendo mugre idse.imss?)

***
Con esto voy a poder generar de las unidades en Delphi, las cuales Delphi no puede generar debido al cochino error que satan se niega a corregir en el xsd de Pagos10/catPagos:

Código: Seleccionar todo

http://www.sat.gob.mx/sitio_internet/cfd/Pagos/Pagos10.xsd
http://www.sat.gob.mx/sitio_internet/cfd/catalogos/Pagos/catPagos.xsd

Entonces hago un fakesitio, le digo al host donde está y Delphi bien contento podrá hacer uso de un catPagos.xsd "corregido a la Mexicana". ¿o como le hiciste tú DADO?

MartinSosa
Mensajes: 7
Registrado: Sab Abr 22, 2017 8:46 pm

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor MartinSosa » Jue Abr 27, 2017 3:40 pm

Bien, les comento, deje locales los archivos catCFDI.xsd y tdCFDI.xsd

PERO:
En el archivo cfdv33.cs (C#) borre todos los elementos de enumeracion, solo deje uno por cada enumeración para usarlo en una clase de prueba y que creen? Lo hace bastante rápido! ahora la duda seria, como incluir tooodos esos elementos de enumeración en mi programa real?? o que alternativas tengo?

maildejuan
Mensajes: 68
Registrado: Mar Feb 18, 2014 9:09 am

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor maildejuan » Jue Abr 27, 2017 4:40 pm

buenas tardes,

eso es probablemente por que el archivo catCFDI.xsd pesa mas de 6 Mb ...

en mi caso para emisión de facturas pienso ponerme de acuerdo con las áreas contable-fiscal de la empresa para manejar catálogos "light" con las opciones que usemos en la empresa ...

para la validación de facturas recibidas, estaba pensando en hacer unas modificaciones al xsd para hacer las adecuaciones correspondientes para que no se validen los tipos de datos con base en el archivo catCFDI.xsd ... en su lugar, manejar una tabla en SQL Server y hacer mmm no se, un select count(*) from TABLA where ATRIBUTO = "valor del campo en el xml" ... algo así ... pero es solo una idea, necesito hacer pruebas de performance ...

saludos

M-ARISTA
Mensajes: 2
Registrado: Jue Jun 01, 2017 1:10 pm

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor M-ARISTA » Vie Jun 02, 2017 1:44 pm

Que tal buen día, estoy teniendo el mismo problema de la lentitud
y tu encontraste la solución de ese problema?? :|

MartinSosa
Mensajes: 7
Registrado: Sab Abr 22, 2017 8:46 pm

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor MartinSosa » Vie Jun 02, 2017 5:35 pm

M-ARISTA escribió:Que tal buen día, estoy teniendo el mismo problema de la lentitud
y tu encontraste la solución de ese problema?? :|


El problema es la cantidad inmensa de elementos de ennumeracion de la clase que es generada a partir de los esquemas .xsd en mi caso la clase "cfdv33.cs"

jcarpio7
Mensajes: 2
Registrado: Jue May 25, 2017 1:11 am

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor jcarpio7 » Vie Jun 09, 2017 7:12 pm

Buen día.

Alguno de ustedes ya logro hacer que la serialización sea mas rápida?

Avatar de Usuario
acanas
Mensajes: 477
Registrado: Mar Ene 11, 2011 4:18 pm

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor acanas » Mié Ago 09, 2017 5:10 pm

Si, de hecho el problema de que el serializer sea lento es porque tienen todo el catalogo de códigos postales y de claveprodsrv en el mismo ensamblado que representa la clase de Comprobante y tarda en procesar tantos elemento. En mi caso me pasaba exactamente lo mismo que mencionan en esta publicación y lo que hice fue omitir esos 2 catálogos y en los atributos donde se ocupan el código postal y clave del SAT los deje como simples strings en vez de los enumeradores originales (de hecho si se fijan en los xml de cfdi 3.3 timbrados o en el XSD original son puros strings). Con dichos cambios la velocidad de Deserialización/Serialización del objeto Comprobante es bastante rápida. De hecho ya pude hacer mi primer timbre y creo que de aquí en adelante ya me aviento más fácilmente lo que me falta completar del cfdi 3.3

Eso si el control de los codigos postales y claves de producto y servicio para poder validarlos mejor los metí a una tabla de mi sistema o también lo que pueden hacer es separar en otro ensamblado que no vaya usarse para serializar Grabar todo los catálogos de Claves y Codigos Postales.
Adjuntos
SAT_CLAVEPRODSRV_CODIGO.png
Pueden separar los catalogos en otro ensamblado y poder hacer busquedas al mismo enumerados si no desean hacerlo desde una base de datos.
SAT_CLAVEPRODSRV_CODIGO.png (7.1 KiB) Visto 7456 veces
SAT_CLAVEPRODSRV.png
En vez de usar el kilometrico enumerador lo cambio por un string.
SAT_CLAVEPRODSRV.png (6.4 KiB) Visto 7456 veces
Zyphersoft Development

ErnestoHDZ
Mensajes: 12
Registrado: Jue May 08, 2014 3:15 pm

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor ErnestoHDZ » Lun Sep 04, 2017 10:06 am

acanas escribió:Si, de hecho el problema de que el serializer sea lento es porque tienen todo el catalogo de códigos postales y de claveprodsrv en el mismo ensamblado que representa la clase de Comprobante y tarda en procesar tantos elemento. En mi caso me pasaba exactamente lo mismo que mencionan en esta publicación y lo que hice fue omitir esos 2 catálogos y en los atributos donde se ocupan el código postal y clave del SAT los deje como simples strings en vez de los enumeradores originales (de hecho si se fijan en los xml de cfdi 3.3 timbrados o en el XSD original son puros strings). Con dichos cambios la velocidad de Deserialización/Serialización del objeto Comprobante es bastante rápida. De hecho ya pude hacer mi primer timbre y creo que de aquí en adelante ya me aviento más fácilmente lo que me falta completar del cfdi 3.3

Eso si el control de los codigos postales y claves de producto y servicio para poder validarlos mejor los metí a una tabla de mi sistema o también lo que pueden hacer es separar en otro ensamblado que no vaya usarse para serializar Grabar todo los catálogos de Claves y Codigos Postales.


Hola Acanas! Buenos días crees que me puedas ayudar con una copia de tus archivos xslt y xsd? Al serializar la cadena original me queda incompleta y no me permite generarla de manera correcta para posteriormente sellarla, :( De antemano muchas gracias y gracias a todos los que publican su valiosa aportación en este foro.
Saludos


Volver a “Iniciando con la Factura Electronica”

¿Quién está conectado?

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