Contactos

Cómo encontrar un error al transferir datos. Ejemplo de regla de conversión de objetos Siempre hay varias soluciones

El objetivo de esta regla de cambio es transferir saldos de liquidaciones mutuas del BP 2 al UT11.

Creación paso a paso de una regla de intercambio usando la configuración "Conversión de datos" (se deben cargar los metadatos):

1) Cree una regla para cargar un objeto, para esto vaya a la pestaña “Reglas para cargar datos”, haga clic en agregar. En la ventana que aparece, seleccione el objeto de muestra, este será un registro contable propio. Cambiamos el método de muestreo a un algoritmo arbitrario.

2) Pasemos a escribir el código en sí porque No existe un registro contable propio en la UT, por lo que debemos convertirlo. Primero, necesitamos una consulta que, según nuestros parámetros, devolverá saldos para liquidaciones mutuas. En el controlador de eventos "Antes de procesar" escribimos la siguiente solicitud:

Texto de consulta = "SELECCIONAR
| Balanzas Autosostenibles.Cuenta,
| Restos autoportantes.Subconto1 AS Subconto1,
| ISNULL(SUM(Self-AccountingRemaining.AmountRemainingDt),0) AS AmountRemainingDt,
| ISNULL(SUM(Self-countingRemains.AmountRemainingCt),0) AS ImporteRemainingCt,
| MAXIMUM(Saldos de contabilidad de costos.Subcuenta2.Fecha) COMO Fecha del documento de liquidación,
| MAXIMUM(Saldos contables propios.Subcuenta2.Número) COMO Número de documento contable
|DESDE
| Registro Contable Saldos Autosostenibles (&OnDate, Cuenta = &cuenta,) AS Saldos Autosostenibles
|DONDE
<>&grupo y
| Saldos Autosostenibles Subcuenta 1. Matriz<>&grupo 1
|Agrupar por
| Balanzas Autosostenibles.Cuenta,
| Saldos Autosostenibles Subcuenta 1,
| Restos Autoportantes.Subconto2
|ORDENAR POR
| Subconto1
|ORDEN AUTO";

Mi tarea era limitar los grupos de contrapartes para los cuales se cargan las liquidaciones mutuas.

Determinamos los valores de las variables que se utilizarán en el futuro.

ElDate = fecha("20130101");
TD = FechaActual();
grupo = Directorios.Contrapartidas.FindByName("Compradores");
grupo1 = Directorios. Contrapartes. Buscar por nombre("Devoluciones de INDIVIDUOS");

Creamos una tabla que luego pasaremos a la regla de conversión de valores.

TZ = Nueva tabla de valores();
TK.Columns.Add("Contraparte");
TK.Columns.Add("Cantidad");
TK.Columns.Add("CantidadREGLE");
TK.Columns.Add("Documento de cálculo");
TK.Columns.Add("Fecha del documento de liquidación");
TK.Columns.Add("Número de documento de liquidación");
TK.Columns.Add("Socio");
TK.Columns.Add("Moneda de liquidación mutua");
TK.Columns.Add("Fecha de pago");

Configuramos los parámetros, llamamos a la solicitud, completamos la tabla y llamamos a la regla de conversión.

solicitud = nueva Solicitud (Texto de solicitud);
request.SetParameter("grupo", grupo); request.SetParameter("grupo1",grupo1);
request.SetParameter("OnDate",OnDate);
request.SetParameter("Cuenta", Planes de Cuentas. Autocontabilidad. Cálculos con Otros Proveedores y Contratistas);//76.05
Recuperar = request.Run().Select();
TK.clear();
Mientras que el bucle Select.Next()
si Sample.SumRemainingCT = 0 o Sample.SumRemainingCT = "" entonces
continuar;
terminara si;
si muestra.CantidadRemanenteCT< 0тогда
report(""+Sample.Subconto1+" valor negativo "+Sample.SumRemainingCT);
terminara si;
LíneaTZ = TZ.Add();
Línea TK.Contraparte = Selección.Subconto1;
LineTZ.sum = Selection.SumRemainingCT;//Selection.SumRemainingCT;
LineTZ.sumRegl = Muestreo.SumRemainingCT;//Sampling.SumRemainingCT;
Línea TK.Fecha del documento de cálculo = Selección.Fecha del documento de cálculo;
Línea TK.Número de documento de cálculo = Selección.Número de documento de cálculo;
LineTZ.PaymentDate = TD;
Fin del ciclo;
OutData = Nueva Estructura;
OutgoingData.Insert("Fecha", FechaActual());
OutgoingData.Insert("CálculosConPartners", TK);
OutgoingData.Insert("Tipo de Operación", "Saldos de Deuda con Proveedores");
OutgoingData.Insert("Comentario", "Generado en crédito de cuenta 76.05");
report("76.05 CRÉDITO inicio");
UploadByRule(, OutgoingData, "Ingreso de Saldos para Liquidación Mutua_7605Credit");

Realizamos la misma operación de manera similar para el resto de las cuentas necesarias (su descripción, así como la regla ya preparada, se encuentran en el archivo adjunto).

3) Pasemos a crear reglas de conversión de objetos; para ello, abra la pestaña "Reglas de conversión de objetos". Agreguemos una nueva regla allí con el nombre "Ingresar saldos por liquidación mutua_7605Crédito", dejemos el objeto de origen vacío, establezcamos el objeto receptor en el documento "Ingresar saldos" y en la pestaña de configuración eliminemos la bandera "Buscar el objeto receptor por identificador interno del objeto fuente".

En el controlador de eventos "Antes de cargar" escribiremos el siguiente código:

Generar NewNumberOrCodeIfNotSpecified = verdadero;

En el controlador de eventos "Después de cargar" escribiremos:

ejecutar (algoritmos.AfterLoadInputRemainings);

ejecutará un algoritmo con el siguiente contenido:

moneda = Constantes.RegulatedAccountingCurrency.Get();
objeto.Propietario = SessionParameters.CurrentUser;
objeto.organización=parámetros.organización;
para cada página del bucle object.calculationspartners
Page.SettlementDocument = Directorios.Acuerdos de contraparte.enlace vacío();
PageCurrencySettlements = moneda;
si ValueFilled (página.counterparty.partner) entonces
p.socio = p.contraparte.socio;
de lo contrario
socios = Directorios.Partners.FindByName(página.contraparte.Nombre);
si el escritorio<>Indefinido y escritorios<>Directories.Partners.emptylink() entonces
p.partner = escritorio;

objeto2.Socio = escritorio;
objeto2.Write();
de lo contrario
ejecutar (algoritmos.AddPartner);
terminara si;

terminara si;

fin de ciclo;

Este algoritmo se ejecutará en el lado del receptor (BP). Además de transferir saldos para liquidaciones mutuas, existe la tarea de transferir contrapartes, pero la UT utiliza socios, por lo que luego de generar el documento verificamos si todas las contrapartes y socios están en la base de datos del receptor; si por alguna razón no están allí. , luego los agregamos.

Agregar contratistas implementará la regla de conversión para el directorio “Contrapartes”; puede crearlo de la misma manera que la regla anterior, pero permita que el sistema compare los campos necesarios.

Se creó un algoritmo para socios que se ejecuta en el lado del receptor.

Para ejecutar el algoritmo en el lado del receptor, debe marcar la casilla "Usado al cargar" en la esquina superior derecha de la ventana del algoritmo (al editarlo).

A continuación se muestra el código para el algoritmo "Agregar socio":

nPartner = Directorios.Partners.CreateItem();
nSocio.Nombre = página.contraparte.nombre;
nPartner.Comment = "Creado al cargar desde BP";
nPartner.NameFull = página.contraparte.NameFull;
nPartner.Proveedor = ?(find(page.counterparty.AdditionalInformation,"Proveedor")>0,true,false);
nPartner.Client = ?(find(page.counterparty.AdditionalInformation,"Cliente")>0,true,false);
OtrasRelaciones = ?(find(page.counterparty.AdditionalInformation,"Otro")>0,true,false);
npartner.Write();
p.socio = nsocio.enlace;
contraparte = Directorios.Contrapartidas.FindByName(página.contraparte.Nombre);
objeto2 = contraparte.GetObject();
objeto2.Partner = npartner.link;
objeto2.Write();

Volvamos a la regla de conversión de objetos. Ahora necesitamos establecer correspondencia entre los campos de origen y destino; esto podría haberse hecho inmediatamente antes de escribir el código. Para comparar campos, en la parte tabular inferior hay un botón para llamar al asistente "Sincronización de propiedades". En este asistente podemos mapear los campos o dejarlos sin origen y sin destino. En nuestro caso, dejamos todos los campos y MP sin fuente.

Una vez seleccionados los campos obligatorios en el TC inferior, para cada campo configuramos una bandera en la columna "Obtener de datos entrantes". Esta bandera indica que el sistema buscará este campo en los datos entrantes. Es importante que el nombre del campo coincida con el nombre en los datos entrantes; de lo contrario, se mostrará un mensaje indicando que no se encontró el campo.

El texto no describe todos los matices del proceso.

Buenos días, queridos lectores del blog. Anteriormente se publicó un artículo sobre conversión en este sitio.
, este artículo mostró
cómo se puede configurar un intercambio utilizando constructores que crean reglas de intercambio.
Este método se puede utilizar al convertir bases de datos de 1C versión 7.7 a 8.2.
Ahora hablaremos sobre cómo transferir datos entre configuraciones de 1C 8.2, que son ligeramente diferentes entre sí.

El objetivo principal de este artículo será convertir la parte tabular del documento, lo que significa que
trabajaremos con reglas de conversión de grupos de propiedades - PKGS.

Preparándose para configurar PKGS: reglas para convertir un grupo de propiedades

Transferiremos el documento “Recepción de Bienes y Servicios”, el cual tiene diferencias en el atributo Tasa de IVA de la sección tabular “Bienes”.
en la base de datos fuente y receptora. En la base de datos de origen, este atributo tiene el tipo “DirectoryLink.IVA Rates”,
y en la base de datos del receptor, el tipo “TransferLink.VAT Rates”.

Por cierto, por conveniencia, puedes definir

Además, en la base de datos del receptor debemos completar el detalle “Cuenta BU”, que también se encuentra
en la sección tabular “Bienes” del documento “Recepción de Bienes y Servicios”. Tomaremos los datos a cumplimentar de los datos de “Contabilidad de Cuenta”.
libro de referencia “Nomenclatura” de la base del receptor.

La situación se complica por el hecho de que trabajaremos con la parte tabular, por lo que debemos configurar
reglas de conversión de grupos de propiedades - PKGS. Necesitaremos acceder a la fila actual de la parte tabular.

Crear reglas de conversión para un grupo de propiedades 1C

Ya hemos desarrollado reglas de conversión para el documento de “Recepción de Bienes y Servicios”.

Pero para la parte tabular “Productos” no hay reglas de conversión de propiedad"Tipos de IVA".
Debe agregar una nueva regla de conversión de propiedades haciendo clic en el botón "Sincronizar propiedades...".

Aparecerá el cuadro de diálogo “Configuración de reglas de conversión de propiedad (Recepción de bienes y servicios)”.

Debe repetir lo que se hizo en la imagen y hacer clic en el botón "Aceptar".

Aunque hemos creado regla de conversión para un grupo de propiedades, pero aún no está listo.
Recuerde que los detalles del apartado tabular “Tipos de IVA” difieren en los tipos de valores.
En la base de datos de origen, este atributo tiene el tipo “DirectoryLink.IVA Rates”,
y en la base de datos del receptor, el tipo “TransferLink.VAT Rates”. Nos falta una regla aquí
Conversión de un directorio a una enumeración.

Controladores de eventos para reglas de conversión de grupos de propiedades

Para configurar la conversión de propiedades correctamente, debe crear una nueva regla de conversión de objetos.

En el cuadro de diálogo que aparece indicamos que el directorio “Tipos de IVA” se convierte en una transferencia con el mismo nombre.

No habrá reglas de conversión de propiedad para esta regla.
Por lo tanto, al guardar esta regla, seleccione "No" en el cuadro de diálogo que aparece.

En el diálogo con la pregunta "¿Crear reglas de carga de datos?" Seleccionemos también “No”.

Al hacer doble clic, abriremos un cuadro de diálogo con la configuración de la regla de conversión de objetos (PKO) "Tasas de IVA".
Aquí, en la pestaña "Manejadores de eventos", seleccione el evento "Al descargar" y defina la "Fuente" y
“Link Node”, es decir, lo que se transferirá.

Si Fuente. Tasa = 0 Entonces
LinkNode = "Oferta0";
ElseIf Fuente. Apuesta = 12 Entonces
Enlaces de nodo = "Apuesta12";
ElseIf Fuente. Nombre = “sin IVA” Entonces
NodeLinks = "Sin IVA" ;
Terminara si ;

Después de escribir el controlador, haga clic en el botón "Aceptar".

En información sobre manipuladores:

Fuente - Personalizado - objeto fuente cargado (enlace o datos personalizados).
Nodo de enlace: nodo de enlace xml inicializado. Puede ser usado
por ejemplo, para inicializar propiedades de otros objetos.

Ahora indicaremos explícitamente el uso de esta regla de conversión de objetos al descargar el atributo “Tasa de IVA”.
Vaya a la pestaña “Conversión de Propiedades (*)” del documento “Recepción de Bienes y Servicios” y abra la conversión
grupo de propiedades “Productos”, haga doble clic en la propiedad “Tipos de IVA” y en el cuadro de diálogo que se abre, en el campo “Regla”
seleccione la regla de conversión para el objeto “Tasa de IVA”.

Haga clic en el botón "Aceptar".

Ahora solo nos falta configurar las cuentas contables de acuerdo con los valores que están definidos para el artículo.
Vayamos a la pestaña "Reglas de conversión de objetos", busquemos el objeto "Recepción de bienes y servicios" y
Al hacer doble clic en él, se abrirá el cuadro de diálogo de reglas de conversión de objetos (OCR).
Vayamos a la pestaña "Manejadores de eventos" para el evento "Después de cargar" y escribamos lo siguiente:

Para cada LineTCH desde objeto. Ciclo de productos
LíneaTC. CuentaCuentaBU = LíneaTC. Nomenclatura. CuentaCuentaBU;
FinCiclo;

Ahora carguemos estas reglas en la fuente utilizando el procesamiento externo "Universal Data Interchange in XML Format" - "V8Exchan82.epf".
Subamos los datos a un archivo xml. Luego, abra el mismo procesamiento en la base de datos del receptor y seleccione cargar el archivo xml y cargue los datos.

Por cierto, el procesamiento "Intercambio universal de datos en formato XML" se puede abrir a través del elemento del menú
"Servicio" | "Otros intercambios de datos" | "Intercambio universal de datos en formato XML". Se escribió un poco sobre esto en una nota sobre.

Se sabe que los programas 1C son una herramienta conveniente y multifuncional para la automatización contable, adecuada para empresas de una amplia variedad de industrias y áreas de actividad. Sin embargo, esta herramienta es compleja y, lamentablemente, suelen surgir varios tipos de errores al trabajar con ella. En este artículo, le mostraremos cómo encontrar y resolver un error que ocurrió al migrar datos usando reglas creadas por Tecnologías de conversión de datos 2.0. ¿Qué debo hacer si la carga falla o es imposible cargar datos en la base de datos receptora? Nuestro artículo pretende responder a estas preguntas.

Entonces, si compró reglas de conversión de datos, abrió el procesamiento para la transferencia, configuró todas las configuraciones, pero la carga se interrumpe y aparece un mensaje de error en los mensajes de servicio, aquí hay algunas técnicas que pueden ayudarlo a encontrar y eliminar el error.

En primer lugar, verifique las versiones de lanzamiento de su programa con las especificadas en las reglas. Con una ligera discrepancia entre versiones. fuente No surgen problemas, pero si su versión está muy por detrás de las últimas versiones, las reglas no funcionarán. Versión de configuración receptor debe ser idéntico al especificado en las reglas.

¿Cómo puedo ver para qué versiones son las reglas? Simplemente abra el archivo de reglas con cualquier editor (por defecto puede ser Internet Explorer o el Bloc de notas) y observe las primeras líneas: contienen las versiones del origen y el destino.

Figura 1. Ver reglas

¿Qué hacer? Si tiene esa oportunidad, actualice el programa fuente a la versión especificada en las reglas de conversión. Si no puede actualizar el programa, no podrá trabajar con estas reglas.

¿Pero tal vez ya hayas hecho todo esto y la carga aún se produce con errores? Luego intente encontrar el elemento problemático que impide que el programa se cargue correctamente.

Demostraremos el algoritmo de acciones al buscar errores usando el ejemplo de transferencia de datos de KA 1.1 a BP 3.0.

Proceda de la siguiente manera: desactive todas las reglas de transferencia y descargue grupos individuales de reglas uno por uno. Aquellos. primero intenta descargar solo Política contable, entonces solo Saldos entrantes, solo Directorios etc. (Figura 2). La mayoría de las veces, surgen problemas al descargar documentos, mientras que otros tipos de objetos se descargan normalmente, así que usemos su ejemplo para considerar acciones futuras. Ahora necesitas repetir el proceso con carga alternativa con cada regla de conversión de documentos. Aquellos. a su vez, cargue solo los informes anticipados, solo la carta de crédito transferida, etc. según la lista, como se muestra en la Fig. 3.

Figura 2. Descarga secuencial de grupos de objetos.

Fig. 3. Descargar tipos de objetos uno por uno

Entonces, supongamos que la carga se interrumpe cuando se seleccionan todas las reglas de carga. Documentación. Subiste todo tipo de documentos uno por uno, revisaste todas las posiciones una por una y calculaste que el error ocurre solo al cargar, por ejemplo, documentos. Operación (contabilidad y contabilidad fiscal). A continuación, debes reducir gradualmente el período de carga para poder encontrar el documento problemático. Primero, cargue por trimestre, mes, semana hasta encontrar el día en el que falla la carga.

¿Qué hacer? Si logras encontrar el documento específico que causa el error y puedes ver cuál es el problema más probable, genial. Arregle el documento si es posible, o simplemente no lo migre; es mucho más fácil reparar un documento que realizar toda la migración manualmente. Para realizar una transferencia excluyendo solo un documento, utilice la selección en la ventana adyacente. En la columna "Tipo de comparación", establezca "No igual", en "Valor", seleccione el documento problemático y continúe subiendo como de costumbre.

Fig.4. Seleccionar un documento al cargarlo

Bien, pero ¿qué pasa si la carga se completa correctamente, pero los datos no se pueden cargar en otra base de datos? Primero, tómate tu tiempo y comprueba nuevamente si hiciste todo correctamente y si las versiones del programa coinciden. A diferencia de la fuente, la versión de lanzamiento del receptor debe coincidir estrictamente con la especificada en las reglas; de lo contrario, siempre obtendrá un error.

¿Qué hacer? Los errores en la etapa de carga a menudo se pueden corregir solo en la etapa de descarga, por lo que el procedimiento para encontrar el problema será el mismo que el descrito anteriormente, con una sola excepción: después de cada descarga, será necesario repetir la carga para busque el elemento que está en la base de datos receptora y no se está descargando. Siga la misma secuencia: primero migre un grupo de vistas de objetos, luego vistas específicas por fechas específicas y, finalmente, elimine el elemento problemático que impide la carga exitosa.

Cuando el procesamiento estándar no puede realizar la carga correctamente y el proceso se detiene, siempre aparece un mensaje de error en los mensajes de servicio. En algunos casos, sólo es posible encontrar la ubicación y la causa de este error descargando diferentes tipos de objetos uno por uno. Sin embargo, esta no es la única manera. A menudo, la causa del error ya se indica en el mensaje del servicio; sólo es necesario leerlo correctamente.

Veamos el ejemplo de descarga desde KA 1.1. El usuario descarga desde la base de datos fuente. Saldos entrantes a principios de 2018. El proceso de descarga se interrumpe y el programa muestra varios mensajes de servicio, incluidos los siguientes:

Error en el controlador de eventos BeforeProcessingUploadRules
PVD = Materiales_restantes
Controlador = BeforeProcessingDataUpload
DescripciónErrors = Error al obtener el valor de la propiedad del objeto (por nombre de la propiedad de origen)
PKO = Nomenclatura (Directorio: Nomenclatura)
PKS = 15 (Artículo --> Artículo)
Objeto = Inversor de máquina de soldar VDI 160R (Activos fijos)
PropiedadReceptor = Artículo(Cadena)
DescripciónErrors = Campo de objeto no encontrado (Artículo)
ModulePosition = Procesamiento.UniversalXMLDataExchange.ObjectModule(8283)
Código de mensaje = 13
ModulePosition = Procesamiento.UniversalXMLDataExchange.ObjectModule(1694)
Código de mensaje = 31

Se podría ir por el camino difícil y descargar distintos tipos de saldos uno a uno (restos de inmovilizado, saldos de intangibles, etc.) y encontrar que el error se produce al descargar según la regla Materiales_restantes. O puede ver inmediatamente el nombre de la regla en el mensaje de error. Mire, la primera línea de la transcripción del error del mensaje dice exactamente esto. DVP - regla de carga de datos. La regla de carga de datos es igual a Remaining_Materials. No necesitamos buscar nada, el propio programa te indica dónde se produjo el error.

Arroz. 5.1. Mensaje de error de servicio

Podemos encontrar la razón con la misma facilidad. En línea DescripciónErrores escrito Un mensaje no muy claro para el usuario. Sin embargo, podemos entender que el error radica en alguna propiedad del objeto. ¿Qué objeto? El indicado en la línea. Un objeto en este mensaje. En este caso, este objeto es Inversor de máquina de soldar VDI 160R (Activos fijos). Ya en este momento puedes notar una discrepancia. regla de carga de datos llamado Materiales sobrantes, en línea Regla de conversión de objetos (OCR) escrito Nomenclatura, ¿por qué el tipo de objeto se escribe como Activos fijos? Miremos la base de datos de origen y verifiquemos si realmente encontramos el objeto correcto.

En los saldos de la cuenta 10.09 “Inventario y enseres domésticos” encontramos nuestro objeto problemático - subconto Máquina de soldar inversor VDI 160R(ver figura 5.2)

Arroz. 5.2. Balance de la cuenta 10.09 para 2018

Si abre este subconto, podrá ver inmediatamente que Máquina de soldar inversor VDI 160R De hecho, es una herramienta básica, no una nomenclatura (ver Fig. 5.3). lo que queda Máquina de soldar inversor VDI 160R resultó ser un error completamente obvio en la cuenta 10.09 que debe corregirse.

Arroz. 5.3. Tarjeta de activo fijo Máquina de soldar inversor VDI 160R

El error de descarga en este caso se produce debido a un tipo de objeto incorrecto. Según la norma de descarga de materiales sobrantes, se debe descargar Nomenclatura- materiales, combustible, inventario, etc. Dichos objetos tienen un cierto conjunto de propiedades, que se transfieren a otra base de datos de acuerdo con la regla de conversión. Para objetos con tipo Lo esencial el conjunto de propiedades será completamente diferente. No es posible descargar un objeto de este tipo según la regla para la descarga de materiales. El programa identifica el objeto como Nomenclatura pero no encuentra las propiedades necesarias en él y, en consecuencia, no puede convertirlo para escribirlo en un archivo. Esto es lo que decía el mensaje. Error al obtener el valor de la propiedad del objeto (por nombre de la propiedad de origen).

En este ejemplo, el problema se puede resolver con bastante facilidad: en nuestras reglas hay un parámetro No descargue el saldo si la cantidad es cero. Cuando esté instalado, las balanzas con cantidad cero simplemente no se descargarán. Como se puede observar en el balance presentado en la Figura 5.2, los saldos de este subconto no tienen cantidad, es decir Este residuo problemático se puede eliminar fácilmente utilizando el parámetro especificado.

En otros casos, cuando no hay forma de excluir un objeto mediante un filtro o parámetro, el usuario tendría que corregir el error en la base de datos de origen antes de migrar los datos.

Un ejemplo de error.

Veamos un ejemplo de otro error descubierto durante la transferencia de datos.

Cuando intentó cargar documentos por primera vez, el usuario vio el siguiente texto en los mensajes del sistema. Un mensaje de error nos permite saltarnos el mecanismo de encontrar cuándo ocurrió un error y pasar a solucionarlo. Estos mensajes no siempre aparecen y, a veces, aún es necesario buscar un error utilizando el método de descarga uno por uno. Ya hemos discutido cómo leer dicho mensaje arriba.

Fig.6.1. Mensaje de error

Entonces, el programa mismo nos dice el documento problemático: esta es la Factura al comprador IPBP-000008, lo que significa que inmediatamente vamos al documento e intentamos averiguar cuál es el error.

Como puede ver en la Figura 6.2, en este documento, en la sección tabular "Bienes y servicios", en una de las filas se establece el grupo de artículos, y no el artículo en sí, lo que en sí mismo es un error. Por supuesto, las reglas de conversión de este documento no especifican cómo convertir un objeto de esta parte tabular. grupo de nomenclatura, este es un elemento de un tipo completamente diferente al mismo nomenclatura, y el programa no tiene información sobre cómo mover un elemento más allá de lo especificado en las reglas. Por lo tanto, el proceso de conversión no lo reconoce, no puede convertirlo y arroja un error.

Fig.6.2. Documento con un error

Cómo y por qué se estableció esto no nos interesa por el momento. Decidimos no migrar el documento, lo que significa que lo excluimos de la lista de objetos migrados. Encontrar la regla de carga de documentos Factura de pago al comprador., selecciónelo, vaya a la selección, establezca Campo - Enlace, Tipo de comparación - No igual, Valor - nuestro documento de problema. Por lo tanto, excluiremos este documento de la lista de objetos transferidos y la carga debería realizarse normalmente.

Fig.6.3. Configuración de preferencias para la exclusión de documentos

Después de esto, puede continuar cargando de la manera que más le convenga: transferir todos los documentos a la vez o transferir solo las Facturas para el pago, con la excepción del documento encontrado, y luego transferir el resto; el orden de transferencia de datos puede ser cualquiera.

Cabe señalar aquí que existe la posibilidad de seleccionar objetos en el procesamiento. Intercambio de datos XML genérico no en todas las configuraciones típicas. Más precisamente, dicha funcionalidad está ausente en el modo de aplicación administrada. En particular, en una configuración típica Automatización integrada rev.1.1 puede trabajar tanto en modo de aplicación normal como en modo de aplicación administrada o, como también dicen, en modo de formularios administrados. En el primer caso, las selecciones en el procesamiento estándar son posibles (ver Fig. 4), en el segundo, no. Entonces es necesario utilizar las versiones modificadas del procesamiento (ver Fig. 6.3). Si la configuración se utiliza en modo de compatibilidad de plataforma 8.2 (esto es en particular KA 1.1 Y UPP 1.3), entonces el procesamiento es necesario Intercambio de datos XML genérico versiones 2.1.7 . Si no se utiliza el modo de compatibilidad, como en la configuración Edición de contabilidad empresarial 3.0, entonces necesitas trabajar con el procesamiento de versiones. 2.1.8 . Estos tratamientos también tienen capacidades adicionales para completar selecciones del libro de registro (más detalles), por lo que no están incluidos en todas las opciones de entrega, pero siempre se pueden comprar como parte de paquetes marcados como con selección según la historia de vida, o por separado.

Así es, en general, el proceso de encontrar y eliminar un error que ocurrió durante la transferencia de datos 1C.

Puede encontrar otros materiales útiles en la sección de Artículos o en nuestro sitio web principal.

© Anna Balyasnikova, últimos cambios abril de 2018

Migrar datos entre diferentes configuraciones no es una tarea trivial. Como siempre, existen varias soluciones, pero no todas son óptimas. Intentemos comprender los matices de la transferencia de datos y elegir una estrategia universal para resolver estos problemas.

El problema de la migración de datos (estamos hablando exclusivamente de productos de la empresa 1C) de una solución a otra no surgió ayer. La empresa 1C comprende perfectamente las dificultades que enfrentan los desarrolladores al crear migraciones, por lo que intenta de todas las formas posibles ayudar con las herramientas.

Durante el desarrollo de la plataforma, la empresa introdujo una serie de herramientas universales, así como tecnologías que simplifican la transferencia de datos. Están integrados en todas las soluciones estándar y, en general, el problema de las migraciones entre configuraciones idénticas se ha resuelto. La victoria se confirma una vez más por la estrecha integración de las soluciones estándar.

Con las migraciones entre soluciones no estándar, la situación es algo más complicada. Una amplia selección de tecnologías permite a los desarrolladores elegir de forma independiente la forma óptima de resolver un problema desde su punto de vista.

Veamos algunos de ellos:

  • intercambiar mediante archivos de texto;
  • uso de planes de intercambio;
  • etc.

Cada uno de ellos tiene sus pros y sus contras. En resumen, la principal desventaja será su verbosidad. La implementación independiente de algoritmos de migración conlleva importantes costos de tiempo, así como un largo proceso de depuración. Ni siquiera quiero hablar de un mayor apoyo a tales decisiones.

La complejidad y el alto costo del soporte llevaron a la empresa 1C a crear una solución universal. Tecnologías que permitan simplificar al máximo el desarrollo y soporte de las migraciones. Como resultado, la idea se implementó en forma de una configuración separada: "Conversión de datos".

Conversión de datos: solución estándar, configuración independiente. Cualquier usuario con una suscripción “ITS:Prof” puede descargar este paquete de forma totalmente gratuita desde el sitio de soporte al usuario o desde el disco ITS. La instalación se realiza de forma estándar, como todas las demás soluciones estándar de 1C.

Ahora un poco sobre las ventajas de la solución. Empecemos por lo más importante: la versatilidad. La solución no está adaptada a configuraciones/versiones de plataforma específicas. Funciona igualmente bien con configuraciones estándar y personalizadas. Los desarrolladores tienen una tecnología universal y un enfoque estandarizado para crear nuevas migraciones. La versatilidad de la solución le permite preparar migraciones incluso para plataformas distintas a 1C:Enterprise.

La segunda gran ventaja son las ayudas visuales. Las migraciones simples se crean sin programación. Sí, sí, ¡sin una sola línea de código! Sólo por esto, vale la pena dedicar tiempo a aprender la tecnología una vez y luego utilizar habilidades invaluables repetidamente.

La tercera ventaja que destacaría es la ausencia de restricciones a la distribución de datos. El propio desarrollador elige el método de entrega de datos a la configuración del receptor. Hay dos opciones disponibles de fábrica: cargar en un archivo xml y conexión directa a la base de datos (COM/OLE).

Estudiar arquitectura

Ya sabemos que la conversión de datos puede hacer maravillas, pero aún no está del todo claro cuáles son las ventajas técnicas. Lo primero que debe comprender es que cualquier migración (conversión) de datos se basa en reglas de intercambio. Las reglas de intercambio son un archivo xml normal que describe la estructura en la que se cargarán los datos de seguridad de la información. El procesamiento del servicio que carga/descarga datos analiza las reglas de intercambio y realiza la carga en base a ellas. Durante la carga, ocurre el proceso inverso.

La configuración "CD" es una especie de constructor visual con la ayuda del cual el desarrollador crea reglas de intercambio. No sabe descargar datos. De esto se encarga el procesamiento de servicios externos adicional incluido en el paquete de distribución del CD. Hay varios de ellos (XX en el nombre del archivo es el número de versión de la plataforma):

  • MDXXExp.epf- el procesamiento le permite cargar una descripción de la estructura de la base de datos en un archivo xml. La descripción de la estructura se carga en el CD para su posterior análisis y creación de reglas de intercambio.
  • V8ExchanXX.epf- carga/descarga datos de la base de información de acuerdo con las reglas de intercambio. En la mayoría de las configuraciones típicas, el procesamiento está presente de fábrica (consulte el elemento del menú "Servicio"). El procesamiento es universal y no está vinculado a ninguna configuración/regla específica.

Bien, ahora, basándonos en todo lo anterior, definamos las etapas para desarrollar una nueva conversión:

  1. Definición de la tarea. Es necesario comprender claramente qué datos se deben transferir (desde qué objetos de configuración) y, lo más importante, dónde transferirlos.
  2. Elaboración de descripciones de estructuras de configuración (Source/Sink) para su posterior carga en el CD. El problema se resuelve mediante el procesamiento del servicio MDXXExp.epf.
  3. Cargar descripciones preparadas de estructuras en la seguridad de la información.
  4. Creación de reglas de intercambio utilizando una herramienta de CD visual.
  5. Realizar carga/descarga de acuerdo con las reglas de conversión de datos creadas utilizando el procesamiento V8ExchanXX.epf.
  6. Depuración de reglas de intercambio (si es necesario).

La conversión más simple

Para la demostración necesitaremos dos configuraciones implementadas. Decidí optar por la opción: “Gestión comercial”, décima edición y una pequeña solución escrita en casa. La tarea será transferir datos desde la configuración estándar "UT". Para abreviar, llamemos a la solución escrita por nosotros mismos "Sink" y a la gestión comercial "Source". Comencemos a resolver el problema transfiriendo elementos del directorio "Nomenclatura".

En primer lugar, echemos un vistazo al esquema de conversión de datos y volvamos a leer la lista de acciones que se deben realizar. Luego lanzamos la configuración “Fuente” y abrimos en ella el procesamiento del servicio MD82Exp.epf.

La interfaz de procesamiento no tiene muchas configuraciones. El usuario sólo necesita indicar los tipos de objetos de metadatos que no se incluirán en la descripción de la estructura. En la mayoría de los casos, no es necesario cambiar estas configuraciones, porque No tiene ningún sentido descargar movimientos utilizando registros de acumulación (como ejemplo).

Es más correcto formar el movimiento mientras se mantienen los documentos en el receptor. Todos los movimientos se realizarán mediante el propio documento tras la transferencia. El segundo argumento en defensa de la configuración predeterminada es la reducción del tamaño del archivo al cargarlo.

Algunos documentos (especialmente en configuraciones estándar) generan movimientos en múltiples registros. Descargar todo esto hará que el archivo XML resultante sea demasiado grande. Esto puede complicar el transporte y la carga posteriores en la base del receptor. Cuanto más grande sea el archivo de datos, más RAM se necesitará para procesarlo. Durante mi práctica, tuve la oportunidad de encontrar archivos cargados indecentemente grandes. Estos archivos se negaron por completo a ser analizados con herramientas estándar.

Entonces, dejamos todas las configuraciones predeterminadas y cargamos la descripción de la configuración en un archivo. Repetimos un procedimiento similar para la segunda base.

Abra el CD y seleccione en el menú principal “Directorios” -> “Configuraciones”. El directorio almacena descripciones de las estructuras de todas las configuraciones que se pueden utilizar para crear conversiones. Cargamos la descripción de la configuración una vez y luego podemos usarla varias veces para crear diferentes conversiones.

En la ventana del directorio, haga clic en el botón “ Agregar” y en la ventana que aparece, seleccione el archivo que describe la configuración. Marque la casilla de verificación "Cargar en una nueva configuración" y haga clic en el botón "Cargar". Realizamos acciones similares con la descripción de la estructura de la segunda configuración.

Ahora está listo para crear reglas de intercambio. En el menú principal del CD, seleccione “Directorios” -> “Conversiones”. Añade un nuevo elemento. En la ventana para crear una nueva conversión, debe especificar: la configuración de origen (seleccione UT) y la configuración de destino (seleccione "Receptor"). A continuación, abra la pestaña "Avanzado" y complete los siguientes campos:

  • Nombre del archivo de reglas de intercambio: las reglas de intercambio creadas se guardarán con este nombre. Puede cambiar el nombre del archivo en cualquier momento, pero es mejor configurarlo ahora. Esto ahorrará tiempo en el futuro. Nombré las reglas para el ejemplo de demostración: "rules-ut-to-priemnik.xml".
  • nombre: el nombre de la conversión. El nombre puede ser absolutamente cualquier cosa, me limité a “Demo”. UT al receptor”.

Eso es todo, haga clic en "Aceptar". Inmediatamente aparece una ventana frente a nosotros pidiéndonos que creemos todas las reglas automáticamente. Aceptar una oferta tan tentadora le dará al maestro la orden de analizar automáticamente la descripción de las configuraciones seleccionadas y generar reglas de intercambio de forma independiente.

Pongamos los puntos sobre las “íes” de inmediato. El asistente no podrá generar nada grave. Sin embargo, no se debe descartar esta posibilidad. Si es necesario establecer un intercambio entre configuraciones idénticas, los servicios de un especialista serán de gran utilidad. Para nuestro ejemplo, es preferible el modo manual.

Echemos un vistazo más de cerca a la ventana "Configuración de reglas de Exchange". La interfaz puede parecer un poco confusa: una gran cantidad de pestañas repletas de controles. De hecho, no todo es tan difícil, empiezas a acostumbrarte a esta locura después de unas horas de trabajar con la aplicación.

En esta etapa, nos interesan dos pestañas: "Reglas de conversión de objetos" y "Reglas de carga de datos". Al principio, debemos configurar las reglas de coincidencia, es decir. comparar objetos de dos configuraciones. En el segundo, determine los posibles objetos que estarán disponibles para que el usuario los cargue.

En la segunda mitad de la pestaña "Reglas de conversión de objetos" hay un panel adicional con dos pestañas: "Conversión de propiedades" y " Convertir valores" El primero seleccionará las propiedades (detalles) del objeto seleccionado, y el segundo es necesario para trabajar con valores predefinidos (por ejemplo, elementos de directorio predefinidos o elementos de enumeración).

Genial, ahora creemos reglas de conversión para directorios. Puede realizar esta acción de dos maneras: usar el Asistente de sincronización de objetos (el botón “”) o agregar correspondencia para cada objeto manualmente.

Para ahorrar espacio, usaremos la primera opción. En la ventana del asistente, desmarque el grupo " Documentación” (solo nos interesan directorios) y ampliar el grupo “ Directorios" Nos desplazamos cuidadosamente por la lista y miramos los nombres de los libros de referencia que se pueden comparar.

En mi caso, existen tres directorios de este tipo: Nomenclatura, Organizaciones y Almacenes. También existe un directorio llamado Clientes, que cumple la misma función que “ Contrapartes"desde la configuración" Utah" Es cierto que el maestro no pudo compararlos debido a sus diferentes nombres.

Podemos solucionar este problema nosotros mismos. Encontramos en la ventana “ Coincidencias de objetos" libro de referencia " Clientela", y en la columna "Fuente" seleccione el directorio "Contrapartes". Luego marque la casilla en la columna "Tipo" y haga clic en el botón "Aceptar".

El Asistente de sincronización de objetos ofrecerá crear automáticamente reglas para convertir las propiedades de todos los objetos seleccionados. Las propiedades se compararán por sus nombres y, para nuestra demostración, esto será suficiente, estamos de acuerdo. La siguiente pregunta será una propuesta para crear reglas de carga. Aceptémoslo también.

La base para las reglas de intercambio está lista. Seleccionamos los objetos para la sincronización y las reglas para convertir propiedades y cargar reglas se crearon automáticamente. Guardemos las reglas de intercambio en un archivo, luego abramos la "Fuente" del IB (en mi caso es UT) e iniciemos el procesamiento del servicio en él. V8Exchan82.epf.

En primer lugar, en la ventana de procesamiento, seleccione las reglas de intercambio que creamos. Respondemos afirmativamente a la pregunta sobre las reglas de carga. El procesamiento analizará las reglas de intercambio y creará un árbol de objetos con el mismo nombre disponibles para cargar. Para este árbol, podemos configurar todo tipo de selecciones o nodos de intercambio, cambiando cuáles necesitamos para seleccionar datos. Queremos descargar absolutamente todos los datos, por lo que no es necesario instalar filtros.

Después de completar el proceso de carga de datos a un archivo, vaya a IB “ Receptor" También abrimos procesamiento en él. V8Exchan82.epf, solo que esta vez nos dirigimos a la pestaña “Carga de datos”. Seleccione el archivo de datos y haga clic en el botón "Descargar". Eso es todo, los datos se han transferido correctamente.

Problemas del mundo real

La primera demostración podría resultar engañosa. Todo parece bastante simple y lógico. Actualmente, esto no es verdad. En el trabajo real surgen problemas que son difíciles o completamente imposibles de resolver utilizando únicamente medios visuales (sin programación).

Para no decepcionarme con la tecnología, preparé varios problemas de la vida real. Definitivamente los encontrarás en el trabajo. No parecen tan triviales y te hacen ver la conversión de datos desde un nuevo ángulo. Considere detenidamente los ejemplos presentados y siéntase libre de utilizarlos como fragmentos para resolver problemas reales.

Tarea número 1. Complete los detalles que faltan

Supongamos que necesitamos transferir el directorio " Contrapartes" El receptor dispone para este fin de un directorio similar de “Clientes”. Es completamente apto para el almacenamiento de datos, pero tiene accesorios " Organización”, que permite separar las contrapartes por pertenencia a la organización. Por defecto, todas las contrapartes deben pertenecer a la organización actual (esto se puede obtener de la constante del mismo nombre).

Hay varias soluciones al problema. Consideraremos la opción de completar los detalles “ Organización“justo en la base de datos” Receptor", es decir. en el momento de la carga de datos. La organización actual se almacena de forma constante, por lo tanto, no existen barreras para obtener este valor. Abramos la regla de conversión de objetos (en adelante, PKO) " Clientela”(haga doble clic en el objeto) y en el asistente de configuración de reglas, vaya a la sección “Manejadores de eventos”. En la lista de manejadores encontraremos “ Después de descargar”.

Describamos el código para obtener la organización actual y luego asignarlo a los detalles. En el momento en que se activa el controlador "Después de la carga", el objeto estará completamente formado, pero aún no se escribirá en la base de datos. Nadie nos prohíbe cambiarlo a nuestro criterio:

Si NO es Object.ThisGroup, entonces Object.Organization = Constants.CurrentOrganization.Get(); terminara si;

Antes de completar los detalles " Organización"Es necesario comprobar el valor del atributo " Este grupo" Para el libro de referencia " Clientela"La característica jerárquica está configurada, por lo que es necesario verificar el grupo. Complete los detalles de manera similar. Asegúrese de leer la ayuda para conocer otras opciones de controlador " Después de cargar" Por ejemplo, entre ellos está el parámetro “ Rechazo" Si le asigna el valor "Verdadero", el objeto no se escribirá en la base de datos. De este modo, es posible limitar los objetos que se pueden escribir en el momento de la carga.

Tarea número 2. Detalles para el registro de información.

En el directorio “ Contrapartes"Configuraciones UT, detalles disponibles" Comprador" Y " Proveedor" Ambos detalles son del tipo “ Booleano” y se utilizan para determinar el tipo de contraparte. En BI” Receptor”, en el directorio “ Clientela“No hay detalles similares, pero sí un registro de información” Tipos de clientes" Realiza una función similar y puede almacenar múltiples atributos para un cliente. Nuestra tarea es transferir los valores de los detalles en entradas separadas en el registro de información.

Desafortunadamente, los medios visuales por sí solos tampoco pueden hacer frente a esto. Empecemos poco a poco, creemos un nuevo software para el registro de información” Tipos de clientes" No cites nada como fuente. Evite crear reglas de carga automáticamente.

El siguiente paso es crear las reglas de carga. Vaya a la pestaña correspondiente y haga clic en " Agregar" En la ventana para agregar reglas de carga, complete:

  • Método de muestreo. Cambiar a "Algoritmo arbitrario";
  • Regla de conversión. Seleccionar el registro de información “Tipos de Clientes”;
  • Código (nombre) de la regla. Anótelo como “Descarga de tipos de clientes”;

Ahora necesita escribir código para seleccionar datos para cargar. El parámetro " Muestreo de datos" Podemos colocar una colección con un conjunto de datos preparado. Parámetro " Muestreo de datos"Puede tomar varios valores: resultado de la consulta, selección, colecciones de valores, etc. Lo inicializamos como una tabla de valores con dos columnas: cliente y tipo de cliente.

A continuación se muestra el código para el controlador de eventos " Antes del procesamiento" Inicializa el parámetro “ Muestreo de datos” seguido de completar los datos del directorio “ Contrapartes" Aquí debes prestar atención a completar la columna “ Tipo de cliente" En “UT” nuestros atributos son del tipo “Booleano” y el destinatario es una enumeración.

En esta etapa, no podemos convertirlos al tipo requerido (no está en UT), por lo que por ahora los dejaremos en forma de cadenas. No es necesario que hagas esto, pero quiero mostrarte de inmediato cómo convertir un tipo que falta en la fuente.

DataFetch = Nueva tabla de valores(); DataSelection.Columns.Add("Cliente"); DataSelection.Columns.Add("ClienteTipo"); SeleccionandoDataFromDirectory = Directorios.Cuentas.Select(); Mientras selecciona DataFromDirectory.Next() bucle si SelectingDataFromDirectory.ThisGroup luego continúa; terminara si; Si la selección de datos es de Directory.Buyer, entonces NewRow = Selección de datos.Add(); NewRow.Client = DataFetchFromDirectory.Link; NewRow.ClientType = "Cliente"; terminara si; Si DataFetchFromDirectory.Supplier Entonces NewRow = DataFetch.Add(); NewRow.Client = DataFetchFromDirectory.Link; NewString.ClientType = "Proveedor"; terminara si; Fin del ciclo;

Guardemos la regla de carga de datos y volvamos a la pestaña " Reglas de conversión de objetos" Agreguemos para el registro de información “ Tipos de clientes“Reglas de conversión de propiedad: cliente y tipo de cliente. Dejaremos el código fuente vacío y en el controlador de eventos "Antes de descargar" escribiremos:

//Para la propiedad “Cliente” Valor = Fuente.Cliente; //Para la propiedad “ClientType” If Source.Client = "Buyer" Then Expression = "Enumerations.ClientTypes.Buyer" ElseIf Source.Client = "Proveedor" Then Expression = "Enumerations.ClientTypes.Supplier"; terminara si;

En el listado, los detalles se completan según la muestra de datos seleccionada. Simplemente pasamos el cliente como enlace, y escribimos el tipo de cliente en el parámetro “ Expresión" Los datos de este parámetro se interpretarán en el receptor y, cuando se ejecute, la propiedad se completará con el valor correcto de la enumeración.

Eso es todo, las reglas de intercambio están listas. El ejemplo considerado resultó ser bastante universal. A menudo se utiliza un enfoque similar al migrar datos de configuraciones creadas en la plataforma 7.7. Un ejemplo sorprendente de esto es la transferencia de detalles periódicos.

Tarea número 3. Trucos con partes de la mesa.

A menudo te encuentras con tareas que requieren publicar filas de una sección de la tabla en varias. Por ejemplo, en la configuración inicial, los servicios y bienes se registran en una parte tabular, y en el receptor, el almacenamiento de estas entidades está separado. Una vez más, el problema no puede resolverse por medios visuales. Aquí conviene tomar como base la solución del segundo problema.

Establecemos una regla para descargar datos, especificamos un algoritmo arbitrario y en el controlador "Antes de descargar" escribimos una solicitud para obtener datos de la parte tabular.

Para ahorrar espacio, no proporcionaré el código de la solicitud (siempre puede consultar las fuentes); no hay nada inusual en él. Clasificamos la selección resultante y colocamos los resultados ordenados en el parámetro ya familiar " Muestreo de datos" Nuevamente es conveniente utilizar una tabla de valores como colección:

DataFetch = Nueva tabla de valores(); //Habrá otra parte de la tabla aquí Data Selection.Columns.Add(“Products”); //Aquí también habrá una parte tabular Data Selection.Columns.Add(“Services”); SelectionData.Columns.Add(“Enlace”);

Tarea número 4. Transferir datos a una operación

Si una organización utiliza varios sistemas contables, tarde o temprano será necesario migrar datos con la posterior generación de transacciones.

En la configuración “ PA“Existe un documento universal” Operación”y es ideal para formar más alambres. Sólo hay un problema: el documento está elaborado con astucia y los datos no se pueden transferir tan fácilmente.

Encontrará un ejemplo de dicha conversión en el código fuente del artículo. La cantidad de código resultó ser bastante grande, por lo que no tiene sentido publicarlo junto con el artículo. Permítanme decirles que la carga nuevamente utiliza un algoritmo arbitrario en las reglas para cargar datos.

Tarea número 5. Sincronización de datos en múltiples detalles

Ya hemos visto varios ejemplos, pero todavía no hemos hablado sobre la sincronización de objetos durante la migración. Imaginemos que necesitamos transferir contrapartes y algunas de ellas probablemente estén en la base de datos del receptor. ¿Cómo transferir datos y evitar que aparezcan duplicados? En este sentido, el CD ofrece varias formas de sincronizar los objetos transferidos.

El primero es por identificador único. Muchos objetos tienen un identificador único que garantiza la unicidad dentro de una tabla. Por ejemplo, en el directorio “ Contrapartes“No puede haber dos elementos con los mismos identificadores. CD realiza cálculos para este y para todos los PCO creados, de forma predeterminada se habilita inmediatamente una búsqueda por identificador. Durante la creación del PCO, deberías haber prestado atención a la imagen de una lupa junto al nombre del objeto.

La sincronización mediante un identificador único es un método confiable, pero no siempre es apropiado. Al fusionar directorios “ Contrapartes”(de varios sistemas diferentes) no ayudará mucho.

En tales casos, es más correcto sincronizar objetos según varios criterios. Es más correcto buscar contrapartes por TIN, KPP, nombre o dividir la búsqueda en varias etapas.

La conversión de datos no limita al desarrollador a la hora de definir los criterios de búsqueda. Veamos un ejemplo abstracto. Supongamos que necesitamos sincronizar directorios " Contrapartes” de diferentes bases de información. Preparemos el PKO y en la configuración de las reglas de conversión de objetos, marquemos la casilla " Continuar buscando campos de búsqueda si el objeto receptor no se encuentra por identificador" Con esta acción, definimos inmediatamente dos criterios de búsqueda: por un identificador único y campos personalizados.

Tenemos derecho a elegir los campos nosotros mismos. Al marcar TIN, KPP y Nombre, inmediatamente le indicaremos varios criterios de búsqueda. ¿Cómodo? Bastante, pero nuevamente esto no es suficiente. ¿Y si queremos cambiar el criterio de búsqueda? Por ejemplo, primero buscamos la combinación TIN+KPP, y si no encontramos nada, entonces empezamos a probar suerte con el nombre.

Un algoritmo de este tipo es bastante capaz de implementarse. En el controlador de eventos “ Campos de búsqueda Podemos especificar hasta 10 criterios de búsqueda y para cada uno de ellos definir su propia composición de campos de búsqueda:

Si SearchOptionNumber = 1 entonces SearchPropertyNameString = “TIN, KPP”; De lo contrarioIfSearchOptionNumber = 2 ThenSearchPropertyNameString = “Nombre”; terminara si;

Siempre hay varias soluciones.

Cualquier tarea tiene varias soluciones y la transferencia de datos entre diferentes configuraciones no es una excepción. Cada desarrollador tiene derecho a elegir su propia ruta de solución, pero si constantemente tiene que desarrollar migraciones de datos complejas, le recomiendo encarecidamente que preste atención al "". Puede que al principio tengas que invertir recursos (tiempo) en formación, pero te darán más que frutos en el primer proyecto más o menos serio.

En mi opinión, la empresa 1C ignora injustamente el tema del uso de la conversión de datos. Durante toda la existencia de la tecnología, solo se publicó un libro sobre ella: "1C: Enterprise 8. Conversión de datos: intercambio entre soluciones de aplicaciones". El libro es bastante antiguo (2008), pero aun así es recomendable familiarizarse con él.

El conocimiento de las plataformas sigue siendo necesario

"es una herramienta universal, pero si planea utilizarla para crear migraciones de datos a partir de configuraciones desarrolladas para la plataforma 1C:Enterprise 7.7, tendrá que dedicar tiempo a familiarizarse con el lenguaje integrado. La sintaxis y la ideología del idioma son muy diferentes, por lo que tendrás que dedicar tiempo a aprender. De lo contrario, el principio sigue siendo el mismo.



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