Contactos

El archivo 1c no contiene la definición de esquema xsd. Un objeto DataSet escrito. Leer y escribir documentos XML

Este capítulo le mostrará cómo escribir esquemas XML. También aprenderá que el esquema se puede escribir de muchas maneras diferentes.

documento XML

Veamos este documento XML llamado "shiporder.xml":

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="pedido de envío.xsd">
John Smith

Ola Nordman

Langgt 23

4000 Stavanger
Noruega


Imperio burlesco
Edición especial
1
10.90


esconde tu corazón
1
9.90

El documento XML anterior consta de un elemento raíz, "shiporder", que contiene un atributo obligatorio llamado "orderid". El elemento "shiporder" contiene tres elementos secundarios diferentes: "orderperson", "shipto" y "item". El elemento "artículo" aparece dos veces y contiene un elemento "título", un elemento opcional "nota", una "cantidad" y un elemento "precio".

La línea anterior: Xmlns:XSI="http://www.w3.org/2001/XMLSchema-instance" le dice al analizador XML que este documento debe estar validado por esquema. Línea: xsi: noNamespaceSchemaLocation="shiporder.xsd" indica dónde se encuentra el esquema, qué y (aquí está en la misma carpeta que "shiporder.xml") .

Crear un esquema XML

Ahora queremos crear un esquema para el documento XML anterior.

Comenzaremos abriendo un nuevo archivo, al que llamaremos "shiporder.xsd". Para crear un esquema, simplemente podríamos seguir la estructura del documento XML y definir cada elemento tal como lo encontramos. Comenzaremos con una declaración XML estándar seguida de xs: el elemento de esquema que define el esquema:



...

En el esquema anterior, utilizamos los espacios de nombres estándar (xs) y el URI asociado con ese espacio de nombres es la definición del lenguaje del esquema, que tiene el valor estándar http://www.w3.org/2001/XMLSchema.

A continuación, debemos definir el elemento "orden de envío". Este elemento tiene un atributo y contiene otros elementos, por lo que lo tratamos como un tipo complejo. Los elementos secundarios del elemento "shiporder" están rodeados por xs: un elemento de secuencia que define una secuencia ordenada de subelementos:




...


Luego necesitamos definir el elemento "orderperson" como un tipo simple (ya que no contiene ningún atributo ni otros elementos). El tipo (xs:string) tiene el prefijo del espacio de nombres asociado con el esquema XML, que especifica el tipo de datos predefinido del esquema:










Con esquemas podemos determinar el número de posibles apariciones de un elemento con atributos MaxOccurs y MinOccurs. MaxOccurs especifica el número máximo de apariciones de un elemento y MinOccurs especifica el número mínimo de apariciones de un elemento. ¡El valor predeterminado para MaxOccurs y MinOccurs es 1!

Ahora podemos definir el elemento "elemento". Este elemento puede aparecer varias veces dentro del elemento "orden de envío". Esto se determina estableciendo el atributo maxOccurs del elemento "item" en "unbounded", lo que significa que puede haber tantas apariciones del elemento "item" como desee el autor. Tenga en cuenta que el elemento "nota" es opcional. Determinamos esto estableciendo el atributo minOccurs en cero:










Ahora podemos declarar el atributo "orden de envío" del elemento. Como se trata de un atributo obligatorio, especificamos use="required".

Nota: Las declaraciones de atributos siempre deben aparecer al final:

Aquí está la lista completa del archivo de esquema llamado "shiporder.xsd":





























Circuitos separados

El método de diseño anterior es muy simple, pero puede resultar difícil de leer y mantener cuando los documentos son complejos.

El siguiente método de diseño se basa en definir todos los elementos y atributos y luego hacer referencia a ellos utilizando el atributo ref.

Aquí está el nuevo diseño del archivo de esquema ("shiporder.xsd"):








































Usar tipos con nombre

La tercera forma de diseño define clases o tipos, lo que le permite reutilizar definiciones de elementos. Esto se hace nombrando los elementos tipos simples y tipos complejos y luego haciendo referencia a ellos a través del atributo de tipo del elemento.

Aquí está el tercer diseño del archivo de esquema ("shiporder.xsd"):

































El elemento de restricción indica que el tipo de datos se derivó del espacio de nombres del tipo de datos del esquema XML del W3C. Entonces, el siguiente fragmento significa que el valor de un elemento o atributo debe ser un valor de cadena:

El elemento de restricción se usa más comúnmente para aplicar restricciones a elementos. Mire las siguientes líneas del diagrama de arriba:





Esto indica que el valor del elemento o atributo debe ser una cadena, debe tener exactamente seis caracteres por cadena y esos caracteres deben ser un número entre 0 y 9.

Anotación: Esquemas de datos XML (XSD). Cree un esquema XSD en Visual Studio .NET. Cree un conjunto de datos escrito. Obtener información sobre la estructura del objeto DataSet. Carga de documentos XML y esquemas XSD en conjuntos de datos regulares y escritos. Métodos ReadXml y ReadXmlSchema. Registrar el contenido y la estructura de un DataSet tipificado y regular. Métodos WriteXml y WriteXmlSchema

Un objeto DataSet escrito. Leer y escribir documentos XML

Esquemas de datos XML (XSD)

Esquemas de datos 1 Traducción exacta del documento de esquema XML -< esquema de documento XML>, sin embargo, usaremos el término "esquema de datos XML" de ahora en adelante. XSD (Documento de esquema XML, XSD) es una forma alternativa de crear reglas para documentos XML. En comparación con las DTD, los esquemas son más potentes para definir estructuras de datos complejas, proporcionan una forma más clara de describir la gramática de un idioma y pueden actualizarse y ampliarse fácilmente. Un esquema XSD puede contener la siguiente información:

  • representación de relaciones entre elementos de datos, similar a las relaciones de clave externa entre tablas en una base de datos relacional;
  • representación de identificadores únicos similares a la clave primaria;
  • especificación de tipo los datos de cada elemento y atributo individual en el documento XML.

Para crear un esquema de datos en Visual Studio .NET, en el menú principal, vaya a Archivo \ Nuevo \ Archivo y seleccione Esquema XML de la lista de plantillas (consulte la Figura 11.3). Aparece una ventana con la inscripción "Para comenzar, arrastre objetos desde la ventana Server Explorer o Toolbox al espacio de trabajo (área de diseño) o haga clic derecho" (Fig. 11.1):


Arroz. 11.1.

La cuestión es que estamos en modo diseño. Pasamos al modo código, para lo cual pulsamos el botón (XML):

La primera línea es la indicación ahora familiar de que el esquema es un documento XML con xs:schema como elemento raíz. Prefijo xs: antepone todos los elementos del esquema con su propio espacio de nombres. La segunda línea contiene una descripción larga, detallada y a menudo completamente innecesaria del esquema (compárese con código similar para páginas HTML). Para un correcto funcionamiento basta con limitarnos a la siguiente representación:

Sin embargo, los renderizadores integrados del estudio esperan que este "encabezado" exista, por lo que no debe eliminarse. Crear un esquema que describa un documento XML determinado en Visual Studio .NET es una tarea bastante sencilla. Creemos el siguiente documento XMLEasy.xml:

1

Cambiamos a la pestaña (Datos) y vemos solo un registro (Fig. 11.2).


Arroz. 11.2.

Hay varias formas de crear un esquema que describa este documento: en el menú principal, seleccione el elemento "XML \ Crear esquema" (Fig. 11.3, A), en el modo XML, seleccione el mismo elemento en el menú contextual (Fig. . 11.3, B), en el modo XML Datos en el menú contextual, seleccione este elemento (Fig. 11.3, C) y, finalmente, en el modo Datos, haga clic en el botón en la barra de herramientas XML (Fig. 11.3, D ).


Arroz. 11.3.

En cualquier caso, el esquema del documento aparece en forma de tabla (Fig. 11.4). Deje el modo Esquema por ahora y cambie al modo (XML).


Arroz. 11.4.

El entorno generó un código XML que describe la estructura del documento:

También incluye la descripción necesaria para manipular aún más el esquema utilizando objetos ADO .NET. El documento XMLEasy.xml original tiene un enlace al esquema de datos:

El documento XMLEasy.xsd se creó automáticamente en el mismo directorio que XMLEasy.xml.

Para aprender a comprender los esquemas XSD, primero es necesario trabajar con la descripción de los datos en su forma más pura, sin elementos adicionales. La Tabla 11.1 enumera algunos de los documentos XML más simples y sus esquemas, generados sin referencia a objetos ADO .NET.

Tabla 11.1. Ejemplos de esquemas XSD
Contenido del documento XML Contenido del esquema XSD

1

Descripción
En el documento XMLEasy.xml, el elemento TOUR es el elemento raíz que contiene el elemento secundario IDTOUR. El esquema general para el elemento raíz es el siguiente:

: Contenido del elemento...

Los elementos secundarios se describen así:

Contenido del documento XML Contenido del esquema XSD

1 Chipre 25.000,00 rublos El precio de dos bonos de adulto incluye el precio de un niño (hasta 7 años) 2 Grecia 32.000,00 rublos Descuentos especiales para agosto y septiembre. 3 Tailandia 30.000,00 rublos No incluye pasaje aéreo 4 Italia 26.000,00 rublos El desayuno en el hotel está incluido en el precio del tour. 5 Francia 27.000,00 rublos Las excursiones adicionales no están incluidas en el precio del tour.

Descripción
El elemento raíz TABLE contiene un elemento TOUR, que a su vez consta de un grupo de elementos secundarios. El elemento de elección define la elección de otros elementos, y el valor "ilimitado" (indefinidamente) del atributo maxOccurs indica que los grupos TOUR pueden ser ilimitados.

: :

Contenido del documento XML Contenido del esquema XSD

1 Chipre 25.000,00 rublos 1 El precio de dos bonos de adulto incluye el precio de un niño (hasta 7 años)


Arroz. 11.5.
Descripción
El elemento IDTOUR se configuró en el tipo de datos int, el elemento CLOSED se configuró en el tipo booleano y el resto en el tipo predeterminado cadena. Puede cambiar el tipo de datos directamente en el modo de esquema de datos XML, pero es más conveniente: en el modo Esquema (en este caso, el modo se llamará DataSet ), seleccione el tipo de datos de la lista desplegable (Fig. 11.5). ):

En el software del curso, encontrará todos los archivos para esta tabla en la carpeta XSD (Code\Glava5\XSD).

Especificar un tipo de datos en un documento XML (Tabla 11.1 para el último ejemplo) es una forma de restringir el contenido. Se aplican atributos adicionales para restringir un valor de un tipo determinado. En el siguiente fragmento de esquema, el valor del elemento PRICE debe estar entre 50 y 100:

Para restringir un documento XML a algunos valores fijos, se utiliza la siguiente construcción:

Aquí, el elemento NOMBRE sólo puede tomar un valor fijo de cinco nombres de países.

Desarrollar un esquema XSD es un trabajo bastante laborioso. Las herramientas visuales de Visual Studio .NET facilitan mucho esta tarea. Para dominar los conceptos básicos, es recomendable estudiar varios esquemas de documentos XML que se generan automáticamente. Las tablas 11.2-11.4 describen los principales elementos y atributos que se pueden encontrar.

Tabla 11.2. Elementos del esquema XSD
Elemento Descripción
todo Los elementos anidados se pueden definir en cualquier orden.
abstracto Elemento padre de elementos de comentario Y
cualquier Cualquier elemento anidado
cualquier atributo Cualquier atributo
informacion de la applicacion Elemento de comentario. Especifica el título del esquema.
atributos Atributo
grupo de atributos grupo de atributos
elección Seleccione otros elementos. Analógico del operador "|" en DTD
contenido complejo Restricciones o extensiones de modelo contenido de tipo complejo
tipo complejo Elemento de tipo complejo
documentación Elemento de comentario. Proporciona información de esquema.
elemento Elemento
extensión Extensiones de elementos
campo Declaración de campo. Aplicado dentro de un elemento para definir campos
grupo grupo de elementos
importar Importar una declaración de tipo desde otro esquema
incluir Incluir otro esquema en un espacio de nombres existente
llave Especificar un elemento o atributo con una clave que apunta a otro elemento
referencia clave Especificar el elemento o atributo al que apunta la clave
lista Un elemento que puede contener una lista de valores.
redefinir Redefiniendo elementos ya declarados
restricción Restricción de elemento
esquema Elemento raíz del esquema
selector Selector para seleccionar elementos XML.
secuencia Secuencia de otros elementos. Analógico del operador "," en DTD
contenido simple Modelo cuyo contenido representa solo datos de caracteres.
tipo simple elemento de tipo simple
Unión Un elemento o atributo que puede tener múltiples valores.
único El elemento o atributo que debe tener un valor único
Tabla 11.3. Atributos: restricciones del esquema XSD
Atributo Descripción
enumeración Lista de valores
longitud Longitud
longitud máxima Longitud máxima
longitud mínima Longitud mínima
maxExclusivo Valor máximo
maxInclusivo Valor máximo incluido
minExclusivo Valor mínimo
minInclusivo Valor mínimo incluido
fracciónDígitos Número de decimales en números fraccionarios
totalDígitos Número de dígitos
patrón Muestra (patrón) del contenido del elemento.
por defecto Valor predeterminado de elemento o atributo
elementoFormDefault Establecer propiedades de elementos locales como definidas globalmente
fijado Valor de elemento o atributo fijo
forma Los miembros declarados localmente se definen en instancias de documentos específicos
tipo de artículo Tipo de elemento de lista
tipos de miembros El tipo de miembros utilizados en el sindicato (unión)
maxOcurre Número máximo de apariciones de un elemento
minOcurre Número mínimo de apariciones de un elemento.
mezclado Especificar un elemento que tiene un tipo mixto
nombre Nombre del elemento o atributo
espacio de nombres Espacio de nombres
sin espacio de nombres Especificar la ubicación del documento de esquema,
Ubicación del esquema sin espacios de nombres resultantes
anulable Determinar que un elemento puede tener un valor nulo vacío (nil)
árbitro Establecer una referencia a un elemento definido globalmente
esquemaUbicación Ubicación esquemática
grupo de sustitución Determinación de la sustitución de elementos por otros elementos
espacio de nombres de destino Espacio de nombres del esquema resultante
tipo Tipo de artículo
usar Si el elemento es requerido o no
valor Valor del elemento esquemático
xsi:nulo Establecer el contenido real de un elemento vacío (NULL) de un documento XML
xsi: ubicación del esquema La ubicación real del elemento en el documento XML.
xsi: tipo El tipo real de un elemento en un documento XML.

El error que indica que el archivo no coincide con el esquema XSD es común cuando el sistema no puede leer los datos del informe. En general, estos errores ocurren a menudo en las personas y es bastante fácil solucionarlos.

Primero debe comprender qué significa el esquema XSD para poder comprender a qué no corresponde exactamente su archivo.

Entonces XSD es lenguaje de programación, Describe la estructura de su informe. La estructura incluye, por ejemplo, parámetros del contenido del informe, tipo, tipo, así como sintaxis de datos, secciones que contienen información.

Resulta que el esquema XSD es una descripción de la estructura de su informe realizado en uno de los lenguajes de programación. Si se ingresa información incorrecta en el informe, simplemente será ilegible para el esquema, razón por la cual el sistema muestra un error que indica que el archivo no coincide con el esquema XSD.

Esto indica que la información que ingresaste no se puede leer en el lenguaje de programación, por lo tanto, el programa la reconoce como incorrecta.

Cabe señalar que este problema puede surgir como resultado de datos ingresados ​​incorrectamente(por ejemplo, cometió un error al ingresar el TIN de la organización) y por el formato de ingreso de datos incorrecto (por ejemplo, indicó espacios o guiones adicionales).

Sin embargo, esta no es la única razón que hace que un archivo no coincida con un esquema XSD. Este error también puede ocurrir debido a que en su dispositivo está instalada una versión desactualizada del programa en el que está realizando un informe, y también si la actualización del programa no está instalada en la propia autoridad fiscal.

Para resolver un error en un esquema XSD, deberá comprobar la exactitud de todos los datos, que ingresaste, así como aclarar si ha salido alguna actualización del programa en el que estás trabajando. Sin embargo, antes de revisar el archivo, mira atentamente el texto del error que te da.

El hecho es que en algunas situaciones, después del texto que indica que el archivo no coincide con el esquema, aparecen dos puntos y luego se indica la causa de este problema. Si la causa no se indica en el error en sí, actualice el programa a la última versión.

Una vez que se complete la actualización, intente enviar su informe nuevamente. Si después de actualizar el archivo vuelve a aparecer un error, entonces debe busca un problema en ello. Si está trabajando en el programa 1C, puede verificar el archivo usando un botón especial llamado "verificar en Internet".

Si los dos párrafos anteriores no te ayudaron a identificar el problema, entonces revisa que hayas llenado todos los campos obligatorios, que hayas ingresado todos los datos correctamente, porque muchos de ellos deben ser llenados con números, en cuyo caso es muy fácil cometer un error tipográfico.

Además, debe verificar todos los campos en busca de espacios, guiones y otros caracteres adicionales. Si revisó todo el archivo y no puede encontrar un error, o si logró encontrar un error, pero no puede solucionarlo de ninguna manera, entonces definitivamente debería póngase en contacto con el soporte técnico el programa con el que estás informando o a sus desarrolladores.

Para solucionar este problema con la ayuda de los desarrolladores del programa, necesitarás enviar algunos documentos, como el archivo en sí, en el que se encuentra el informe, el protocolo de notificación que te proporciona la computadora.

Además, los desarrolladores pueden solicitarte algunos datos sobre tu organización, así como otros datos que crean necesarios, debes proporcionárselos, de lo contrario el problema no se solucionará.

Entonces, si está intentando enviar un informe a la autoridad fiscal, pero el archivo da un error que no coincide con el esquema XSD, esto significa que su informe no se puede enviar, porque el programa no puede leer los datos que ingresó.

Pero no entre en pánico, porque en la mayoría de los casos este problema resuelto de manera bastante simple y rápido. Además, si envió el informe a tiempo, pero no fue aceptado debido al formato incorrecto, entonces el impuesto no tiene derecho a multa usted por no presentar el informe a tiempo. En primer lugar, preste atención al texto del error en sí, quizás el motivo de su aparición ya esté indicado allí.

De hecho, sólo puede haber dos razones. O lo has instalado en tu dispositivo versión antigua del programa, con el que estás reportando, en este caso es fácil solucionar el problema, solo necesitas descargar la última actualización, que normalmente la puedes encontrar en el sitio web del programa que estás utilizando. La segunda razón puede ser que haya completado algunos datos incorrectamente o no haya completado ningún campo.

En este caso, debe verificar su archivo, y debe recordar que el programa puede considerarlo un error incluso espacio impar. Si no puede encontrar la causa del error de ninguna manera, puede comunicarse con el soporte técnico del programa, donde los especialistas definitivamente lo ayudarán a resolver su problema.

XDTO es un mecanismo de 1C que se necesita al crear y utilizar servicios web en 1C.

Los paquetes XDTO 1C le permiten describir la estructura del archivo XML requerido para convertir datos hacia y desde XML.

Para aquellos que estén interesados, echemos un vistazo más de cerca.

Los archivos XML se transmiten a través de Internet y son aceptados por muchos programas.

Se perciben, lo que significa que está codificado en su código, si encuentra un determinado nombre de elemento en el archivo XML, lo percibe así y hace esto.

Por lo tanto, si usamos el nombre del elemento Apple, entonces existe una posibilidad bastante grande de que algún otro programa "piense" que se trata de Apple, pero nosotros queremos decir algo propio.

Para evitar que esto suceda y para indicar claramente que nuestro Apple es diferente de todos los demás, se puede especificar en el archivo el nombre del espacio de nombres, un prefijo que se utiliza antes del nombre de los elementos.

El espacio de nombres se define (en inglés namespace) así: xmlns: SpaceName = “URL”, por ejemplo:
xmlns:tienda = "http://store.ru"

¿Por qué se necesita una URL?

Por lo tanto, se especifica un identificador único, que al mismo tiempo determina el autor del espacio de nombres.

Naturalmente, se supone que la persona que especificó el espacio de nombres es una persona excepcionalmente honesta y especificó su sitio y no utiliza varios espacios de nombres diferentes en un sitio.

Por cierto, generalmente indican no solo la URL del sitio, sino también la URL de una carpeta específica en el sitio, de modo que, en todo caso, puede crear otro espacio de nombres en otra carpeta del sitio para usarlo en una situación diferente.

Un objeto es una estructura de datos específica, autosuficiente, que contiene todos sus datos.

Dado que los datos estructurados se describen en XML, es decir, en forma de una estructura que tiene sus propias propiedades, etc., pueden verse como objetos.

En el ejemplo mostrado, podría ser un objeto LIST con una propiedad y un elemento anidado.

DOM es una forma de ver un archivo XML no como texto en un formato específico, sino como un conjunto de objetos con propiedades, campos, etc.

Descripción del archivo XML

Si utilizamos constantemente un archivo de cierta estructura para intercambiar entre dos programas, probablemente nos gustaría:

  • Para usar ciertos nombres
  • Tener los elementos que esperamos (que "deben ser utilizados en nuestro intercambio")
  • Para que los atributos indiquen los tipos que esperamos (cadena, número, etc.).

Existen los siguientes estándares de formato de archivo para describir la estructura XML (que también se almacenan en un archivo de texto sin formato):

  • Extensión DTD - Definición de tipo de documento
  • La extensión XSD es XML Shema.

Ambos formatos describen cómo debería ser el documento. El procedimiento para comprobar que XML cumple con el estándar descrito en dicho archivo se llama verificación.

XDTO 1C es uno que le permite agregar una descripción de archivo XML a la configuración. Más bien, no se describe un archivo, sino estructuras XML específicas.

Para indicar los tipos que se pueden utilizar, se utiliza una lista, una biblioteca de tipos, que se denomina fábrica XDTO 1C.

Esta fábrica enumera tanto los tipos simples (cadena, número, fecha) que se usan comúnmente en otros idiomas, programas, etc., como también los tipos 1C que se usan en 1C y en una configuración específica.

La propia fábrica XDTO 1C consta de varios paquetes. Los tipos base se describen en un paquete llamado www.w3.org

Los tipos de datos de configuración actuales se describen en el paquete http://v8.1c.ru/8.1/data/enterprise/current-config

Los tipos en sí se nombran según el nombre en el configurador con la adición del formulario en inglés (CatalogRef, CatalogObject, DocumentRef, DocumentObject), por ejemplo:

CatalogObject.Nomenclatura

Agregar el paquete XDTO 1C

Sin duda todo suena genial. Y ni siquiera hemos llegado al tema de XSLT, que es una forma de transformar archivos XML en otra cosa, como HTML. El tema de XML es extremadamente extenso y difícil de incluir incluso en un solo libro.

Nuestra tarea es comprender que XDTO 1C le permite describir qué elementos deben estar en el paquete XML que debe generarse o leerse.

Los paquetes XDTO 1C se encuentran en la configuración en la rama General/Paquetes XDTO 1C.

Puede agregar el paquete XDTO a 1C manualmente (¡genial!), pero es mejor obtener el archivo XSD apropiado con una descripción del esquema ya preparada.

Se puede obtener una descripción del esquema XSD de objetos de cualquier configuración haciendo clic en la rama General/Paquetes XDTO 1C y seleccionando el elemento del menú Exportar esquema de configuración XML.

El archivo es un archivo de texto, puede editarlo en el Bloc de notas de Windows, eliminando objetos innecesarios e innecesarios.

Puede agregar un esquema XSD listo para usar a 1C haciendo clic derecho en la rama Paquetes General / XDTO 1C y seleccionando el elemento de menú Importar esquema XML.

Usando el mecanismo XDTO 1C

Trabajar con XDTO 1C es la transformación de valores hacia y desde XML.

El trabajo se realiza utilizando objetos del lenguaje 1C Lectura XML / Escritura XML.

Cuando trabaje con el mecanismo XDTO 1C, debe especificar el paquete con el que está trabajando. Puede ser un paquete genérico (discutido anteriormente, consulte XDTO) o un paquete agregado a la configuración. El paquete se identifica por la URL especificada en el paquete.

Las dos principales formas sencillas de trabajar son:

  • Serialización: conversión automática de valores de 1C a XML y viceversa
  • Crear un objeto, completar sus campos, escribir en XML (y, en consecuencia, leer de XML y luego leer sus campos).

Ejemplo de serialización de valores:
Serializador = Nuevo serializador XDTO (fábrica XDTO);
Archivo XML = Nuevo XMLWriter();
FileXML.OpenFile("Nombre de archivo");
Serializador.WriteXML(FileXML, Value1C);

Un ejemplo de lectura/escritura de un objeto:

DirectorioXDTOObject = XDTO Factory.Create(XDTO Factory.Type("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Warehouses"));
FillPropertyValues(CatalogXDTOObject, DirectoryReference1C);

Había una tarea de crear un archivo XML basado en el esquema XSD. La búsqueda en los foros generó muchas discusiones relacionadas con la falta de comprensión del proceso y solo un par de artículos que explican la esencia. La gente hacía preguntas, luchaba por encontrar una solución, pero después de que la tarea les cediera, simplemente desaparecían sin describir el mecanismo. Esto impulsó la creación de una descripción simple del proceso.
PD No digas palabrotas, mi objetivo no era crear algún tipo de artículo científico usando estrictamente la terminología correcta, sino simplemente ayudar a dar el primer paso hacia la comprensión de un mecanismo de intercambio XML muy poderoso.
PPS Cabe señalar de inmediato que el archivo de descarga adjunto al artículo es solo un espacio en blanco que crea solo una parte de la estructura requerida del archivo XML, porque. Mi trabajo con esta carga fue más de naturaleza educativa (copiar el documento de exportación anterior en el sitio web de FCS y descargar solo la parte tabular de los Productos del archivo Excel parecía ser una solución más efectiva), y la falta de tiempo no Permíteme completar la creación de toda la estructura, basándome únicamente en el perfeccionismo.

Entonces, al registrarse en el sitio web del Servicio Federal de Aduanas, quedó claro que para crear documentos para informes estadísticos sobre exportaciones, es necesario descargar datos de los documentos Ventas de bienes y servicios de la Administración de Comercio y crear un archivo para descargar.

Hay dos opciones para descargar.

Primero: cargar una parte tabular con Productos desde un archivo de Excel (esta opción se eligió como funcional porque tenía la ventaja de que no era necesario preocuparse por procesar el "Encabezado" del documento, sino que simplemente se podía copiar el anterior cambiando el "Encabezado" "Lo que se requería).

Segundo: crear un archivo XML según el esquema descargado del sitio web de FCS en forma de "Álbum de formatos para documentos electrónicos". El álbum contiene una cantidad bastante grande de esquemas XSD. Encontraron el esquema de la "Forma estadística de contabilidad del movimiento de mercancías" y archivos adicionales con descripciones de sus tipos. Los esquemas se adjuntan al artículo en el archivo con procesamiento.

Se utilizó el Bloc de notas gratuito Microsoft XML 2007 para ver los esquemas XSD.

La imagen muestra el archivo principal con el esquema XSD "Forma estadística de contabilidad del movimiento de mercancías". La imagen resalta los bloques principales del esquema XSD que necesitamos para comprenderlo.

Se puede ver en el diagrama que necesitamos obtener un archivo XML lleno con la estructura especificada en la rama "xs: elemento" del tipo StaticFormType.

La estructura puede ser bastante compleja (como en nuestro caso). Con descripciones de tipo que están presentes directamente en la rama, movidas a una rama separada o incluso ubicadas en otro archivo.

Esta estructura es del tipo StaticFormType, que a su vez consta del tipo base BaseDocType, un conjunto de objetos de diferentes tipos y atributos de texto.

El tipo base BaseDocStyle se describe en otro archivo (y espacio de nombres)
.

Este archivo también contiene muchos tipos que no se utilizan en nuestro caso.

Ahora pasemos a trabajar en 1C. En pocas palabras, lo que debemos hacer se reduce a lo siguiente:

1. Se crea la fábrica XDTO

OurXDTOFactory = CreateXDTOFactory(ArrayFullFileNamesWithXSDSchemas);

2. Todos los tipos de datos complejos se crean en la fábrica XDTO, que luego completaremos en el archivo XML generado:

StaticFormType = MyFactoryXDTO.Type("urn:customs.ru:Information:CustomsDocuments:StaticForm:5.4.0", "StaticFormType");

Los tipos de datos incluidos en un determinado tipo se pueden obtener a partir de la recopilación de sus propiedades:

CUOrganizationType = StaticFormType.Properties.Get("Destinatario").Tipo; NameType = CUOrganizationType.Properties.Get("OrganizationName").Tipo; ShortNameType = CUOrganizationType.Properties.Get("ShortName").Tipo; LanguageCodeType = CUOrganizationType.Properties.Get("OrganizationLanguage").Type;

3. Cuando se crean todos los tipos de datos complejos, creamos una estructura de archivos XML basada en ellos, que consta de objetos XDTO Factory:

StaticFormType_XDTOObject = MyXDTOFactory.Create(StaticFormType); // colección con documentos NewDocuments = MyXDTOFactory.Create(DocumentsType); NewDocuments.PrDocumentName = MyFactoryXDTO.Create(PrDocumentNameType, "Carta de porte"); NewDocuments.PrDocumentNumber = MyXDTOFactory.Create(PrDocumentNumberType, "número 123"); NewDocuments.PrDocumentDate = MyXDTOFactory.Create(PrDocumentDateType, "2014-10-05"); StaticFormType_XDTO.Documents.Add(NuevosDocumentos);

Al mismo tiempo, completamos los detalles elementales (tipos simples).

4. Y por último, descargamos todo del XDTO Factory a un archivo:

Archivo XML = Nuevo XMLWriter(); FileXML.OpenFile(Nombre de archivo); FileXML.WriteDeclarationXML(); MyXDTOFactory.WriteXML(XMLFile, StaticFormType_XDTOObject); ArchivoXML.Cerrar();

PD El archivo contiene un archivo en blanco de descarga en XML (solo se crean algunos detalles que reflejan todos los casos de llenado del archivo) y esquemas XSD.

Descomprima todos los archivos en algún directorio.

XML se creará en él.



¿Te gustó el artículo? Compártelo