Esta documentación está en fase de desarrollo y puede contener errores.

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.PlazoDiasCobroVentas

El 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:

OrigenEjemplo
Otro campo de relaciónC.ReferenciaNumeracionSerie = C.ReferenciaTipoDeVenta.ReferenciaNumeracionOrdinarias
Un registro buscado por IDC.ReferenciaBono = F.GetRowById(S.Sections.BonosHoras.ID, C.ReferenciaProyecto.ReferenciaBono)
VaciarlaC.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 if

Comparar 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 if

El 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 if

Es 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

PrefijoApunta aEscribe
C.El registro abierto en el formulario
I.El registro que recorres en un listadoNo
D.Usuario, empresa, fecha y sistemaNo
V.Variables del script

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 scriptsScripts y eventosEsquema (S.)Espacios I., D. y A.Funciones (F.)

On this page