Esta página explica cómo funcionan las reglas y cómo escribirlas. Para la lista completa de todo lo que puede invocar una regla — cada método de campo, cada helper de formulario y cada objeto integrado — consulta la Referencia de reglas de campo.
Cuándo se ejecutan las reglas
Cada regla está ligada a un evento. Cuando ocurre el evento, la regla se ejecuta.
Los eventos a nivel de formulario gobiernan todo su ciclo de vida; los eventos a nivel de campo reaccionan a lo que el usuario hace en un campo puntual.
OnLoad, OnSubmit y OnDelete aplican únicamente cuando la regla pertenece a la entidad propia del formulario. OnDelete solo se ejecuta en contexto de tabla.
Qué pueden hacer las reglas
- Visibilidad condicional — muestra u oculta campos, secciones o pestañas según otros valores. Una sección de “dirección de entrega” puede aparecer solo cuando se requiere despacho.
- Lógica de obligatoriedad condicional — haz que un campo sea obligatorio, o deshabilítalo, según condiciones en lugar de siempre.
- Valores calculados y prediligenciados — asigna el valor de un campo a partir de otros campos, o prediligencia valores por defecto razonables al abrir el formulario.
- Validación al guardar — revisa el registro como un todo antes de guardar, y detén el guardado con un mensaje cuando algo esté mal.
- Invocación de servicios — consulta un servicio como parte del comportamiento del formulario, por ejemplo para buscar o verificar datos.
Dónde viven las reglas
Las reglas se escriben y se gestionan en el Diseñador de páginas, bajo el menú Código. Desde ahí llegas a las reglas OnSubmit, OnLoad y OnDelete, y a la vista completa de todo lo que está adjunto a la plantilla.Las reglas pertenecen a una plantilla de formulario, no a la tabla. Si una tabla tiene varias plantillas, cada plantilla lleva sus propias reglas — consulta Formularios y plantillas de formulario. Tenlo presente cuando un comportamiento parezca “desaparecer”: puede que estés viendo otra plantilla.
Anatomía de una regla
Una regla es una sola función con nombre. El nombre decide a qué se asocia la regla; el cuerpo es el comportamiento.- Alcance — el primer segmento. Usa
globalpara una regla de formulario normal. - Clave del campo — el segmento intermedio. Identifica a qué campo se asocia la regla, y debe ser exacta.
- Evento — el último segmento:
onchange,onblur,onfocus,onclick,onload,onsubmit,ondelete,validateoaction.
Construye la clave del campo
La clave del campo no es el nombre crudo del campo. Se construye en dos pasos:1
Parte del nombre del campo en la base de datos y quita el sufijo _id
location_id se convierte en location; document_type_id en document_type; first_name se queda como first_name.2
Antepón el nombre de la entidad propia del campo, con los puntos reemplazados por guiones bajos
Un campo de la entidad
stakeholder.person llamado email se convierte en stakeholder_person_email. Un campo traído de una entidad relacionada usa el nombre de esa entidad, no el del formulario.Qué recibe el manejador
El argumento depende del evento:
Dentro de un manejador de entrada, el parámetro y
field.<su propia clave> son el mismo objeto: usa el que se lea mejor.
Direccionar otros campos
Cualquier otro campo del formulario se alcanza mediante el registrofield:
field y failfast son el mismo objeto, así que field.myFormHelpers y failfast.myFormHelpers son intercambiables. La referencia lista todos los métodos disponibles en un campo.
Reglas de booleano calculado
Cuatro tipos de regla no ejecutan acciones: responden una pregunta sobre el campo y retornan un booleano. El formulario las reevalúa a medida que cambian los valores.visible, enabled y render para el estado que sea función pura de otros valores. Recurre a una regla OnChange cuando necesites un efecto, no una respuesta.
Trabajo asíncrono y tiempos
Puedes usarawait dentro de una regla: el manejo asíncrono se aplica automáticamente cuando el cuerpo lo necesita.
Las reglas OnChange tienen un retardo de 500 ms para no dispararse en cada tecla. Para cambiarlo, asigna
_delay al manejador: myHandler._delay = 0 lo ejecuta de inmediato.Patrones frecuentes
Mostrar u ocultar según otro campo
Mostrar u ocultar según otro campo
setVisible oculta el campo pero lo mantiene montado; setRender lo elimina por completo. Ambos no tienen efecto en contexto de tabla: ahí cambia valores, errores o el estado habilitado.Exigir un campo solo bajo una condición
Exigir un campo solo bajo una condición
Configurar las opciones de un selector
Configurar las opciones de un selector
Una regla OnClick sobre un campo selector retorna un objeto de configuración que determina qué consulta y qué muestra el selector.Retorna solo las claves que necesites. El conjunto completo está en la referencia.
Inicializar campos al abrir el formulario
Inicializar campos al abrir el formulario
Asignar valores directamente en el cuerpo de un OnLoad compite con la carga de datos del propio formulario. En su lugar, encamina la inicialización por los dos helpers, según el modo:
validateOnLoad corre solo cuando aún no hay registro; validateOnLoadUpdate corre solo cuando ya lo hay. Los campos foráneos y de selector reciben únicamente el id como valor inicial, nunca un objeto armado a mano.Validar y transformar al guardar
Validar y transformar al guardar
Compartir lógica entre reglas
Compartir lógica entre reglas
Cada regla se evalúa por separado, así que un helper declarado dentro del cuerpo de una regla desaparece cuando ese cuerpo termina. En su lugar, asígnalo a un registro desde una regla OnLoad:Elige por alcance:
field cuando el helper fija las claves de este formulario, page cuando un formulario de detalle o embebido también deba invocarlo. Como OnLoad no siempre corre antes que las demás reglas, protege el punto de llamada: if (typeof field.composeCompleteName === 'function').Sincronizar un campo compuesto con sus partes
Sincronizar un campo compuesto con sus partes
Un campo como
complete_name y sus partes (first_name, last_name) que deben actualizarse mutuamente van a pelear entre sí a menos que rompas el ciclo de forma estructural.Ambas direcciones escriben con
setValue({ value, onchange: false }), que no vuelve a disparar el OnChange del destino, así que ninguna dirección puede activar la otra.Separa en OnBlur, no en OnChange: separar mientras el usuario escribe pondría J, Ju, Jua en la primera parte. Agrega una comparación de igualdad en ambos lados para que entrar y salir del campo sin editar no haga nada.Errores frecuentes
El asistente de IA para reglas
No tienes que construir las reglas a mano. El asistente de IA genera una regla a partir de una descripción en lenguaje natural del comportamiento que quieres: descríbelo como se lo explicarías a un colega, por ejemplo “cuando cambie X, oculta la sección Y”, y el asistente produce la regla para que la revises y la adjuntes.Buenas prácticas
- Empieza por las reglas de visibilidad y de obligatoriedad condicional: son las que más valor aportan en el día a día y las más fáciles de razonar.
- Usa la validación OnSubmit para todo lo que nunca deba guardarse mal; las verificaciones a nivel de campo ayudan al usuario temprano, pero la validación al guardar es la última barrera.
- Prefiere OnBlur para el trabajo costoso y para todo lo que reescriba lo que el usuario ingresó.
- Mantén cada regla enfocada en un solo comportamiento. Dos reglas pequeñas en eventos distintos son más fáciles de depurar que una que lo hace todo.
- Escribe una descripción útil en cada regla: es lo que aparece cuando algo sale mal.
- Prueba las reglas con Vista previa en el Diseñador de páginas antes de guardar, recorriendo los escenarios que la regla debe cubrir.
Páginas relacionadas
Referencia de reglas de campo
Cada método, propiedad y helper disponible dentro de una regla.
Diseñador de páginas
Donde se escriben y se adjuntan las reglas, bajo el menú Código.
Formularios y plantillas de formulario
Las reglas pertenecen a una plantilla: así se gestionan las plantillas.
Campos y tipos de campo
Lo que un formulario puede mostrar, antes de que las reglas definan cómo se comporta.

