Documentación de Velneo
30
30
  • Introducción
  • Velneo
    • Requerimientos de Velneo
    • Notas de la versión
    • Funcionalidades comunes a los componentes de Velneo
      • Instalación
      • Conexión con Velneo vServer
      • Cambiar el estilo de visualización
      • Ver u ocultar barras de herramientas
      • Mensajería interna entre usuarios
      • Soporte de alta resolución (HighDPI)
      • Carpetas de trabajo de los componentes de Velneo
      • Numeración de versiones de Velneo
      • Certificado de firma digital para componentes de Windows
    • Tipos de archivo generados por Velneo
    • Velneo Web
      • Plataformas y navegadores compatibles
      • Acceso a recursos del sistema
      • Siempre https
      • Funcionamiento de vatp por websocket
      • CORS para llamadas xmlhttprequest
  • Velneo vDevelop
    • ¿Qué es Velneo vDevelop?
    • Identificación de usuario
    • Interfaz de Velneo vDevelop
      • Menú Soluciones
      • Menú Proyectos
      • Menú Objetos
      • Menú Scripts
      • Menú Edición
      • Menú Ver
      • Menú Componentes
      • Menú Ayuda
    • Lista de teclas aceleradoras de Velneo vDevelop
    • Soluciones y proyectos
    • Control y edición de proyectos
    • Herencia
    • Inspectores
    • Proyectos objetos y editores
      • Proyecto de datos
      • Proyecto de aplicación
        • Crear CSS para aplicar a objetos en edición
      • Objeto
        • Refactorización automátca
      • Objetos de proyecto de datos
        • Indice complejo
        • Tabla
          • Actualización
          • Campo
          • Enlace
          • Indice
          • Plural
          • Traspaso de campo
          • Trigger
        • Tabla estática
        • Variable
      • Objetos de proyecto de aplicación
        • Acción
        • Alternador de lista
        • Arbol visor de tablas
        • Bloc de formularios
        • Casillero
        • Cesta
        • ComboView
        • Control SVG
        • Dispositivo serie
        • Formulario
          • Controles de visualización
            • Texto estático
            • Nombre de campo
            • Visor HTML
            • Dibujo
            • Imagen SVG
            • Caja de grupo
            • Menú arbolado
            • Barra de progreso
            • Reloj
            • Manómetro
            • Termómetro
          • Controles de edición
            • Caja de texto
            • Caja de texto enriquecido
            • Data catcher edit
            • Edición alfabética
            • Edición fecha
            • Edición fecha/hora
            • Edición fórmula
            • Edición hora
            • Edición numérica
            • Edición senda fichero
            • Edición senda directorio
            • Objeto dibujo
          • Controles de entrada
            • Botón
            • Botón de check
            • Botón de radio
            • Calendario
            • ComboBox
            • Deslizador
            • Dial
            • ListBox
            • Rueda
          • Contenedores
            • Área de scroll
            • Caja de formularios
            • Pila de formularios
            • Separador de formularios
            • Splitter
            • Vista de datos
          • Layout
          • Tree widget
          • Controles SVG
          • Extensión de ficha
        • Formulario QML
        • Gráfico
        • Imagen SVG
        • Impresora lógica
        • Informe
          • Editor de informes
          • Agrupamiento
          • Sección
          • Cálculo
        • Informe personalizable
          • Diseñando un informe personalizable básico
          • Diseño avanzado
          • Diseñando un informe personalizable
          • Añadiendo orígenes de datos
          • Añadiendo elementos al informe
          • Características avanzadas
          • Etiquetas
          • Asistente de scripts
          • Impresión de gráficos
          • Opciones html
        • ListView
        • Lista QML
        • Localizador
        • Marco
        • Menú
        • Multivista
        • Protocolo TCP-IP
        • Reemplazo
        • Rejilla
          • Propiedades de columna de rejilla
        • Rejilla avanzada
          • Propiedades de columna de rejilla avanzada
        • Toolbar
        • ViewFlow
        • Sub-objetos de vistas de datos
          • Conexión de evento
          • Drop
          • Inserción
          • Manejador de evento
      • Objetos comunes a proyecto de datos y de aplicación
        • Búsqueda
        • Cola
        • Constante
        • Dibujo
        • Esquema de tablas
        • Fichero adjunto
        • Función
        • Librería externa
        • Lupa
        • Proceso
          • Indice de comandos de instrucción de proceso
          • Comandos de base de datos
            • API
            • Bases de datos externas
            • Búsquedas
            • Campos (grupo de comandos)
            • Cestas
            • Fichas
            • Fichas seleccionadas
            • Listas
            • Tablas
            • Tubos
          • Básicos
            • Controles de flujo
            • Debug
            • Ejecución
            • Salida/retornos
            • Scripts (grupo de comandos)
            • Transacciones (comandos)
            • Variables
          • Comunicación
            • GPS
            • Internet
            • Protocolo TCP
            • Puerto serie
            • SDV
          • Interfaz
            • Acciones (comandos)
            • Control
              • Ejemplo de CSS
            • Diálogos
            • Formularios - comandos
            • Localizadores
            • Objeto - grupo de comandos
            • Ventana principal
            • Vista de datos - comandos
          • Sistema
            • Comandos de Sistema
            • Configuración
            • Directorios
            • Ficheros
        • Tubo de ficha
        • Tubo de lista
        • Variable local
      • Editores
        • Asistente de fórmulas
          • Operadores
          • Funciones estándar
            • Funciones API
            • Funciones básicas
            • Funciones de cadenas
              • Expresiones regulares
            • Funciones científicas
            • Funciones de Cliente-servidor
            • Funciones de color
            • Funciones de códigos
            • Funciones de directorios
            • Funciones de fechas
            • Funciones de ficha en curso
            • Funciones de horas
            • Funciones JSON
            • Funciones de Internet
            • Funciones de juegos de caracteres
              • Codecs
            • Funciones numéricas
            • Funciones de sistema
            • Funciones de tiempo
            • Funciones trigonométricas
          • Funciones de dll
          • Funciones de proceso
          • Funciones de campo
          • Campos
          • Constantes
          • Variables globales
          • Variables locales
          • Variables del sistema
          • Verificador de fórmulas
          • Conversión automática de datos
          • Introducción de datos literales
          • Secuencias de escape en cadenas de caracteres
          • Composición de sendas en fórmulas
          • Operar con datos de tipo fecha, hora y tiempo
        • Editor de imágenes
        • Selector de fuentes
    • Scripts
      • Lenguajes
        • JavaScript
          • Procesos JavaScript
          • Fórmulas JavaScript
          • Clases
            • Funciones globales
            • Objetos
            • VAbstractBrowser
            • VAbstractDataView
            • VAbstractListDataView
            • VAdvandedGridListDataView
            • VAlternatorListDataView
            • VApp
              • VApp: enumeraciones
              • VApp: ejemplos
            • VBoundFieldComboBox
            • VBoundFieldEdit
            • VBoundFieldEditBrowser
            • VBoundFieldListBox
            • VByteArray
            • VCheckBox
            • VClipboard
            • VClockWidget
            • VComboBox
            • VComboListDataView
            • VCoverFlowListDataView
            • VCWebView
            • VDataCatcherEdit
            • VDataCatcherEditBrowser
            • VDataView
            • VDataViewDialog
            • VDateEdit
            • VDateEditBrowser
            • VDateTimeEdit
            • VDateTimeEditBrowser
            • VDial
            • VDir
              • VDir: enumeraciones
            • VExtension
              • VExtension: enumeraciones
            • VFile
              • VFile: enumeraciones
            • VFileInfo
            • VFilePathEditBrowser
            • VFinder
            • VFont
              • VFont: enumeraciones
            • VFormBlockListDataView
            • VFormDataView
            • VFormulaEditBrowser
            • VGaugeWidget
            • VGPS
            • VGridListDataView
            • VGroupBox
            • VImage
            • VImageEdit
            • VImageWidget
            • VInstancesList
            • VInstance
            • VInstances
            • VItemRegisterPattern
            • VLabel
            • VLineEdit
            • VLineEditBrowser
            • VListBox
            • VListDataView
            • VLogin
            • VMainWindow
              • VMainWindow: enumeraciones
            • VMdiView
            • VMimeData
            • VMultiDataView
            • VNumberSpinBox
            • VNumberSpinBoxBrowser
            • VObjectInfo
              • VObjectInfo: enumeraciones
            • VObjectInstance
            • VProcess
            • VProgressBar
            • VProjectInfo
            • VPushButton
            • VQmlFormDataView
            • VQmlListDataView
            • VQmlListModel
            • VQuery
            • VRadioButton
            • VRegister
            • VRegisterList
            • VReportListDataView
            • VRequest
            • VResponse
            • VRoot
            • VScreen
            • VScrollArea
            • VServerAdmin
            • VSettings
            • VSlider
            • VSlotListDataView
            • VSolutionInfo
            • VSplitter
            • VSqlDatabase
            • VSSLCertificate
            • VSSLInfo
            • VSSLSessionCipher
            • VStackedWidget
            • VSvgButton
            • VSvgSlideSwitch
            • VSvgToggleSwitch
            • VSvgWidget
            • VSysInfo
              • VSysInfo: enumeraciones
            • VTableInfo
              • VTableInfo: enumeraciones
            • VTabWidget
            • VTextEdit
            • VTextFile
            • VThermometerWidget
            • VThumbWheel
            • VTimeEdit
            • VTimeEditBrowser
            • VToolBox
            • VTreeItem
            • VTreeItemRegister
            • VTreeListDataView
            • VTreeMenu
            • VTreeMultiTableListDataView
            • VTreeWidget
            • VUser
            • VUserGroup
            • VUserGroupList
            • VUserList
            • VXmlReader
            • VXmlWriter
            • Widget
            • XMLHttpRequest
        • QML
          • Tipos QML
          • Funciones específicas de QML
    • Depuración
      • Depuración de procesos de Velneo
      • Depuración de procesos JavaScript
      • Monitor de vClient
    • Extensiones de Velneo vDevelop
    • Acceso directo a una solución desde vDevelop
    • Buenas prácticas
      • Buenas prácticas de organización
        • Proyectos
        • Organización de carpetas
        • Proyecto de datos
        • Proyecto de aplicación
      • Buenas prácticas de codificación
        • Identificadores
        • Teclas aceleradoras
        • Documenta
        • Diseña los formularios como si no existiesen los layouts
      • Buenas prácticas de rendimiento
        • Arquitectura
          • Listas de registros
          • Lista de resultados de una búsqueda
          • Las cestas
          • Las variables globales
          • La caché de fichas
          • Programa en cloud
        • Formularios
          • Condiciones de visible y activo
          • Carga de subformularios en pestaña, caja o pila
        • Base de datos
          • Campos
          • Indices
          • Actualizaciones
          • Eventos de tabla o triggers
          • Variables globales y constantes
          • Tablas en memoria vs tablas en disco
          • Optimizar migraciones de datos
          • Búsquedas en el servidor ¿Cuándo y Cómo?
          • Campos fórmula vs campos en disco
          • Indices condicionados vs búsquedas complejas
          • ¿Cuándo usar tablas de extensión?
          • Indices de trozos y palabras
          • ¿Cuándo usar cada tipo de campo alfa?
        • Procesos y funciones y eventos
          • 1º, 2º, 3º y 4º plano ¿Cuándo usar cada uno?
          • Bloqueo blando vs bloqueo duro
          • Pasar información del cliente al servidor
          • ¿Cómo optimizar transacciones grandes?
          • ¿Cómo gestionar las transacciones?
          • Grabaciones optimizadas para el usuario
        • Carga de registros en objetos de lista
          • Rejillas
            • Campos punteros a singular
            • Totales
            • Condiciones de activo, visible y color en columna
            • Campos de tipo objeto
        • Conoce los límites
      • Imágenes
      • Buenas prácticas para el desarrollo en equipo
      • Modo mantenimiento
    • Análisis de bases de datos para aplicaciones de Velneo
      • Un centro de enseñanza
      • Facturas de un cliente
      • Repartos de obras de teatro
      • Galería de arte
      • Gestión de un colegio
      • Instalación de lunas para vehículos
      • Libros y autores
      • Tienda de discos
      • Últimos pedidos de un proveedor
      • Existencias por almacén y precios por cliente
      • Generación de tickets para un quiosco
      • Navegación por facturas
  • Velneo vDevelop Web
  • Velneo vAdmin
    • ¿Qué es Velneo vAdmin?
    • Gestión de usuarios
    • Gestión de aplicaciones
      • Soluciones
      • Instancias
      • Disco
    • Monitorización
      • Lista de comandos
    • Tareas
    • Acceso directo
    • Velneo vAdmin Web
  • Velneo vClient
    • ¿Qué es Velneo vClient?
    • Movilidad
    • Funcionalidades de Velneo vClient
      • Accesos directos y VRL
      • Cambiar idioma
      • Panel de procesos en 2º plano
      • Manejo de rejillas
        • Submenú de filtros
      • Uso de la rejilla avanzada
      • Manejo de cestas
      • Refrescos
      • Caché local
      • Edición de campos enlazados a maestro
      • Edición de campos de tipo fecha
      • Capturar imagen desde una cámara
      • Asignar impresoras lógicas
      • Actualización automática
      • Personalización de la ventana de conexión de Velneo vClient
      • Instalador personalizado de Velneo vClient
      • Ordenación de listas
  • Velneo vServer
    • ¿Qué es Velneo vServer?
    • Instalación y configuración
      • Activación de la licencia
      • Línea de comandos de Velneo vServer
      • Parámetros configurables de Velneo vServer
      • Estructura de directorios
    • Iniciar y detener Velneo vServer
    • Funcionalidades
      • Protocolo VATP
      • Protocolo VATPS
      • Multi-hilo
      • Integridad referencial
      • Refrescos terciarios
      • Sistema transaccional
      • Sistema de bloqueos
      • Tecnología bigkey
      • Hilo de control
    • Mensajes de log de sistema
    • vPacker
  • Velneo vInstallBuilder
    • ¿Qué es Velneo vInstallBuilder?
    • Configurar una instalación
    • Probar una instalación
    • Crear el instalable
    • Accesos directos
  • Velneo vModApache
    • ¿Qué es Velneo vModApache?
    • Instalación y configuración
    • Nomenclatura de objetos en urls
    • Uso de ficheros adjuntos
    • Caché local de Velneo vModApache
  • Velneo vDataClient
    • ¿Qué es Velneo vDataClient?
    • Iniciar Velneo vDataClient
    • Interfaz de Velneo vDataClient
    • Procesos
    • Utilidades
    • Acceso directo a una instancia de datos
    • Velneo vDataClient Web
  • Velneo vTranslator
    • ¿Qué es Velneo vTranslator?
    • Importación y exportación basada en XLIFF
    • Acceso directo a una solución
  • Velneo ODBC Driver
    • ¿Qué es velneo ODBC Driver?
    • Referencia de comandos SQL
  • Velneo vVersion
    • ¿Qué es Velneo vVersion?
  • Velneo vERP
    • ¿Qué es Velneo vERP?
    • Manual del programador
    • Documentación de la ApiRest
    • Novedades de la versión
  • Velneo vTutor
    • ¿Qué es vTutor?
    • Tutores de objetos básicos
      • Tutor de árboles visores de tablas arboladas
      • Tutor de búsquedas
      • Tutor de cestas
      • Tutor de formularios
      • Tutor de informes
      • Tutor de localizador básico
      • Tutor de marcos
      • Tutor de rejillas
      • Tutor de rejillas avanzadas
    • Tutores de objetos avanzados
      • Tutor de alternadores de lista
      • Tutor de comboview
      • Tutor de drag and drop
      • Tutor de eventos
      • Tutor de tablas de extensión y extensiones de ficha
      • Tutor de tubos de ficha y de lista
      • Tutor de grabación de fichas
      • Tutor de gráficos
      • Tutor de impresión de informes
      • Tutor de lupas
      • Tutor de protocolo TCP/IP
      • Tutor de reemplazo
    • Tutores de controles
      • Tutor de botones de menú
      • Tutor de controles SVG
      • Tutor de edición numérica
      • Tutor de visor html dinámico
      • Tutor de vistas de datos de lista
    • Tutores de procesos y manejadores de evento avanzados
      • Tutor de cambio de marco
      • Tutor de comandos de interfaz y acciones
      • Tutor de importación y exportación de ficheros ASCII
      • Tutor de portapapeles
      • Tutor de procesos
      • Tutor de SDV
    • Tutores de scripts
      • QML: hola mundo
      • QML: tutor básico
      • QML: tutor de vistas
      • Tutor de XMLHttpRequest (webServices)
  • Velneo cloud
    • ¿Qué es Velneo Cloud?
    • Panel de control vServer cloud
      • URC
      • vServer
      • Apache
      • SFTP
      • Usuarios
    • Copias de seguridad
    • Velneo cloud API
      • Uso de Velneo cloud API
    • Explorador de archivos cloud sFTP
    • TCP en Velneo cloud
    • Dominios de empresa y certificados
    • Velneo vModApache en cloud
    • SLA
    • Hora de los servidores en el cloud de Velneo
    • ¿Qué puedo hacer si tengo una incidencia en mi servidor cloud?
Con tecnología de GitBook
En esta página
  • Identificador
  • Nombre
  • Estilos
  • Comentarios
  • Modo
  • Tabla
  • Proceso
  • Alta ficha principal
  • Baja ficha principal
  • Modificación ficha principal
  • Otros temas importantes a tener en cuenta

¿Te fue útil?

  1. Velneo vDevelop
  2. Proyectos objetos y editores
  3. Objetos de proyecto de aplicación
  4. Formulario

Extensión de ficha

Última actualización hace 4 años

¿Te fue útil?

Una extensión de ficha nos permite acceder a una ficha de una tabla distinta a la tabla asociada al formulario principal.

Un uso habitual será el de editar maestros de extensión, aunque no es obligatorio, pues también podremos usarlo para editar maestros normales de la ficha actual, e incluso de otra tabla no relacionada.

Se trata de un sub-objeto de formulario, por lo que lo crearemos a través del panel de sub-objetos del editor de formularios.

El formulario estará asociado a una tabla y mediante un sub-objeto extensión de ficha declarado en el mismo, resolveremos cuál será la otra tabla que va a ser editada en el formulario.

Las propiedades de una extensión de ficha son:

Identificador

Etiqueta alfanumérica que identifica de forma unívoca al sub-objeto. Este identificador será el que usemos en y para referenciarlo en otras propiedades.

El identificador constará de mayúsculas y números exclusivamente. Al identificar de forma unívoca una variable no puede haber duplicidad.

Nombre

Etiqueta alfanumérica que servirá como descriptor del sub-objeto. Se usará para presentar información de la misma en e

Podemos definir una etiqueta por cada idioma presente en el

Estilos

Podemos definir el estilo privado que limita el acceso del usuario final al sub-objeto desde puntos donde no se haya programado el acceso al mismo.

Comentarios

Esta propiedad nos permite documentar el uso del sub-objeto.

Modo

Nos permite definir el modo en el que se cargará la otra ficha. Hay dos valores posibles:

Campo puntero

Lo usaremos cuando queramos que la ficha de extensión sea un maestro de la tabla asociada al formulario.

Proceso

Lo usaremos cuando queramos que la ficha de extensión sea una ficha de otra tabla que no esté enlazada con la actual.

Tabla

Esta propiedad podremos editarla si en la propiedad modo hemos asignado el valor campo puntero.

Proceso

Esta propiedad estará disponible si en la propiedad modo hemos asignado el valor proceso. en ella seleccionaremos el proceso que resolverá la ficha que queremos usar como extensión de la ficha asociada al formulario. El proceso, tendrá que tener como salida una ficha de la tabla que usaremos como extensión de la ficha. En este caso, en la propiedad tabla se rellenará automáticamente con la tabla de salida de dicho proceso.

Alta ficha principal

Esta propiedad nos permite definir el comportamiento de la ficha de extensión en el caso de un alta de registro de la ficha principal. Las opciones posibles son:

Previo a la operación principal

Si esta opción está activada, cuando se mande guardar la ficha principal, el sistema forzará antes la grabación de la ficha de extensión.

Alta ficha de extensión permitida

Si esta opción está activada, dará de alta la ficha de extensión al grabar la ficha principal. Si no está activada, no dará de alta la ficha de extensión.

Modificación ficha de extensión permitida

Si esta opción está activada, modificará la ficha de extensión al grabar la ficha principal. Si no está activada, no modificará la ficha de extensión.

Baja ficha principal

Esta propiedad nos permite definir el comportamiento de la ficha de extensión en el caso de una baja de la ficha principal. Las opciones posibles son:

Previo a la operación principal

Si esta opción está activada, cuando se mande borrar la ficha principal, el sistema forzará antes el borrado de la ficha de extensión.

Baja ficha de extensión permitida

Si esta opción está activada, borrará la ficha de extensión al borrar la ficha principal. Si no está activada, no borrará la ficha de extensión.

Modificación ficha principal

Esta propiedad nos permite definir el comportamiento de la ficha de extensión en el caso de una modificación del registro de la ficha principal. Las opciones posibles son:

Previo a la operación principal

Si esta opción está activada, cuando se mande guardar la ficha principal, el sistema forzará antes la grabación de la ficha de extensión.

Alta ficha de extensión permitida

Si esta opción está activada, dará de alta la ficha de extensión al grabar la ficha principal. Si no está activada, no dará de alta la ficha de extensión.

Modificación ficha de extensión permitida

Si esta opción está activada, modificará la ficha de extensión al grabar la ficha principal. Si no está activada, no modificará la ficha de extensión.

Para editar un campo de una extensión de ficha añadiremos al formulario el control de edición correspondiente y, en la propiedad ficha extensión, seleccionaremos el sub-objeto extensión de ficha declarado en el formulario del que va a alimentarse. Una vez hecho esto, si editamos la propiedad contenido del mismo y abrimos el asistente de fórmulas, veremos que al abrir la lista de campos nos presentará directamente los campos de la extensión de ficha y no de la ficha asociada al formulario.

En los formularios pueden convivir tanto controles que visualicen/editen el maestro como hasta ahora, como un maestro, con controles que usando la extensión de ficha editen directamente el maestro.

Debemos de tener en cuenta que si usamos controles de ficha de extensión para editar un maestro, para dar de alta un nuevo maestro, debemos limpiar previamente el puntero #ID, poniéndolo a 0, porque si no, lo que haríamos sería editar directamente la última ficha seleccionada, en lugar de dar de alta un nuevo maestro de extensión.

Nuestra recomendación es usar un botón o check que permita alternar entre ambos métodos y que mediante manejador de evento se encargue de limpiar el maestro en el caso de alta.

Tanto las extensiones de ficha como los maestros de extensión como los índices complejos son elementos independientes, pueden existir sin los demás, aunque es cierto que se complementan, pueden usarse independientemente del resto.

Un formulario que esté asociado a una tabla de tipo maestro de extensión podremos usarlo para resolver herencia inversa en un formulario de su tabla padre. Ver el capítulo dedicado al sub-objeto inserción para ampliar información al respecto.

Veamos un ejemplo práctico, podremos definir un formulario de origen FACTURA (ficha principal) y declarar como ficha de extensión el puntero a la tabla CLIENTE (ficha de extensión). En el formulario podremos poner controles tanto de la tabla FACTURA como de la tabla CLIENTE y el usuario podrá editar campos de ambas tablas en el mismo formulario. Velneo se encarga de almacenar la información de ambas tablas tras un alta, baja o modificación según la configuración que el desarrollador haya definido en la ficha de extensión.

Para declarar una ficha de extensión en el formulario tan sólo tenemos que crear el subobjeto y rellenar las siguientes propiedades:

Campo puntero nos permite editar en el formulario, subformulario o vista de datos la información de cualquier maestro, incluso dar de alta el registro si no existe, modificarlo e incluso podríamos llegar a eliminar un maestro directamente desde la ficha de extensión.

Proceso nos permite mostrar y editar en el formulario, subformulario o vista de datos cualquier registro de cualquier tabla ya dentro del proceso podremos obtener y alimentar la ficha de salida del proceso con el registro de la tabla que nos interese. Al igual que ocurría con el campo puntero, la ficha de extensión editada podemos usarla para realizar cualquier operación de base de datos, alta, modificación o baja.

La ficha de extensión permite alimentar no sólo a los controles del formulario principal, también podemos aplicar fichas de extensión en subformularios e incluso en formularios incrustados en el control vista de datos del formulario.

Velneo gestiona automáticamente como se comportarán las fichas de extensión respecto a las operaciones de la ficha principal. Hay tres propiedades importantes que debes revisar cuando creas una ficha de extensión ya que de esta configuración depende las operaciones que Velneo realizará de forma automática de las fichas de extensión cuando realice las operaciones de alta, baja o modificación de la ficha principal del formulario:

Alta ficha principal Baja ficha principal Modificación ficha principal

Se pueden marcar de forma independiente los check de alta, modificación o baja indicando si debe realizarse esa operación para el registro de la ficha de extensión. Hay que tener en cuenta que cuando se produce el alta de la ficha principal, la ficha de extensión puede ya existir, por ese motivo se contempla en alta y modificación la posibilidad de que la ficha de extensión pueda estar en cualquiera de los dos estados. Además, es importante marcar o desmarcar el check de previo a la operación principal para garantizar el orden en que se realizan las operaciones, algo fundamental cuando por ejemplo la extensión de ficha es maestra de la ficha principal, en ese caso el alta o modificación debe ser previo y lo contrario sucede si la ficha de extensión corresponde a una tabla histórica. En las bajas debemos proceder de forma inversa.

Cuando creamos un formulario de una tabla de extensión Velneo nos creará automáticamente la ficha de extensión de la tabla padre y le pondrá el identificador ID a la ficha de extensión.

Una vez declarada la ficha de extensión podremos crear controles en el formulario editando información tanto de la ficha principal como de cualquiera de las fichas de extensión. Para hacerlo tendremos que cubrir adecuadamente la nueva propiedad “Ficha extensión” que encontraremos en los controles del formulario. Por defecto esta propiedad asume el valor ".ninguno" lo que permite usar los datos de la ficha principal o podemos elegir cualquier de las fichas de extensión.

Cuando editemos propiedades de los controles del formulario veremos como en el editor de fórmulas nos permitirá diferentes posibilidades, por ejemplo:

En la propiedad contenido podremos utilizar datos de la ficha principal o de la ficha de extensión seleccionada.

En las propiedades condición de visible o condición de activo, por ejemplo, veremos que la ventana de selección de campo para la fórmula nos mostrará el árbol con todas las fichas de extensión más la ficha principal. Es decir, podremos condicionar un control a que se cumplan condiciones en cualquiera de la fichas que tengamos declaradas en el formulario.

Velneo gestionará automáticamente la sincronización de la información entre todas las fichas presentes en el formulario, de tal forma que cuando editemos un dato de un maestro podremos ver como cambia en tiempo real en todos los lugares donde se usa. Todo esto sin necesidad de que el desarrollador escriba ni una sola línea de código.

Otros temas importantes a tener en cuenta

Si en el formulario de clientes declaramos un edit con el contenido #ID.NAME, ese edit te servirá para hacer la selección de la entidad del cliente, pero no te servirá para modificar directamente el nombre de la entidad.

Si deseamos permitir el nombre de la entidad que es una ficha de extensión en el formulario del cliente debemos insertar un control de edición con la propiedad “Ficha extensión” ID y en el contenido declararemos #NAME, pues el control pertenece al registro de entidad.

Si declaramos en el mismo formulario los dos controles anteriores, es decir un edit sobre la ficha principal (cliente) con el contenido #ID.NAME que nos permitirá seleccionar la entidad y declaramos también un control de edición para la ficha de extensión ID (entidad) con el contenido #NAME que nos permitirá crear una nueva entidad. Tendremos que gestionar el modo en el que esté trabajando el usuario que podrá ser de selección o de alta. ¡Atención! debemos tener la precaución de controlar que si el usuario pasa del modo selección al modo alta debemos limpiar el campo ID la tabla clientes para que no apunte a ninguna entidad, ya que de lo contrario lo que escribiese el usuario en el edit será el nombre con el que se modificaría la ficha seleccionada previamente.

fórmulas
objetos
inspectores.
proyecto.