C.: el registro del formulario
El prefijo que lee y escribe los campos del registro abierto en el formulario, incluidas sus relaciones y su fila contenedora.
I. lee el registro que recorres en un listado. C. va un paso más allá: apunta al registro abierto en el formulario y, además de leerlo, lo escribe. Es el prefijo central de los scripts de formulario y de campo: casi todo script que reacciona a lo que hace el usuario lee o asigna algo con C..
C. solo existe donde hay un formulario abierto: scripts de formulario y de campo del Terminal. En una fórmula de algoritmo o en un script independiente no hay "registro actual en edición", y da error de contexto. Ahí usa I. o D..
Leer y escribir campos
C.Campo devuelve el valor actual del campo, con los cambios que el usuario aún no ha guardado. Asignarlo lo cambia en el formulario, como si el usuario lo hubiera tecleado:
@ El título de la tarea se compone solo: clave + resumen
C.TextoPrincipal = F.Concat(C.Clave, ' ', C.Resumen)Los nombres de campo son los de tu esquema, los mismos que ves en S.Fields.Seccion.Campo. La diferencia: S. te da la referencia del campo (su ID, para pasarlo a funciones) y C. te da su valor.
C.ID devuelve el identificador del propio registro. Es lo que pasas cuando creas un registro relacionado que debe apuntar al actual:
F.AddElement_SetValue(S.Fields.TareasDeProyectos.ReferenciaTarea.ID, C.ID)Un registro recién iniciado todavía no existe en el servidor. Si el script va a usar C.ID para relacionar otros registros, guarda antes con F.Save(). Compruébalo con F.IsNew() si lo necesitas.
Leer a través de una relación
Cuando el campo es una relación, C. no se queda en el ID: encadena con punto y lee campos de la ficha relacionada.
@ Condiciones de pago definidas en la ficha del cliente seleccionado
txt condiciones = C.ReferenciaCliente.CondicionesPagoVenta
num dias = C.ReferenciaCliente.PlazoDiasCobroVentasEl encadenado admite más de un salto. Aquí el script salta del registro al proyecto, del proyecto a su flujo y del flujo a su tipo por defecto:
C.ReferenciaTipo = F.GetRowById(S.Sections.TiposDeTareaDeProyectos.ID, C.ReferenciaProyecto.ReferenciaFlujo.ReferenciaTipo)Asignar una relación
Un campo de relación acepta cualquier expresión que devuelva un identificador de registro:
| Origen | Ejemplo |
|---|---|
| Otro campo de relación | C.ReferenciaNumeracionSerie = C.ReferenciaTipoDeVenta.ReferenciaNumeracionOrdinarias |
| Un registro buscado por ID | C.ReferenciaBono = F.GetRowById(S.Sections.BonosHoras.ID, C.ReferenciaProyecto.ReferenciaBono) |
| Vaciarla | C.ReferenciaProducto = '' |
Una relación sin valor es cadena vacía, no un nulo. La comprobación canónica es contra '':
if C.ReferenciaCliente <> ''
C.CondicionesDePago = C.ReferenciaCliente.CondicionesPagoVenta
end ifComparar con enumeraciones
Los campos de tipo lista se comparan contra S.Enums, nunca contra números sueltos:
if C.TipoFactura = S.Enums.tipofactura.rectificativo
C.ReferenciaNumeracionSerie = C.ReferenciaTipoDeVenta.ReferenciaNumeracionRectificativas
end ifEl encadenado también funciona aquí: C.ReferenciaEstado.EstadoTarea = S.Enums.tareaestado.enproceso lee el enum de la ficha de estado relacionada y lo compara.
Desde una línea, el formulario que la contiene
En las secciones de lista (las líneas de una factura, de un pedido, de un presupuesto), el script de la línea puede subir a su registro contenedor con C.RelacionElementoContenedorListador:
@ La línea hereda la categoría general indicada en la factura
if C.RelacionElementoContenedorListador.ReferenciaCategoriaGeneral <> ''
C.ReferenciaCategoriaDeVenta = C.RelacionElementoContenedorListador.ReferenciaCategoriaGeneral
end ifEs la vía para que las líneas hereden valores del documento (categoría, impuesto, configuración) sin que el usuario los repita línea a línea.
C. frente a los demás prefijos
| Prefijo | Apunta a | Escribe |
|---|---|---|
C. | El registro abierto en el formulario | Sí |
I. | El registro que recorres en un listado | No |
D. | Usuario, empresa, fecha y sistema | No |
V. | Variables del script | Sí |
Existe también R., que apunta a la sección relacionada en scripts de campos personales. Es un caso minoritario: si estás empezando, todo lo que necesitas está en C..
→ Recetas de scripts → Scripts y eventos → Esquema (S.) → Espacios I., D. y A. → Funciones (F.)
Espacio de Nombres (S.)
Referencia del espacio S. de DinaScript para acceder al esquema de Flex (secciones, campos, relaciones), a la sesión del usuario y a las variables de preguntas en tiempo de ejecución.
Espacios I., D. y A.
Los tres prefijos que devuelven valores reales en tiempo de ejecución: el registro que recorres, el entorno y el resultado de un algoritmo.