Skip to main content
Esta es la superficie completa que puede invocar una regla de campo. Todo lo que aparece aquí está en alcance dentro del cuerpo de una regla: sin importaciones ni configuración previa.
¿Es tu primer contacto con las reglas? Lee primero Reglas de campo. Cubre los eventos, la nomenclatura de las funciones y cómo construir la clave de un campo — las piezas que necesitas antes de que esto sea útil.

El objeto del campo

Cada campo del formulario se alcanza como field.<claveDelCampo>. Dentro de un manejador OnChange, OnBlur, OnFocus u OnClick, el argumento que recibes es ese mismo objeto, así que value.getValue y field.<su propia clave>.getValue son equivalentes.

Leer y escribir el valor

setValue recibe un objeto, no un valor suelto: setValue({ value: 'abc', onchange: false }). Pasar un valor suelto no hace nada.En campos foráneos y de selector, pasa solo el id, no un objeto armado a mano.
getValue sobre un campo de tabla o de detalle no devuelve los datos pintados en él. Si necesitas esos datos al guardar, reconstrúyelos en el manejador de guardado en lugar de leerlos de vuelta.

Estado de validación

Visibilidad e interacción

setVisible y setRender no tienen efecto en contexto de tabla. Para comportamientos que deban funcionar en una tabla, cambia valores, errores o el estado habilitado.

Identidad

Eventos

Invoca los miembros on* para volver a disparar el evento propio de un campo. Invoca los miembros setOn* para reemplazar un manejador en tiempo de ejecución; normalmente las reglas se adjuntan desde el Diseñador de páginas, así que son poco frecuentes dentro del cuerpo de una regla.
Nunca vuelvas a disparar el evento propio de un campo desde las reglas que escriben en él. Si varios campos origen llaman field.<destino>.onChange(), el OnChange del destino se convierte en el manejador de composición, y escribir directamente en el destino sobrescribe lo que ingresa el usuario. Escribe con setValue({ onchange: false }).
Los manejadores OnChange tienen un retardo de 500 ms. Asigna _delay a la función del manejador para cambiarlo — por ejemplo myHandler._delay = 0 para no tener retardo.

Propiedades adicionales

setProperties(props) define opciones propias del tipo de campo. En un campo de fecha, por ejemplo, restringe qué fechas se pueden elegir:

Helpers del formulario

failfast.myFormHelpers controla el formulario como un todo. Es lo que usan las reglas OnLoad, OnSubmit y OnDelete.
handleSubmit() puede fallar. Verifica siempre el resultado antes de continuar, sobre todo en un formulario embebido, donde a un guardado fallido le seguirían pasos que asumen que funcionó:
Usa throw result en lugar de return cuando la regla que lo rodea también deba detenerse.

Helpers de la nota

failfast.myNoteHelpers lee y escribe la nota del formulario. Los tres son asíncronos: si el editor todavía no se ha montado, la operación espera y se aplica cuando lo haga.
Escribir en la nota cuenta como una edición del usuario y se guarda igual. Una regla OnLoad que escriba en la nota va a sobrescribir lo que ya está guardado, a menos que cortes primero en modo edición:

Contexto del espacio de trabajo

failfast lleva la información de quién está trabajando y en qué contexto. field y failfast son el mismo objeto, así que cualquiera de los dos nombres funciona.
Protege con if (failfast.typeRender === 'table') return el comportamiento que solo tenga sentido en un formulario completo. La misma regla se ejecuta en ambos contextos.

Acciones del contexto

Servicios y procesos

Registros

Cuatro nombres le dan a una regla acceso a los campos; la diferencia está en de qué formulario son esos campos. Son objetos vivos, así que todo lo que les asignes queda visible para cada regla que corra después. Ese es el mecanismo para compartir un helper entre reglas — consulta compartir lógica.
Las claves de page comparten espacio de nombres con los identificadores de formulario, así que pon tus helpers dentro de un contenedor como page.__helpers en lugar de dejarlos en el nivel superior.page nunca se limpia, así que un helper definido por un formulario sigue ahí después de navegar a otro. Reasígnalo siempre (page.__helpers.x = …) en lugar de definirlo solo cuando falte, o se usará una versión obsoleta de un formulario anterior.

Objetos integrados

Están en alcance en el cuerpo de toda regla.
await funciona en cualquier punto del cuerpo de una regla: el manejo asíncrono se aplica por ti.Carga los datos relacionados en una sola solicitud usando el parámetro fields en lugar de una solicitud por relación. fields=customer__name,customer__document_number avanza hacia adelante por las relaciones; una relación inversa regresa como arreglo. Los formatos de solicitud y respuesta están documentados en la Referencia de API.

Helpers compartidos

Estas funciones provienen del catálogo de reglas de tu espacio de trabajo y se pueden invocar por su nombre desde cualquier regla.
El arreglo fields que le pasas a validateOnSubmit debe incluir todos los campos que el registro exige, no solo los que toca una condición. Lo que omitas no se valida, llega al guardado y falla allí sin un mensaje sobre el que el usuario pueda actuar.
Tu espacio de trabajo puede definir helpers de catálogo adicionales además de estos cuatro. Abre el menú Código en el Diseñador de páginas para ver cuáles están disponibles.

Configuración del selector

Una regla OnClick sobre un campo selector retorna un objeto de configuración. Todas las claves son opcionales: retorna solo lo que necesites.

Valores de retorno por evento

Páginas relacionadas

Reglas de campo

Eventos, nomenclatura, claves de campo y los patrones en los que se usan estos métodos.

Diseñador de páginas

Donde se adjuntan las reglas, bajo el menú Código.