Menú
Está libre
registro
hogar  /  Problemas/ Formular datos al valor 1s 8.3. Credenciales de formulario administrado (1Cv8)

Formulario de datos en valor 1s 8.3. Credenciales de formulario administrado (1Cv8)

A continuación se enumeran los principales objetos 1C que se utilizan al trabajar con formularios administrados. Se proporcionan breves ejemplos de código que demuestran el uso tradicional de estos objetos al escribir configuraciones 1C.

Esta forma

Utilizado en un módulo de formulario, en procedimientos& OnClient y & OnServer.

Le permite acceder tanto a los elementos del formulario como a los atributos.

Se accede a un elemento de formulario a través de un objeto Elementos y se ve así:

ThisForm.Elements.VersionNumber.Header = "v." + ProgramVersion;

La referencia al requisito existente en el formulario es la siguiente:

ThisForm.Announcement text = "¡Hola, camaradas!";

Acceso simplificado a elementos de formulario y accesorios.

En principio, en el módulo de formulario, puede omitir la palabra clave Esta forma ... Puede hacer referencia a los elementos y atributos del formulario de forma simplificada:

// Elemento de formulario

Elements.VersionNumber.Header = "v." + ProgramVersion;

// Forma de utilería

Announcement Text = "¡Hola, camaradas!";

Características de la obtención de detalles del formulario (¡importante!)

Si los accesorios del formulario son de tipo simple: Cadena, número, fecha ... entonces puede obtener (establecer) el valor de un atributo simplemente por su nombre:

Texto = Nombre del producto; // El nombre del producto es un atributo de formulario

Sin embargo, de esta manera es imposible obtener los detalles del tipo "complejo" -Tabla de valores, Árbol de valor ... Si intenta obtener un atributo con este tipo por nombre, se devolverá un objeto del tipoDataFormsCollection.

Para obtener el valor de un atributo con un tipo "complejo", debe usar la funciónPropsFormVValue ():

CurrentTable = FormInValue ("SelectedConstructionObjects");

Para establecer el valor de una variable "compleja", puede utilizar la funciónAtributo ValueBForm (<Значение>, <ИмяРеквизита>) ambos parámetros son obligatorios.

Funciones PropsFormVValue () y Atributo ValueBForm ()disponible solo en el servidor.

Un objeto

Estrictamente hablando, tal palabra clave dentro del formulario, no. Es solo que cuando se crea un formulario, por ejemplo, un formulario de elemento, 1C crea automáticamente un accesorio con un nombre en el formulario. Un objeto ... Este atributo proporciona acceso a las propiedades del objeto actual, que se está editando en el formulario.

o, un registro más completo:

Este objeto

Contiene el objeto en sí. Está destinado a obtener un objeto en un módulo de objeto o un módulo de formulario.

Uso: solo lectura.

Disponibilidad: Servidor, Fat Client, Conexión externa.

En los días del cliente pesado, llamar a un procedimiento de módulo de objeto desde un módulo de formulario era simple. Fue suficiente definir el procedimiento del módulo como exportado y llamarlo en el módulo de formulario.


Los tiempos cambian, la plataforma 1C se optimiza y mejora, el cliente gordo se olvida, dale a todos un cliente ligero o web. Los desarrolladores están comenzando a traducir formularios regulares en formularios administrados, pero no todo es tan simple, existen algunas dificultades en relación con la separación de la ejecución. código de programa en dos contextos: servidor y cliente. Por lo tanto, el ejemplo de código anterior no funcionará en el cliente ligero.

Nuevos tipos de datos

Además, debido a los formularios administrados, han aparecido nuevos tipos de datos. Hay una forma:
Recuerde los tipos de atributos y vea qué tipos de depuración para estos atributos:

Nuevos tipos de datos de formulario
Concluimos que el tipo se utiliza para mostrar los datos del propio objeto. DataFormsStructure, para mostrar un árbol de valores - DataShapeTree, para la parte tabular - DataFormsCollection etc. Es decir, en el módulo de formulario del cliente, no trabajamos con el objeto en sí, ¡sino con su presentación! Por lo tanto, los métodos que están disponibles, por ejemplo, para la sección tabular en el módulo de objeto NO DISPONIBLE en el módulo de formulario.

Luchando contra nuevos tipos

Los desarrolladores de la plataforma 1C proporcionaron dos funciones:
  1. PropsFormVValue- convierte el atributo de formulario especificado en un objeto del tipo aplicado.
  2. Formulario DataValue- convierte los datos del formulario en un objeto del tipo aplicado.
La llamada a estas funciones solo está disponible en el servidor. Volvamos a nuestra tarea y escribamos el código para el cliente ligero en el módulo de formulario en el evento OnCreateAtServer que llamará a la función desde el módulo de objeto:
Y en el servidor


SproObject1 = Form AttributeValue ("Objeto");
SprObject1.DisplayMessage (Object.Props1);




Fin del procedimiento

Funciona con una función y otra O_o. Escribamos el código de conversión DataShapeTree en un objeto de un tipo aplicado:
Y en el servidor
Procedimiento OnCreateAtServer (falla, procesamiento estándar)

ValueTree1 = Form AttributeValue ("Atributo1");
ValueTree2 = FormDataInValue (ThisForm.Attribute1, Type ("ValueTree"));

Fin del procedimiento

ValueTree1 y ValueTree2 tienen el mismo tipo: ValueTree. Entonces, ¿cuál es la diferencia entre estas funciones ???

Formulario DataValue - función global contexto. Convierte el tipo de objeto admitido por el formulario al tipo de objeto de la base de datos: FormDataStructure -> ReferenceObject. Reference1.

PropsFormVValue - la función del módulo de formulario, es decir, se llama en el servidor en el contexto del formulario (& OnServer). Si intentas llamar esta función fuera del contexto del formulario, la plataforma generará un error excepcional:
& OnServerWithoutContext
Procedimiento ConvertType ()

// ¡Este código es incorrecto, el contexto del formulario no está disponible, habrá un error!
RefObject2 = FormDataValue (Objeto, Tipo ("ReferenceObject. Reference1"));
SprObject2.DisplayMessage (Object.Props1);

Fin del procedimiento

Esa es toda la diferencia.

Procesamiento muestra todos los detalles del objeto seleccionado, le permite editarlos, así como comparar dos objetos del mismo tipo. Admite cualquier configuración, se instala automáticamente en las estándar.

Versión actual: 1.09 para formularios regulares, 1.12 para formularios administrados.

Procesamiento de descarga (para 1C 8.2, 1C 8.3 (formularios regulares), archivo epf, 47 KB)

Procesamiento de descarga (para 1C 8.2, 1C 8.3 (formularios administrados), archivo epf, 22 KB)

La última versión para 1C 8.1: 1.05

Procesamiento de descarga (para 1C 8.1, archivo epf, 48 KB)

Qué hacer si el procesamiento no se abre

El procesamiento es muy útil, por ejemplo, en tales casos:

    Necesito ordenar una base de datos desconocida.

    se actualizó la versión de configuración y se agregó un nuevo campo al documento (oculto, pero no está en el formulario). Al mismo tiempo, para los documentos nuevos, se establece cuando se crean, pero los antiguos se olvidaron naturalmente. Lo que para el usuario se expresa en el hecho de que dos documentos completamente idénticos dan transacciones diferentes 🙁

    es solo que el contenido del campo no encaja en el espacio que se le asigna en el formulario, pero debe verse en su totalidad (las secciones tabulares sufren de esto especialmente - los desarrolladores son muy aficionados a limitar el ancho de las columnas y, en además, no permitir que se cambie)

    necesitas ir a la información relacionada (por ejemplo, abrir la especificada en la factura del CCD), pero se olvidaron de hacer disponible este campo (es decir, ni botones con puntos ni lupa ni F4) (y también sucede que en lugar de un campo de entrada, hacen un campo de selección, una inscripción o un campo generalmente ausente en el formulario 🙁)

    necesitas comparar dos objetos del mismo tipo

Las características distintivas son

    la capacidad de conectarse a configuraciones típicas como imprimible (es decir, en un modo puramente de usuario, no se necesita ningún configurador)

    la capacidad de registrar un objeto en el modo "intercambio de datos - descarga", es decir, "como están las cosas"

Instalación (interfaz normal)

El procesamiento está abierto, siga las instrucciones en la pantalla. (Es decir, haga clic en el botón "Instalación" en la esquina superior derecha y confirme la instalación en la siguiente ventana.

Instalación (interfaz "administrada")

Atención: Esta opción La instalación funciona solo en configuraciones típicas de 1C.

1. Vaya a la sección "Administración" y allí - "Informes y procesamiento adicionales".

2. Presione el botón "Agregar" y seleccione el archivo dannye-objecta-upr.epf

3. En la ventana de configuración de procesamiento, verifique que:

    Publicación: Usado

    Casillas marcadas: usar para formulario de lista, usar objetos para formulario

4. Confirme la instalación haciendo clic en Aceptar.

Uso de procesamiento

De la forma del documento, el elemento del directorio. cualquier formulario de lista

    Interfaz normal: presione el botón "Imprimir ..."

    Interfaz "guiada": presione el botón de relleno

Seleccione "Datos del objeto" en el menú; se abrirá el formulario de procesamiento

Para ver el requisito (por ejemplo, el documento contiene el atributo "Acuerdo", no está disponible para su modificación. Pero debe abrir la ficha de este acuerdo).

Cómo obtener accesorios a partir de un valor de referencia en el cliente.

En el formulario de procesamiento, haga clic en el valor del atributo.

Para cambiar el atributo, marque la casilla junto al valor. A continuación, se puede cambiar el valor.

Para guardar los cambios, presione el botón de la opción requerida para guardar la entrada en el modo "intercambio de datos - descarga", entrada regular... realización (solo para documentos).

Si necesita registrar algunos de los requisitos modificados y registrar algunos de ellos, desmarque las casillas junto a lo que se debe registrar.

En el procesamiento hay "Datos del requisito", es como abrir un valor por referencia (por ejemplo, una tarjeta de contraparte) y volver a llamar al procesamiento.

La comparación de objetos se puede hacer:

Seleccionar 2 objetos para procesar

2. Llamar al procesamiento desde un objeto, luego (sin cerrar la ventana) desde otro. Se le pedirá que haga una comparación.

3. (Sólo interfaz "administrada"). Seleccione 2 objetos en la lista a la vez (para hacer esto, mantenga presionado el botón Ctrl) y llame al procesamiento: los objetos se compararán.

Capturas de pantalla (interfaz normal)

Capturas de pantalla (interfaz "administrada")

Ejemplos de uso del procesamiento para analizar situaciones problemáticas.

Cambios en la versión 1.12 (17/10/2017)

  • Para la variante con formularios administrados, se corrigió un error (el atributo en la sección tabular no se actualizó si el objeto en sí tenía un atributo de encabezado con el mismo nombre)

Cambios en la versión 1.10 (06.01.2017)

  • Para la variante con formularios gestionados, se ha corregido el trabajo en algunas configuraciones típicas (Contabilidad, UNF)

Cambios en la versión 1.09 (07.07.2015)

  • Se agregó la visualización de los campos "Padre", "Propietario"
  • Para la versión de la interfaz administrada, se proporciona el trabajo sin ventanas modales.

Cambios en la versión 1.08 (03/04/2014)

    Para la versión para la interfaz normal, mejor compatibilidad cuando se trabaja en la configuración "Manufacturing Enterprise Management" (PPM) 1.3.

Cambios en la versión 1.07 (03/04/2013)

    Existe una versión de procesamiento para formularios "administrados" (la función de instalación y actualización automáticas solo está en la versión para formularios normales)

    Error corregido (los derechos se establecieron en la distribución de procesamiento)

Cambios en la versión 1.06 (13/05/2012)

    Visualización del campo "Versión del objeto"

    Error solucionado (no fue posible establecer permisos de solo lectura en el procesamiento)

Cambios en la versión 1.05 (05/04/2011)

    Se corrigió un error (cuando se trabajaba en 8.2, el registro del documento no estaba disponible en el modo de publicación)

Cambios en la versión 1.04 (13/04/2011)

    Se corrigió un error (cuando se trabajaba en 8.2, al hacer doble clic con el mouse no se abrían los detalles)

    Ahora el procesamiento puede continuar para mostrar los atributos del tipo de referencia.

    Es decir: digamos que ha abierto la vista de los detalles del documento "Venta de bienes, servicios". V este documento hay una variable "Contraparte" del tipo "DirectoryLink.Contractors". Al hacer clic en este requisito con el botón derecho del mouse, recibirá Menú de contexto, en el que hay elementos "Datos de atributo" y "Datos de atributo en una nueva ventana". Al elegir uno de ellos, puede ver los detalles de la contraparte correspondiente.

Cambios en la versión 1.03 (15.10.2010)

    Se agregó la capacidad de configurar usuarios y sus derechos de acceso al procesamiento.

Cambios en la versión 1.02 (21/08/2010)

    Configuraciones admitidas en las que la referencia tratamientos externos llamado "Formularios de impresión complementarios".

Cambios en la versión 1.01 (28/01/2010)

    Se corrigió un error que ocurría cuando Object1 estaba vacío y Object2 estaba seleccionado (gracias a rasswet por mostrarlo);

    La casilla de verificación "detalle" se activa inmediatamente, no es necesario hacer clic en "Mostrar";

    La columna "Tipo de valor" ha cambiado de nombre a "Tipo de valor posible" y muestra el tipo de valor definido para esta variable en el configurador. Para los atributos con un tipo compuesto, además de esto, se muestra el tipo del valor de este atributo en el objeto visto.

Si conectó el procesamiento a su configuración, entonces para actualizarlo:

descargue el procesamiento, ábralo como externo, le dirá qué y cómo hacer clic (el botón "Instalar", seleccione "Actualizar procesamiento en la base de datos", haga clic en el botón "Ejecutar")

Imprimir (Ctrl + P)

Existe un conjunto de métodos globales para convertir objetos de aplicación en datos de formulario y viceversa:

  • Datos de ValueInForm (),
  • FormDataValue (),
  • CopyFormData ().

Los métodos que funcionan con objetos de aplicación solo están disponibles en procedimientos de servidor. El método para copiar valores entre los datos del formulario está disponible en el servidor y en el cliente, ya que no requiere objetos de aplicación como parámetros.

Al convertir datos de formulario en un objeto de aplicación, considere la compatibilidad.

  • ValueInDataForm(): convierte un objeto del tipo de aplicación en datos de formulario.
  • Formulario DataValue(): convierte los datos del formulario en un objeto del tipo aplicado.
  • CopyDataForm(): copia los datos del formulario con una estructura compatible. Devuelve True si se realizó la copia o False si la estructura de los objetos es incompatible.

Al convertir datos de formulario en objetos de aplicación y viceversa, se utiliza el almacenamiento en caché de objetos, pero al mismo tiempo, se verifica la validez de la versión del objeto en la caché.

NOTA. Al realizar acciones estándar (abrir un formulario, realizar comando estándar Record, etc.) en el formulario con el atributo principal, la transformación se realiza automáticamente.

A continuación, se muestra un ejemplo de cómo utilizar la transformación de datos en sus propios algoritmos.

Y en el servidor
Procedimiento OnCreateAtServer (falla, procesamiento estándar)
ObjectObject = Goods.FindByName ("Cafetera"). GetObject (); ValueVDataForm (ObjectObject, Object);
Fin del procedimiento
& OnClient
Procedimiento Escribir ()
WriteOnServer ();
Fin del procedimiento
Y en el servidor
Procedimiento WriteOnServer ()
ObjectObject = FormDataInValue (Objeto, Tipo ("DirectoryObject.Goods"));
ObjectObject.Write ();
Fin del procedimiento

Además, el objeto ClientApplicationForm tiene métodos disponibles en el servidor:

  • Atributo ValueBForm (): convierte un objeto del tipo aplicado en el atributo de formulario especificado.
  • PropsFormVValue(): convierte el atributo de datos del formulario en un objeto del tipo aplicado.

El uso de estos métodos suele ser más conveniente, ya que tienen, por ejemplo, información sobre el tipo de atributo de formulario. Además, el método FormPropsBValue () realiza la asignación entre los datos del formulario y el objeto, que se utiliza al generar mensajes.

También debe recordarse que al convertir a datos de formulario (tanto usando el método ValueBFormData () como usando el método ValueBFormAttribute ()) de objetos del tipo ValueTable o ValueTree, debe tener en cuenta la siguiente característica: todas las columnas que existen en los datos debe existir en los formularios de objeto convertidos.

¡ATENCIÓN! Las columnas de atributos no relacionados con los datos no participan en la conversión de valores entre los datos del formulario y los objetos. base de información y de regreso. Las columnas que no están presentes en los datos del objeto se borran cuando se convierten en datos de formulario.

Al transferir un objeto para formar datos por el marco, o al llamar a métodos ValueInDataForm(), ValueInPropsForm(), solo se transfieren los datos del objeto. El estado interno del objeto no se transfiere a los datos del formulario. Por ejemplo, el valor de la nueva referencia, que se establece en el objeto mediante el método SetLinkNew (), se perderá en el proceso de conversión del objeto hacia y desde los datos del formulario.

Como primer parámetro de los métodos PropsFormVValue() y FormDataValue (), solo se pueden utilizar atributos de formulario de los siguientes tipos:

  • FormDataStructure,
  • Recopilación de datos de formularios,
  • DataFormsStructureCollection,
  • FormDataTree.

Demos un ejemplo del uso de estos métodos.

Y en el servidor
Procedimiento RecalculateAtServer ()
// Convierte el objeto props en un objeto de aplicación. Documento = FormInValue ("Objeto");
// Realiza un nuevo cálculo utilizando el método definido en el módulo del documento. Document.Recalculate ();
// Convierte el objeto de la aplicación de nuevo en accesorios. Atributo ValueВForm (Documento, "Objeto");
Fin del procedimiento

Detalles del formulario

El conjunto de atributos del formulario describe la composición de los datos que se muestran, editan o almacenan en el formulario. Al mismo tiempo, los detalles del formulario por sí mismos no brindan la capacidad de mostrar y editar datos. Los elementos de formulario (consulte la sección "Elementos de formulario" de este capítulo), asociados con los atributos de formulario, se utilizan para mostrar y editar. El conjunto de todos los detalles del formulario se denominará datos del formulario.

¡Importante! Debe recordarse que, a diferencia de los formularios regulares, todos los datos forma gestionada debe describirse en forma de requisitos. No está permitido utilizar variables de módulo de formulario como fuentes de datos para elementos de formulario.

Es posible asignar El principal requisito del formulario., es decir, un accesorio que definirá la funcionalidad estándar del formulario (extensión del formulario). Debe recordarse que un formulario solo puede tener un atributo principal.

Expandiendo el formulario- estas son propiedades, métodos y parámetros adicionales del formulario del objeto ManagedForm, característico del objeto que es el elemento principal del formulario.

En el proceso de desarrollo de un formulario, puede establecer explícitamente la capacidad de ver y editar detalles específicos del formulario, en términos de roles, utilizando las propiedades Ver y Editar (para obtener más detalles, consulte la sección "Personalización del formulario basada en roles" del capítulo "Editores"). Además, la disponibilidad de un atributo particular en el propio formulario se puede configurar mediante opciones funcionales (para obtener más detalles sobre las opciones funcionales, consulte el capítulo "Gestión de la interfaz de configuración").

Propiedad de accesorios de formulario Datos almacenados es una señal de que un cambio interactivo de los accesorios conducirá a un intento de bloquear los datos del formulario para su edición, así como a instalación automática un signo de modificación de formulario.

Tipos de datos disponibles en forma administrada

Un formulario administrado también se diferencia de un formulario regular en los tipos de datos con los que trabaja. Si el formulario habitual funciona con la mayoría de los tipos que proporciona 1C: Enterprise (incluido el tipo DirectoryObject, DocumentObject, etc.), se pueden distinguir las siguientes categorías de tipos en el formulario administrado:

  • los tipos que se utilizan directamente en el formulario son los que existen en el lado del cliente ligero y web (por ejemplo, Number, ReferenceRef.Products, GraphicalSchema, TabularDocument);
  • tipos que se convertirán en tipos de datos especiales: tipos de datos de formularios administrados. Estos tipos se muestran en la lista de atributos de formulario entre paréntesis, por ejemplo (ReferenceObject.Goods);
  • lista dinámica (consulte la sección "Lista dinámica" de este capítulo para obtener más detalles).

Conversión de objetos de aplicación en datos de formulario

Algunos tipos de aplicaciones (como DirectoryObject, etc.) no existen en el lado de los clientes ligeros y Web (para obtener más detalles, consulte el capítulo “Concepto aplicación gestionada"). Por lo tanto, para representar estos tipos de aplicaciones en el formulario, la plataforma ha introducido tipos de datos especiales diseñados para trabajar en formularios administrados. Esta característica de una aplicación administrada requiere la conversión de los objetos de la aplicación en datos de formulario (y viceversa).

Se utilizan los siguientes tipos de datos:

  • FormDataStructure: contiene un conjunto de propiedades de un tipo arbitrario. Las propiedades pueden ser otras estructuras, colecciones o estructuras con colecciones. Este tipo se representa, por ejemplo, en la forma DirectoryObject.
  • Una colección FormData es una lista similar a una matriz de valores escritos. Se accede a un elemento de una colección por índice o identificador. Es posible que el acceso mediante identificación no esté disponible en algunos casos. Esto se debe al tipo de objeto de aplicación representado por esta colección. El identificador puede ser cualquier número entero. Este tipo se representa, por ejemplo, en forma de sección tabular.
  • FormDataStructureCollection es un objeto que se representa como una estructura y una colección al mismo tiempo. Puede tratarse como cualquiera de estas entidades. Este tipo se representa, por ejemplo, en forma de un conjunto de registros.
  • FormDataTree: el objeto está diseñado para almacenar datos jerárquicos.

Un objeto de aplicación está representado por uno o más elementos de datos de formulario. V vista general la jerarquía y composición de los datos del formulario depende de la complejidad y la interrelación de los objetos de la aplicación del formulario administrado.

Por ejemplo, un documento que contiene una sección tabular estará representado por un objeto del tipo FormDataStructure (el documento en sí), al cual un objeto del tipo FormDataCollection (sección tabular del documento) está subordinado.

¡Importante! Al diseñar una configuración, es importante recordar que los objetos de la aplicación solo están disponibles en el servidor, mientras que los objetos de datos de formulario se pueden usar tanto en el servidor como en el cliente.

Pasar datos entre el lado del cliente y el back-end de un formulario administrado

De hecho, podemos decir que los datos del formulario son una representación unificada de los datos de varios objetos de la aplicación, con los que el formulario funciona de manera uniforme y que están presentes tanto en el servidor como en el cliente. Es decir, el formulario contiene alguna "proyección" de los datos de los objetos de la aplicación en forma de sus propios tipos de datos y convierte entre ellos, si es necesario. Sin embargo, si un desarrollador de configuración implementa su propio algoritmo de procesamiento de datos, entonces debe realizar la conversión de datos (de tipos especializados a tipos aplicados y viceversa) de forma independiente.

Al editar los atributos del formulario en un editor especializado (para más detalles, consulte la sección "Atributos del formulario" del capítulo "Editores"), es posible influir en la transferencia de datos entre el cliente y el servidor mientras se ejecuta el formulario. Para hacer esto, use la columna del editor de atributos. Siempre usa... El efecto de esta propiedad difiere para tres tipos de atributos:

  • Para un atributo subordinado a una lista dinámica (columna de lista dinámica):
    • propiedad activada: el atributo siempre se lee de la base de datos y se incluye en los datos del formulario;
    • propiedad desactivada: los accesorios se leen de la base de datos y se incluyen en los datos del formulario solo cuando hay uno visible en este momento elemento de forma asociado con un accesorio o sus accesorios subordinados.
  • Para accesorios subordinados a la colección de movimientos:
    • propiedad en: los movimientos del documento se leen de la base de datos y estarán presentes en los datos del formulario;
    • la propiedad está deshabilitada: los movimientos de documentos no se leerán de la base de datos y no se incluirán en los datos del formulario (si no hay ningún elemento de formulario que se refiera a los movimientos de documentos).
  • Otros detalles del formulario:
    • propiedad habilitada: el atributo estará presente en los datos del formulario, independientemente de si hay o no al menos un elemento del formulario asociado con el atributo o su atributo subordinado;
    • property off: los accesorios estarán presentes en los datos del formulario solo si hay un elemento de formulario asociado con los accesorios o sus accesorios subordinados. A diferencia de los atributos de una lista dinámica, aquí no importa la visibilidad del elemento asociado con el atributo.

Nota. Debe recordarse que la propiedad establecida en el atributo padre afecta a todos los atributos subordinados. Por ejemplo, si la propiedad Usar siempre se borra para la sección tabular del documento, entonces el sistema considera que esta propiedad también se borra para todos los atributos subordinados (a pesar del estado real de la propiedad).

Métodos para convertir datos de objeto de aplicación en datos de formulario

Existe un conjunto de métodos globales para convertir objetos de aplicación en datos de formulario y viceversa:

  • Datos de ValueInForm (),
  • FormDataValue (),
  • CopyFormData ().

¡Importante! Los métodos que funcionan con objetos de aplicación solo están disponibles en los procedimientos del servidor. El método para copiar valores entre los datos del formulario está disponible en el servidor y en el cliente, ya que no requiere objetos de aplicación como parámetros.

Al convertir datos de formulario en un objeto de aplicación, considere la compatibilidad.

  • FormDataValue (): convierte un objeto del tipo aplicado en datos de formulario;
  • FormDataValue (): convierte los datos del formulario en un objeto de un tipo aplicado;
  • CopyFormData (): copia los datos del formulario con una estructura compatible. Devuelve True si se realizó la copia o False si la estructura de los objetos es incompatible.

Nota. Al realizar acciones estándar (abrir un formulario, ejecutar el comando Escribir estándar, etc.) de un formulario con los atributos principales, la transformación se realiza automáticamente.

A continuación, se muestra un ejemplo de cómo utilizar la transformación de datos en sus propios algoritmos.

& AtServer Procedimiento OnCreateAtServer (falla, procesamiento estándar)

ObjectObject = Libros de referencia.Goods.FindByDescription ("Cafetera"). GetObject (); ValueVDataForm (ObjectObject, Object);

Fin del procedimiento

& Escritura de procedimiento OnClient ()

WriteOnServer ();

Fin del procedimiento

& AtServer Procedimiento WriteAtServer ()

ObjectObject = FormDataValue (Objeto, Tipo ("DirectoryObject.Goods")); ObjectObject.Write ();

Fin del procedimiento

Además, el objeto ManagedForm tiene métodos disponibles en el servidor:

  • ValueBFormAttribute (): convierte un objeto del tipo aplicado en el atributo de formulario especificado.
  • Form AttributeValue (): convierte el atributo de datos del formulario en un objeto del tipo aplicado.

El uso de estos métodos suele ser más conveniente, ya que tienen, por ejemplo, información sobre el tipo de atributo de formulario. Además, el método FormPropsBValue () realiza la asignación entre los datos del formulario y el objeto, que se utiliza al generar mensajes. Puede leer más sobre esto en el capítulo "Opciones del servicio de navegación".

Demos un ejemplo del uso de estos métodos.

& AtServer Procedimiento RecalculateAtServer ()

// Convierte el objeto props en un objeto de aplicación. Documento = AttributeFormVValue ("Objeto"); // Realiza un nuevo cálculo utilizando el método definido en el módulo del documento. Document.Recalculate (); // Convierte el objeto de la aplicación de nuevo en accesorios. ValueVRequisitForm (Documento, "Objeto");

Fin del procedimiento

Interfaz de programación

FormDataTree (FormDataTree)

  • FindById
  • GetItems

Descripción:

Diseñado para modelar un árbol en datos de formularios administrados.

Este objeto se puede serializar a / desde XDTO. Tipo XDTO correspondiente este objeto definido en el espacio de nombres. Nombre del tipo XDTO:

GetItems

Sintaxis:

GetElements ()

Valor devuelto:

Tipo: Colección FormDataTreeElement.

Descripción:

Obtiene la colección de elementos del árbol de nivel superior.

Disponibilidad: cliente, servidor, cliente ligero, cliente web.

FindById

Sintaxis:

FindById (<Идентификатор>)

Opciones:

<Идентификатор>(obligatorio)

Teclea un número. El identificador del elemento del árbol.

Valor devuelto:

Tipo: FormDataTreeElement.

Descripción:

Obtiene un elemento de colección por ID.

Disponibilidad: cliente, servidor, cliente ligero, cliente web.

FormDataTreeItem (FormDataTreeItem)

Propiedades:

<Имя свойства> (<Имя свойства>)

  • GetId
  • GetParent
  • GetItems
  • Propiedad

Descripción:

Elemento de árbol de datos de formulario.

FormDataTreeItemCollection (FormDataTreeItemCollection)

Elementos de la colección: FormDataTreeElement

Para un objeto, la colección se puede recorrer utilizando el operador Para cada ... Desde ... Bucle. El recorrido selecciona los elementos de la colección. Es posible hacer referencia a un elemento de colección utilizando el [...] operador. El índice del elemento se pasa como argumento.

  • Insertar
  • Agregar
  • Índice (IndexOf)
  • Contar
  • Claro
  • Obtener (Obtener)
  • Moverse
  • Borrar

Descripción:

Colección de elementos del árbol.

Disponibilidad: cliente, servidor, cliente ligero, cliente web.

Ver también:

  • FormDataTreeElement, método GetElements
  • FormDataTree, método GetElements

Características de trabajar con un árbol de valores.

Actualizando el árbol

Hay un problema otoño plataformas al actualizar el árbol.

Si se ha expandido un nodo en el árbol y se ha seleccionado un nodo subordinado, cuando el árbol se actualiza con la función ValueInDataForm la plataforma cae.

Solución: antes de actualizar, debe limpiar el árbol.

Por ejemplo:

& AtServer Procedimiento ClearTree (elementos) Para cada elemento de los elementos Loop ClearTree (element.GetElements ()); Fin de ciclo; elementos.Clear (); Fin del procedimiento

& AtServer Procedimiento Complete ConceptTree () dzConceptions = cpProperties.Construct ConceptTree (OnDate, Meta.CurrentIB ()); ClearTree (ConceptTree.GetElements ()); ValueVDataForms (concepto, árbol de conceptos); Fin del procedimiento

& OnClient Procedimiento OnDateOnChange (Elemento) Fill ConceptTree (); Fin del procedimiento