Plataforma 1C:Enterprise >> Preguntas frecuentes >> Desarrollo

   

Almacenamiento de datos

Uso de atributos de tipo Cadena

Este artículo describe los estándares que se aplican a los atributos de tipo Cadena. Todas las recomendaciones enumeradas son obligatorias a menos que se indique lo contrario.

1.1. Para los atributos de tipo Cadena, especifique el tipo de longitud Variable en la propiedad Longitud permitida, y especifique la longitud máxima de la cadena. Evite usar el tipo de longitud Fija a menos que sea absolutamente necesario (la longitud fija se puede mantener agregando espacios al final de la cadena).

1.2. Si la longitud máxima de la cadena está predefinida (en estándares, documentos normativos, etc.), especifíquela en la propiedad Longitud, o en la propiedad Longitud de descripción del atributo estándar Descripción. Por ejemplo, la longitud del atributo SSN del catálogo Empleados debe ser de 9 caracteres.

1.3. Calcule la longitud de una cadena concatenada sumando las longitudes de todos sus segmentos. Por ejemplo, calcule la longitud de la presentación de la dirección sumando las longitudes de las líneas de dirección.

1.4 Si la longitud de una cadena no está regulada por ningún estándar, establezca la longitud que sea suficiente para almacenar datos en la mayoría de los casos. Por ejemplo, un nombre completo de contratista generalmente ocupa hasta 250 caracteres, un nombre de archivo en la mayoría de los sistemas de archivos ocupa hasta 260 caracteres, un nombre completo de una persona ocupa hasta 100 caracteres, y así sucesivamente.

2. Se permite el uso de cadenas de longitud indefinida en los siguientes casos:

2.1. Un atributo de cadena está destinado a almacenar texto definido por el usuario que puede tener una longitud significativa. Un ejemplo común es un campo de formulario que permite la entrada de múltiples líneas de texto. Por ejemplo, un gerente puede almacenar todo el historial de comunicación con el cliente en el campo Información adicional de un pedido de cliente; un usuario puede almacenar un texto arbitrario que contiene múltiples líneas en el campo Comentario, y así sucesivamente.

2.2. Un atributo de cadena almacena datos técnicos generados por la aplicación, que en su mayoría no están destinados a ser vistos por los usuarios, sino a ser utilizados en algoritmos de procesamiento de datos. Por ejemplo, documentos XML o encabezados de mensajes de correo electrónico.

3. Al utilizar cadenas de longitud indefinida, recuerde las siguientes limitaciones del lenguaje de consulta:

3.1 Al comparar, agrupar o seleccionar valores distintos, debes convertirlos en cadenas de longitud fija. De lo contrario, el resultado del cálculo podría ser incorrecto.

Recomendamos que utilices la siguiente sintaxis de consulta:

CAST AS STRING(1000)

3.2. En informes basados en esquemas de composición de datos, especifica el parámetro Tipo de Valor para esos campos (en la pestaña Conjuntos de Datos).

Ten en cuenta que la conversión frecuente de longitud no definida a longitud fija en consultas e informes basados en esquemas de composición de datos podría indicar que el diseño de la aplicación no es óptimo. En ese caso, se recomienda rediseñar a favor de la longitud fija.

3.3. En todos los demás casos, puedes utilizar libremente cadenas de longitud no definida en consultas.

4.1. Si una cadena se muestra en un campo de formulario de impresión, asegúrate de que nunca se corte, independientemente de la longitud de cadena declarada. Cortar una cadena podría llevar a la pérdida de datos significativos, como números de edificio y apartamento en una dirección de entrega.

Longitud de códigos y números de objetos de configuración

Este artículo describe los estándares que se aplican a la longitud de códigos o números de objetos. Todas las recomendaciones enumeradas son obligatorias a menos que se indique lo contrario.

Esta recomendación es opcional

Establece la longitud de los códigos o números de objetos de configuración en función de su significado.

  1. Si un código se utiliza como una presentación corta de un elemento de datos, no utilices la numeración automática.
    Ejemplo: El código del catálogo Usuarios almacena nombres de usuario cortos. La longitud del código debe ser suficiente para almacenar presentaciones de cadena corta de objetos de usuario.
  2. Si un código o número se utiliza como un ID de objeto numérico, que puede tener un prefijo de cadena, especifica la longitud del código o número en función del número total estimado de objetos almacenados en la base de datos, o de objetos relacionados con un período específico (para documentos o procesos comerciales), o de objetos relacionados con un propietario específico (para catálogos jerárquicos y subordinados y tareas). La longitud del número incluye la longitud del prefijo (como el prefijo de infobase u organización, si se especifica).

    Se recomiendan los siguientes valores de longitud de código o número para configuraciones estándar: 3, 5, 9, 11 (incluyendo la longitud del prefijo).

    Si tu configuración incluye el subsistema de Prefijación de Objetos de la Biblioteca de Subsistemas de 1C, la longitud recomendada del número de documento o código de catálogo (incluyendo la longitud del prefijo) es de 11 o más (11, 13, 15…)

  3. Si un objeto no requiere un código o número, establece la longitud del código o número en 0.

Recomendamos que establezcas una longitud de código o número variable.

Nombre, sinónimo y comentario

Este artículo describe los estándares que se aplican a los nombres de objetos, sinónimos y comentarios. Todas las recomendaciones enumeradas son obligatorias a menos que se indique lo contrario.

1.1. Un Sinónimo de objeto debe describir el objeto de manera concisa, reflejando el propósito del objeto. Un sinónimo es obligatorio para cada objeto.

Esto es necesario porque los sinónimos están presentes en la interfaz de usuario (en formularios, informes, interfaces de comandos, etc.), y por lo tanto deben describir los objetos de manera correcta, clara y coherente. Además de los objetos de metadatos, este requisito también se aplica a los atributos de objetos de metadatos, secciones tabulares, atributos de secciones tabulares, dimensiones de registros, recursos y cualquier otro objeto de configuración que tenga sinónimos.

1.2. Recomendamos que no utilices abreviaturas para los sinónimos. Puedes hacer una excepción para las abreviaturas que son conocidas por la audiencia objetivo (como Suma, TIN o SSN).

1.3. El significado de todos los términos utilizados en los sinónimos de objetos debe ser claro para los usuarios, al igual que cualquier mensaje mostrado a los usuarios. No utilices jerga, nombres informales de productos o empresas, palabras en inglés escritas en alfabeto extranjero, palabras extranjeras escritas en alfabeto inglés, etc.

1.4. Especifica sinónimos para los atributos estándar de los objetos de metadatos en función de su significado real en tu aplicación.

1.5. Para los atributos estándar Padre y Propietario, siempre cambie sus sinónimos predeterminados. Por ejemplo, una configuración contiene el catálogo Archivos, que tiene un atributo estándar Propietario de tipo CatalogRef.FileFolders.
Incorrecto:

Correcto:

Para algunos catálogos está bien dejar el sinónimo predeterminado “Descripción” del atributo estándar Descripción. Para el catálogo Archivos, puede elegir el sinónimo “Nombre de archivo”, y para el catálogo Individuos, puede elegir el sinónimo “Nombre completo”.

1.6. Si tiene dos o más objetos de metadatos similares, asegúrese de que sus sinónimos los describan completamente.

Sinónimos incorrectos de catálogos:

Correcto:

Los nombres deben describir explícitamente los objetos. De lo contrario, los usuarios preguntarán: “Si el catálogo Cuentas bancarias de contrapartida almacena las cuentas bancarias de las contrapartes, ¿en qué catálogo se almacenan las cuentas de los bancos?”

Este requisito también se aplica a los sinónimos de los objetos de metadatos subordinados (atributos, secciones tabulares, dimensiones, recursos, etc.).
El siguiente ejemplo describe los sinónimos de los atributos de la sección tabular Artículos del documento Recuento de inventario.
Incorrecto:

Correcto:

El siguiente ejemplo describe los sinónimos del atributo estándar Descripción y otro atributo del catálogo Artículos.
Incorrecto:

Correcto:

2.1. Recomendamos que cree el objeto Nombre basado en su sinónimo (eliminando espacios y otros caracteres no permitidos en los nombres y capitalizando la primera letra de cada palabra). Ejemplos:

Puede usar nombres más cortos donde se omita una o varias palabras del sinónimo. Ejemplos:

Al crear nombres a partir de sinónimos, omita los artículos. También puede omitir preposiciones y conjunciones. Por ejemplo, el atributo ValorDescuentoRecargo tiene el sinónimo “Valor de descuento o recargo”.

Por otro lado, puede usar sinónimos más cortos donde se omitan una o varias partes “técnicas” del nombre.

Este requisito garantiza que los objetos de configuración y sus presentaciones en la interfaz de usuario sean fácilmente reconocibles. Ayuda en la etapa de implementación porque los desarrolladores generalmente no participan en este proceso, dejándolo en manos de especialistas en implementación.

Consulte también: Nombres de objetos de metadatos en configuraciones

2.2. Los objetos de metadatos con el prefijo Eliminar son una excepción a esta regla.

Tampoco cambie el nombre de los objetos de metadatos, sus atributos, formularios, etc., si los objetos deben cumplir con los requisitos de compatibilidad con versiones anteriores. En particular, las diferentes versiones de la biblioteca dentro de una sola revisión deben ser compatibles entre sí.

2.3. Los nombres de los objetos de metadatos de nivel superior (catálogos, documentos, etc.) no deben exceder los 128 caracteres.

2.4. Recomendamos que los nombres de los objetos de metadatos subordinados (atributos, dimensiones, recursos, etc.) no sean idénticos a los nombres de los objetos principales. Por ejemplo, la dimensión Usuario (que tiene el tipo CatalogRef.Usuarios) del registro de información EjecutoresDeTareas tiene un nombre incorrecto; debería llamarse Ejecutor para reflejar su significado.

2.5. Recomendamos que no utilice nombres idénticos a los nombres de las tablas del lenguaje de consulta (Documento, Catálogo, RegistroDeInformación, etc.). Tales nombres pueden causar errores durante la ejecución de la consulta, dificultar el uso del generador de consultas y disminuir la claridad del texto de la consulta. Por ejemplo, esta consulta devuelve un error:

SELECT
Información.Información
FROM
RegistroDeInformación.Información AS Información

3.1. Especifique el Comentario solo cuando necesite dejar una nota sobre el objeto para otro desarrollador. Ejemplos de comentarios para un atributo de catálogo son “Se implementa la indexación para la optimización de informes filtrados por contraparte” y “Se utiliza en la contabilidad en moneda extranjera”.

3.2. Comience su comentario con mayúscula. Use puntos solo en abreviaturas.

Ver también

Entrega de datos en paquetes de configuración

Este artículo describe los estándares que se aplican a los datos incluidos en el paquete de entrega de configuración. Todas las recomendaciones mencionadas son obligatorias a menos que se indique lo contrario.

Si desea incluir algunos datos en su paquete de entrega de configuración (por ejemplo, datos para llenar catálogos, configuraciones de informes, reglas de intercambio de datos, etc.), le recomendamos que utilice formatos diseñados para la transferencia de datos (como XML) y que utilice la plantilla “Documento de texto” o la plantilla “Datos binarios”.

No utilice la plantilla “Documento de hoja de cálculo” para incluir datos en un paquete de entrega de configuración.

Información y comprobaciones de llenado

Este artículo describe los estándares que se aplican a la redacción de información y al uso de la opción de comprobación de llenado. Todas las recomendaciones mencionadas son obligatorias a menos que se indique lo contrario.

1.1. Propiedad Información. Cada objeto de metadatos tipado (atributo de objeto, atributo de sección tabular, dimensión o recurso de registro) debe tener una información que explique el propósito del objeto a los usuarios finales.

Los atributos estándar Código, Descripción, Padre, Propietario y Período (para registros de información periódica) también deben tener información. Los demás atributos estándar generalmente no requieren información.

Mantenga la información limpia de mensajes “basura” como copias de objetos de metadatos o sinónimos de atributos. No se requiere información en los siguientes casos:

2.1. Propiedad Comprobación de llenado. Para todos los objetos de metadatos tipados, atributos estándar y secciones tabulares que deben llenarse según la lógica del objeto, establezca sus propiedades de “Comprobación de llenado” en “Mostrar error”.

En algunos casos, no tiene sentido contabilizar un documento con atributos o secciones tabulares vacías. Por ejemplo, un documento de Pedido de cliente representa la solicitud de un cliente para comprar una cierta cantidad de artículos. Un pedido sin clientes o una sección tabular de Artículos vacía no tiene sentido, por lo tanto, el campo Cliente y la sección tabular Artículos deben tener sus propiedades de “Comprobación de llenado” establecidas en “Mostrar error”.

2.2. Al especificar el valor “Verificar llenado”, recuerde que todas las limitaciones y verificaciones deben describirse de la manera más completa posible en los metadatos de la configuración. Por lo tanto, si al menos un escenario requiere llenar el atributo, establezca “Verificar llenado” en “Mostrar error”. Si otros escenarios no requieren llenar el atributo, refleje esto en el controlador de eventos del módulo de objeto FillCheckProcessing.

No utilice el método inverso cuando “Verificar llenado” se establece en “Sin verificación” y el controlador FillCheckProcessing incluye verificaciones de llenado adicionales. Esto dificulta el análisis de la lógica de la configuración.

2.3. Si la verificación de llenado es condicional, le recomendamos que utilice la apariencia condicional del formulario para alternar la propiedad “AutoMarkIncomplete”. Desactívela si el estado actual del objeto no requiere realizar verificaciones de llenado.

Ver también

Reflejar la naturaleza de los objetos de metadatos utilizando atributos

Este artículo describe los principios de reflejar los propósitos y funciones de las entidades de lógica empresarial en los objetos de metadatos y sus atributos. Todas las recomendaciones enumeradas son obligatorias a menos que se indique lo contrario.

1. Al diseñar la estructura de la aplicación, utilice diferentes tipos de objetos para representar diferentes entidades. Por ejemplo, utilice el catálogo Empresas para empresas y el catálogo Departamentos para departamentos.

2. Para precisar el propósito del objeto, puede agregar atributos al objeto, de modo que su significado y comportamiento cambien según los valores de los atributos. Por ejemplo, el catálogo Empresas puede almacenar tanto empresas regulares como subsidiarias, y el catálogo Empleados puede almacenar tanto empleados actuales como antiguos.

Recomendamos que en estos casos cree atributos dedicados que identifiquen de manera única el tipo o estado del objeto. Pueden ser atributos Booleanos o enumeraciones que almacenen los tipos de objeto. No determine el tipo de objeto por características indirectas, en particular, verificando si alguno de sus atributos está lleno.

Incorrecto:

Correcto:

3. Al mismo tiempo, si el catálogo Empleados tiene los atributos FechaContratación y FechaDespido, no es razonable agregar un par de atributos Booleanos Contratado y Despedido. Es una buena práctica crear un único atributo de enumeración para entidades que pueden tener múltiples estados. Por ejemplo, un atributo puede tener estados “trabaja” y “despedido”, y se pueden agregar más estados según sea necesario.

Manejo de objetos inactivos

Este artículo describe los estándares que se aplican a los objetos inactivos. Todas las recomendaciones enumeradas son obligatorias a menos que se indique lo contrario.

Esta recomendación es opcional

1. Esta recomendación se aplica a situaciones en las que algún objeto de la base de datos se vuelve permanentemente o temporalmente inactivo (un empleado deja la empresa o toma una licencia de maternidad, un departamento ya no existe debido a una reorganización, etc.); y no se puede simplemente eliminar el objeto porque esto afectará la integridad de las referencias (otros objetos hacen referencia a él). Por ejemplo, un objeto Archivo debe tener una referencia a un empleado en el campo Autor incluso si el autor dejó la empresa.

2. Para evitar que los objetos inactivos aparezcan en las listas de autocompletado y selección rápida, utilice uno de los enfoques enumerados a continuación (2.1 o 2.2). Se describen en el ejemplo del catálogo Usuarios, que contiene la lista de usuarios del sistema de información.

Para marcar usuarios inactivos, se agrega el atributo Inactivo (Booleano) al catálogo Usuarios. El valor predeterminado del atributo es Falso.

2.1. Si se debe prohibir la visualización de usuarios inactivos en todos los campos de entrada o en la mayoría de los campos de entrada, hágalo la opción predeterminada.

2.1.1. En el módulo del administrador del catálogo Usuarios, implemente los controladores ChoiceDataGetProcessing y FormGetProcessing para establecer los parámetros de filtro. Ejemplo:

Procedure ChoiceDataGetProcessing(ChoiceData, Parameters, StandardProcessing)
 Si No Parameters.Filter.Property("Inactivo") Entonces
  Parameters.Filter.Insert("Inactivo", Falso);
 FinSi;
FinProcedure

Procedure FormGetProcessing(FormType, Parameters, SelectedForm,
                            AdditionalInformation, StandardProcessing)
 Si FormType = "ChoiceForm" Entonces 
  ParameterChanged = Falso;  
  Si No Parameters.Property("Filter") Entonces
   Parameters.Insert("Filter", New Structure("Inactivo", Falso));
   ParameterChanged = Verdadero;
  Sino Si No Parameters.Filter.Property("Inactivo") Entonces
   Parameters.Filter.Insert("Inactivo", Falso);
   ParameterChanged = Verdadero;
  FinSi;
  
  // Este código utiliza los valores de parámetro cambiados
  Si ParameterChanged Entonces  
   StandardProcessing = Falso;
   SelectedForm = "ChoiceForm"; // Pasando el nombre del formulario de selección
  FinSi;
 FinSi;
FinProcedure

2.1.2. Para atributos donde se requiere un comportamiento de aplicación diferente (por ejemplo, mostrar todos los usuarios o aplicar otro filtro), establezca las propiedades ChoiceParameters y ChoiceParameterLinks en este contexto con los valores apropiados:

  • para mostrar usuarios inactivos, establezca la propiedad ChoiceParameters del atributo en Filter.Inactivo(Falso);
  • para mostrar todos los usuarios sin filtrar, use tanto los valores Verdadero como Falso.

2.2. Si el uso del filtro de objetos inactivos depende fuertemente del contexto (escenarios de uso), no lo haga el comportamiento predeterminado.

  • No implemente el módulo del administrador del catálogo Usuarios.
  • En el escenario más simple, para todos los objetos que tienen atributos del tipo CatalogRef.Usuarios, establezca los valores de las propiedades ChoiceParameters y ChoiceParameterLinks como se describe en la sección 2.1.2.
  • En escenarios donde el criterio de uso del filtro no se puede describir mediante parámetros de selección, implemente los controladores ChoiceDataGetProcessing, ChoiceProcessing y TextEditEnd y cree un formulario de selección separado que implemente la lógica del filtro.

3. Recomendamos que agregue el comando Mostrar usuarios inactivos al menú Todas las acciones del formulario de lista de usuarios. Le proporciona la opción de abrir los detalles del usuario y activar al usuario (por ejemplo, cuando un empleado regresa de una licencia de maternidad).

4. Recomendamos que utilice el siguiente formato para mostrar objetos inactivos en listas: InaccessibleCellTextColor (192,192,192).

https://kb.1ci.com/bin/download/OnecInt/KB/1C_Enterprise_Platform/FAQ/Development/WebHome/en_360026820633_i8100638.files_demo.png


Atributo de comentario de documentos

Este artículo describe los estándares que se aplican al atributo Comentario de los documentos. Todas las recomendaciones enumeradas son obligatorias a menos que se indique lo contrario.

Esta recomendación es opcional

1. Se recomienda crear el atributo Comentario (una cadena de longitud indefinida) para todos los documentos. Sirve para notas de usuario que no están relacionadas con la lógica del documento (como el motivo para establecer una marca de eliminación). Los derechos de acceso del usuario al campo son los mismos que sus derechos de acceso al documento (si el documento es de solo lectura, el comentario también será de solo lectura; si se permite escribir en el documento, también se permite editar el comentario).

2. Si el escenario de uso estándar implica que los usuarios agreguen datos de texto arbitrarios al documento, cree atributos adicionales para almacenar estos datos. Por ejemplo, si necesita almacenar el historial de comunicación con el cliente en un Pedido de cliente, cree el atributo Información adicional para este propósito en lugar de usar el atributo Comentario.

3. En el escenario más simple, puede utilizar la función InputString como editor externo para los comentarios. Si su configuración incluye 1C:Subsystems Library, puede utilizar el procedimiento OpenCommentEditForm del módulo CommonUseClient.

Eliminación de objetos de metadatos obsoletos de las configuraciones

Este artículo describe los estándares que se aplican a la eliminación de objetos de metadatos obsoletos. Todas las recomendaciones enumeradas son obligatorias a menos que se indique lo contrario.

1. Al cambiar la estructura de los metadatos de la configuración, al eliminar un objeto de metadatos (atributo, dimensión, recurso, etc.) relacionado con los datos de la base de datos de información, debe decidir si simplemente elimina sus datos o los migra a otras estructuras de datos. Recomendamos seguir estas recomendaciones al migrar los datos del objeto:

1.1. No elimine permanentemente los objetos y atributos de metadatos obsoletos. En su lugar, márquelos como obsoletos agregando el prefijo Eliminar a sus nombres. Ejemplo: cambie el nombre de AcuerdoPrincipal a EliminarAcuerdoPrincipal. Recomendamos agregar el prefijo (no utilizado) al sinónimo del objeto o atributo, por ejemplo: (no utilizado) Acuerdo principal. Si un atributo estándar se vuelve obsoleto, también agregue el prefijo (no utilizado) a su sinónimo.

1.2. Una vez que haya cambiado la estructura de los metadatos, transfiera los datos de los atributos obsoletos a la nueva estructura de metadatos. Si el objeto de metadatos que se va a eliminar es un documento que genera registros de registro y los registros relacionados no se eliminan junto con el documento, asegúrese de que los registros de registro se conserven. Recomendamos hacer lo siguiente para preservar los registros de registro generados por objetos de documento obsoletos:

1.3. Dado que el uso de objetos y atributos de metadatos obsoletos después de cambiar la estructura de metadatos no es un procedimiento adecuado, reemplace todas las apariciones de llamadas a objetos obsoletos llamando a los nuevos en toda la configuración.

1.4. Ordene los objetos y atributos de metadatos obsoletos en el árbol de metadatos según los requisitos comunes de la configuración.

Seguir estas reglas garantiza que los registros de la base de datos de información existentes ya no estén relacionados con objetos de metadatos obsoletos y evita la generación de nuevos registros de la base de datos de información relacionados con estos objetos.

2. Cuando se lance una nueva versión de la configuración, elimine permanentemente los objetos y atributos de metadatos obsoletos marcados con el prefijo Eliminar si se cumple al menos una de las siguientes condiciones:

Autosuficiencia de registros

Este artículo describe los estándares que se aplican a la estructura del registro. Todas las recomendaciones enumeradas son obligatorias a menos que se indique lo contrario.

Al desarrollar la estructura del registro, recuerde que el registro debe mantenerse lógicamente independiente de los registradores. Cualquier lógica basada en los datos del registro y cualquier informe sobre el registro no debe acceder a los campos del registrador; todos los datos requeridos deben estar ubicados en el propio registro.

Acceder a los campos del registro utilizando . (punto) conduce a conexiones implícitas con tablas adicionales. Además, una base de datos distribuida podría no tener un registrador si los registros del registro se transfieren entre nodos pero los registradores no lo hacen.

Principios de almacenamiento de datos genéricos

Este artículo proporciona pautas para elegir los tipos de objetos de metadatos óptimos para almacenar datos en su configuración.

1. En la etapa de diseño de la solución, es muy importante seleccionar correctamente los tipos de objetos de metadatos que almacenarán los datos comerciales. Elecciones incorrectas pueden afectar la eficiencia de la solución aplicada y las opciones de desarrollo futuro, y dificultar la adaptación a posibles cambios en las tareas comerciales cubiertas por la solución aplicada.

2. Recomendamos que elija los tipos de objetos de metadatos en función del siguiente diagrama:

https://kb.1ci.com/bin/download/OnecInt/KB/1C_Enterprise_Platform/FAQ/Development/WebHome/en_360026820673_3.jpg

* Las flechas representan dependencias de datos (referencias cruzadas).

El diagrama contiene los siguientes bloques:

1. Datos convencionalmente estáticos. Esto incluye datos que se ingresan normalmente una vez, rara vez se cambian y se acceden regularmente. Ejemplos: clasificadores, configuraciones, listas, registros y regulaciones.

2. Eventos relacionados con procesos comerciales, que tienen marcas de tiempo y pueden generar o modificar datos al registrarse. Ejemplos: flujo de documentos de la empresa, contabilidad, registro de pedidos o llamadas.

3. Datos recopilados e indicadores comerciales, que describen el estado actual del área de aplicación y los procesos actuales. A diferencia de los datos descritos en los párrafos 1 y 2, estos datos no tienen naturaleza de objeto y no describen entidades independientes que pertenecen al área de aplicación. Ejemplos: historial de ventas de artículos, saldos de almacén, saldos de cuentas actuales, historial de tipos de cambio de divisas.

El último bloque representa herramientas de análisis, procesamiento e informes de datos. Utilizan datos de los otros bloques pero no almacenan datos ellos mismos.

2.1. Por lo tanto, debe asignar cada entidad del área comercial a uno de estos bloques según el siguiente algoritmo:

Criterios detallados de selección de bloques:

Criterio / bloque

Datos convencionalmente estáticos

Eventos relacionados con procesos empresariales

Datos recopilados e indicadores comerciales

Propósito principal

Almacenar registros y regulaciones

 

Registrar eventos que forman parte de los procesos empresariales, proporcionar pruebas documentales para varios datos

Almacenar datos que describen los procesos actuales y el estado actual del área de aplicación

Monitoreo de cambios de estado

No requerido

Publicar y despublicar documentos, registrar tiempos de inicio y finalización, modificar estados de tareas y generar registros

No requerido

Jerarquía y agrupación

Utilizar jerarquía y agrupaciones, posiblemente involucrando entidades de diferentes tipos

No requerido No requerido

Propiedades clave

Código y descripción

Fecha y número del evento.

No requerido

Almacenamiento de atributos adicionales de la entidad 

Almacenar atributos raramente modificados de datos personalizados

Almacenar referencias a otros objetos y parámetros que describen el evento

Almacenar solo valores de atributos de otros objetos de la base de datos

Numeración

Generar series de códigos para elementos de un tipo dado o dentro de una jerarquía

Generar series de números para todos los elementos de un tipo dado o para elementos dentro de un período dado, numeración continua para objetos de diferentes tipos.

No requerido

2.2. Luego seleccione un tipo de objeto de metadatos específico dentro del bloque seleccionado:

2.2.1. Para datos convencionalmente estáticos:

1. Para almacenar un plan de cuentas para contabilidad de doble entrada, utilice el objeto de metadatos Plan de cuentas.
2. Para almacenar un plan de tipos de cálculo para calcular devengos y retenciones, utilice el objeto de metadatos Plan de tipos de cálculo.
3. Para almacenar un valor único que puede ser editado por los usuarios (generalmente por el administrador que realiza la configuración del sistema) y no requiere referencias de otros datos, utilice el objeto de metadatos Constante.
4. Para definir una lista fija de valores que no pueden ser editados por los usuarios y no tienen atributos adicionales, utilice el objeto de metadatos Enumeración.
5. Para almacenar la lista de características (propiedades) donde tanto los tipos de características como su contenido son definidos por los usuarios, utilice el objeto de metadatos Plan de tipos de características.
6. En la mayoría de los otros casos, puede utilizar el objeto de metadatos Catálogo.

Criterios detallados para la selección de objetos de metadatos:

Критерий /
тип объекта Criterion / tipo de objeto
Constante Enumeración Tabla de tipos de características Catálogo
Propósito principal

Almacenar un único valor predefinido

Almacenar una lista de alias que nunca cambian y no tienen atributos adicionales

Almacenar una lista de entidades y valores de características de cada entidad

Almacenar una lista de objetos y sus valores de atributos

Los usuarios pueden agregar y editar elementos

Editar solo el valor

No requerido

Agregar, editar o eliminar elementos, editar el contenido y los valores de las características de la entidad

Agregar, editar o eliminar elementos

Jerarquía y agrupación

No requerido

No requerido

Requerido dentro de una sola entidad

 

Requerido dentro de una sola entidad o entre diferentes entidades

Almacenamiento de valores de atributos adicionales de la entidad

No requerido

No requerido

Almacenar datos personalizados en los atributos de la entidad

Almacenar datos personalizados en los atributos de la entidad

Almacenamiento de listas de valores de atributos adicionales

 

No requerido

No requerido

Almacenar listas de conjuntos de valores de atributos de entidad

Almacenar listas de conjuntos de valores de atributos de entidad

Generación basada en otros objetos

No requerido

No requerido

Ingresar nuevos elementos basados en otros objetos

Ingresar nuevos elementos basados en otros objetos

Numeración 

No requerido

No requerido

Serie de códigos para elementos de un tipo dado o dentro de un grupo

Serie de códigos para elementos de un tipo dado, o dentro de un grupo, o para un conjunto de elementos subordinados

2.2.2. Para eventos relacionados con procesos comerciales:

1. Para registrar eventos únicos que tienen ejecutores (usuarios, empleados, grupos o roles) y no requieren publicación una vez que se completan, use el objeto de metadatos Tarea.
2. Para registrar la creación y el progreso de un proceso repetido que se puede dividir en un conjunto de acciones (eventos), use el objeto de metadatos Proceso comercial. Para registrar acciones (eventos) que forman un proceso, use el objeto de metadatos Tarea.
3. En la mayoría de los otros casos, puede usar el objeto de metadatos Documento.

Criterios detallados para la selección de objetos de metadatos:

Criterio / tipo de objeto Tarea Proceso comercial (con tareas)  Documento
Propósito principal Registrar eventos únicos que tienen ejecutores

Registrar una secuencia de eventos que tienen ejecutores

Registrar eventos con marcas de tiempo y generar datos basados en estos eventos

Elementos subordinados

No requerido

Registrar procesos anidados (jerarquía de tareas)

No requerido

Combinar elementos en diarios

No requerido

No requerido

Combinar documentos de diferentes tipos en un solo diario 

Estado del objeto

Estados requeridos: nuevo, completado

Estados requeridos: nuevo, en progreso, completado

Estados requeridos: publicado, no publicado

Numeración Serie de números para todas las tareas de un tipo específico o dentro de un período específico

Serie de números para todos los procesos de un tipo específico o dentro de un período específico; numeración de eventos dentro de un proceso

Serie de números para varios tipos de documentos, continua o dentro de un período específico

2.2.3. Para datos recopilados e indicadores comerciales:

1. Para almacenar datos contables para la contabilidad de partida doble, use el objeto de metadatos Registro de Contabilidad.
2. Para almacenar acumulaciones y retenciones calculadas, use el objeto de metadatos Registro de Cálculo.
3. Para almacenar el historial de cambios de indicadores (ingresos y gastos, giros y saldos para un período específico), use el objeto de metadatos Registro de Acumulación.
4. En la mayoría de los otros casos, puede usar el objeto de metadatos Registro de Información.

Criterios detallados para la selección de objetos de metadatos:

Criterio / tipo de objeto Registro de Acumulación Registro de Información
Propósito principal Almacenar cambios de datos (ingresos y gastos, cambios de indicadores) Almacenar datos como conjuntos de registros; registrar algunos valores.
Recuperación de datos

Recuperar saldos y giros

Recuperar segmento de datos para un momento específico, o recuperar valores de indicadores actuales.

Referencia a fuentes de datos

Referencia al documento de registro

La referencia no es obligatoria

3. Ejemplo de selección de tipo de objeto de metadatos:

Una empresa ofrece servicios de encuestas. Cada cuestionario incluye una fecha y un conjunto de preguntas, un cuestionario completado también incluye un conjunto de respuestas. La entidad “cuestionario” tiene una marca de tiempo y genera datos estadísticos (las respuestas).

Utilicemos el algoritmo descrito en este artículo:

Usando elementos predefinidos

Estas recomendaciones se aplican a 1C:Enterprise versión 8.3.3 o posterior (excepto configuraciones donde el modo de compatibilidad está configurado en Versión 8.2 o anterior). Son obligatorias a menos que se indique lo contrario.

1.1. Tiene la opción de crear elementos predefinidos en catálogos, planes de cuentas y planes de tipos de cálculo, tanto automáticamente como mediante script de 1C:Enterprise.

1.2. En la mayoría de los escenarios recomendamos que los elementos predefinidos se creen automáticamente porque se necesitan en todo momento y porque esto simplifica su llamada desde el script de 1C:Enterprise. Ejemplos de tales escenarios son el elemento predefinido USA en el catálogo Países y el perfil de grupo de acceso predefinido Administrador.

Para la creación automática, haga lo siguiente:

1.3. Los nodos subordinados de las bases de datos distribuidas son una excepción a esta regla. En tales nodos no se deben crear ni actualizar elementos predefinidos automáticamente. En su lugar, deben replicarse desde el nodo principal junto con los cambios de configuración.

En este caso, asegúrese de lo siguiente:

a) La configuración carga un mensaje de intercambio a un nodo subordinado antes de la ejecución del script que accede a los elementos predefinidos recuperados del nodo principal.

b) La lógica aplicada de carga de datos desde el nodo principal (por ejemplo, el controlador OnReceiveDataFromMaster y las reglas de registro de objetos) no incluye el acceso a los elementos predefinidos porque no se puede asegurar que ya se hayan cargado desde el mensaje de intercambio.

c) El script del controlador de actualización de la base de datos que procesa los elementos predefinidos no se ejecuta en los nodos de la base de datos subordinados:

If ExchangePlans.MasterNode() = Undefined Then
    // llenar elementos predefinidos
    // …
EndIf;

1.4. Recomendamos que para las tablas con elementos predefinidos que no están incluidos en el plan de intercambio de la base de datos distribuida (y no son referenciados por otras tablas incluidas en el plan de intercambio) se establezca la propiedad PredefinedDataUpdate en AutoUpdate.

Si utiliza el modo de compatibilidad con la versión 8.3.3, en el primer inicio de un nodo subordinado (justo después de su actualización de configuración) establezca la actualización automática de datos utilizando el siguiente script:

Catalogs.<CatalogName>.SetPredefinedDataUpdate(PredefinedDataUpdate.AutoUpdate);

2. En algunos casos no es necesario crear automáticamente elementos predefinidos. Esto incluye casos en los que la disponibilidad de elementos predefinidos depende de alguna condición (valores de opciones funcionales, modo de aplicación, etc.).

Por ejemplo, la disponibilidad de elementos predefinidos en el gráfico de tipos de cálculo de Acumulaciones puede depender de los valores de las siguientes opciones funcionales: UseHourlyWorkTimeRecords, UsePieceworkWages, etc.

Si este es el caso, haga lo siguiente:

Si GetFunctionalOption(“UseHourlyWorkTimeRecords”) Then
    AccrualObject = ChartsOfCalculationTypes.Accruals.CreateCalculationType();
    AccrualObject.PredefinedDataName = “HourlyPayment”;
    // …
    AccrualObject.Write();
EndIf;

  … = ChartOfCalculationTypes.Accruals.HourlyPayment;
  … = PredefinedValue(“ChartOfCalculationTypes.Accruals.HourlyPayment”);

 

Uso de la propiedad Activo de los registros de registro

Este artículo describe los estándares que se aplican al establecer la propiedad Activo de los registros de registro. Todas las recomendaciones enumeradas son obligatorias a menos que se indique lo contrario.

Si su configuración incluye funcionalidad que cambia la propiedad Activo de los registros de registro (por ejemplo, puede usar esto para la corrección manual de registros), recomendamos lo siguiente:

1. Todas las consultas a los registros de registro y los informes basados en esos registros deben tener en cuenta el valor de la propiedad Activo. Utilice la siguiente condición para filtrar los registros inactivos:

WHERE Activo = TRUE

Si su consulta selecciona registros de tablas virtuales vinculadas a registros de registro, 1C:Enterprise siempre recupera solo registros activos (porque las tablas de registro virtuales solo contienen registros activos).

2. En particular, la propiedad Activo de los registros de registro debe tenerse en cuenta en informes universales (y en la lógica empresarial universal en general) que utilizan datos de varios registros de configuración porque esos registros pueden almacenar registros inactivos.

3. Cuando se desanota un documento que permite la corrección manual de registros de registro, no elimine sus registros, haga que sean inactivos en su lugar. Ejemplo de dicho documento es la Entrada de Libro Mayor (este documento está destinado para la adición manual de entradas de libro mayor).

Véase también:

Requisitos de publicación de documentos

Este artículo describe los estándares que se aplican a la publicación de documentos. Todas las recomendaciones enumeradas son obligatorias a menos que se indique lo contrario.

1. Los documentos están destinados a ingresar datos fuente relacionados con eventos que afectan los registros contables. Por ejemplo, en la automatización de la actividad empresarial esto incluye registros de contabilidad de la actividad empresarial, mientras que en la automatización de la actividad de fabricación esto incluye registros de fabricación.

2.1. Registrar un evento (agregar sus datos a los registros contables) se realiza mediante la publicación de un documento. La mayoría de los documentos deben ser publicados (su propiedad Publicación debe establecerse en Habilitar).

Desde el punto de vista lógico, un documento no contabilizado es un “borrador” que no afecta los registros contables. Dichos documentos se pueden guardar incluso si no están completamente llenos o no están llenos en absoluto, no están sujetos a ninguna verificación o restricción de lógica empresarial (como verificaciones de llenado o restricciones de cambio de fecha). Sus datos no se incluyen en los informes.

Y un documento contabilizado es uno aprobado, está completamente lleno, procesado e incluido en los registros contables.

2.2. Si el ciclo de vida de un documento incluye varias etapas de procesamiento, se pueden crear estados de documento adicionales para reflejar estas etapas. Por ejemplo, un documento de Pedido de Cliente puede tener los siguientes estados: “abierto”, “pendiente” y “cerrado”. Un documento de Factura puede tener los siguientes estados: “abierto”, “facturado” y “pagado”.

En estos escenarios, la primera contabilización crea un registro contable inicial, mientras que los estados del documento afectan los detalles del registro.

Si un documento está contabilizado, cambiar su estado puede requerir llenar datos específicos del documento y pueden aplicarse verificaciones de llenado y restricciones de lógica empresarial específicas del estado. Si un documento aún no está contabilizado, el sistema no realiza ninguna verificación específica del estado y no aplica ninguna restricción.

Ejemplos de comportamiento de documento específico del estado:

2.3. Los siguientes documentos son excepciones a la regla de “La mayoría de los documentos deben ser contabilizados”:

Tales documentos nunca se contabilizan.

2.4. Cuando un usuario necesita registrar un evento y generar los registros contables correspondientes en una sola operación, debe crear un documento y guardarlo en modo de contabilización.

No se permite implementar esto de otra manera. En particular, no se permite desactivar la contabilización.

3.1. Para reflejar un evento en los registros contables, es posible que deba generar datos “secundarios” que tengan relaciones complejas con puntos en el tiempo, períodos u otros objetos del sistema. Estos datos deben almacenarse en registros. Los registros de registro deben generarse durante la contabilización (automáticamente o manualmente).

Si selecciona la generación automática de registros de registro, los usuarios registran los datos del evento en el documento y los registros de registro se generan durante la contabilización del documento. Por ejemplo, las transacciones contables generan registros de registro automáticamente.

Si selecciona la generación manual de registros de registro, los usuarios pueden registrar datos directamente en los registros utilizando documentos denominados operaciones manuales. Pueden usarlos para ingresar saldos iniciales o para registrar actividades comerciales que no se pueden describir mediante documentos de actividad comercial estándar disponibles en la configuración.

3.2. En casos raros, puede utilizar un documento separado para generar registros de registro. Esto tiene sentido en escenarios donde varios tipos de documentos requieren un procesamiento similar, se involucra el procesamiento masivo de documentos o partes de procesos comerciales complejos requieren diferentes derechos de usuario. En estos escenarios, una serie de eventos se puede implementar como una cadena de documentos, un documento basado en otro, en lugar de un solo documento que cambia de estado. Algunas partes de la cadena de documentos pueden no requerir contabilización.

Por ejemplo, se crea un Pedido de Cliente en el departamento de Ventas y no se puede cambiar durante la contabilización. En este escenario, el Pedido de Cliente es creado por un vendedor y nunca se contabiliza, mientras que un especialista en logística verifica que la cantidad solicitada de bienes esté disponible y crea el documento de Envío, que está destinado a generar registros de registro y se basa en el documento de Pedido de Cliente.

3.3. Los documentos no contabilizados y los documentos marcados para eliminación no deben tener registros activos.

3.4. Incluso si un documento no genera registros de registro, su publicación aún debe estar habilitada. Esto es necesario para hacer una diferencia visual entre los documentos en borrador y los documentos aprobados.

4. En la mayoría de los escenarios, se puede deshacer la grabación de datos contables (utilice la función de deshacer publicación proporcionada por la plataforma).

Ver también:

Limitaciones para el uso de atributos de tipo compuesto

Este artículo describe los estándares que se aplican al uso de atributos de tipo compuesto. Todas las recomendaciones enumeradas son obligatorias a menos que se indique lo contrario.

Esta recomendación es opcional

1.1. Los atributos de tipo compuesto utilizados en condiciones de unión, filtrado y ordenamiento deben incluir solo tipos de referencia (CatalogRef, DocumentRef.[…], etc.). Recomendamos no incluir tipos no referenciales, como String, Number, Date, UUID, Boolean o ValueStorage.

Si sus consultas no cumplen con esta recomendación, su rendimiento podría reducirse significativamente. Esta recomendación se basa en las especificidades del almacenamiento físico de los atributos de tipo compuesto en las columnas de la tabla de la base de datos.

1.2. En algunos casos, puede utilizar el siguiente enfoque para cumplir con esta recomendación:

Un ejemplo de documento tiene el atributo de tipo compuesto Dirección donde el tipo compuesto incluye una referencia al catálogo Contactos y una cadena para almacenar direcciones personalizadas ingresadas por los usuarios. En su lugar, cree el catálogo DireccionesPersonalizadas con el atributo de cadena Dirección. La adición de elementos a este catálogo debe realizarse automáticamente cuando se escribe el documento, sin llamar la atención del usuario. Puede utilizar un trabajo programado para eliminar los elementos del catálogo que ya no sean necesarios.

2.1. No utilice AnyRef, CatalogRef, DocumentRef y tipos compuestos similares para objetos de metadatos almacenados en la infobase. Especifique los tipos de objetos explícitamente.

Las excepciones a esta regla son los algoritmos universales destinados al procesamiento de objetos de referencia de varios tipos.

2.2. Si un tipo compuesto se utiliza ampliamente en objetos pertenecientes a un subsistema específico o en toda la configuración, recomendamos que utilice tipos definidos.