Esta documentación ha sido traducida automáticamente por IA.
En escenarios de cadena de suministro o comercio, a menudo es necesario generar rápidamente un "Contrato de Suministro y Compra" estandarizado y rellenar su contenido dinámicamente con información de fuentes de datos como compradores, vendedores y detalles de productos. A continuación, utilizaremos un caso de uso simplificado de "Contrato" como ejemplo para mostrarle cómo configurar y usar la función «Impresión de plantillas» para mapear la información de los datos a los marcadores de posición en las plantillas de contrato, generando así automáticamente el documento de contrato final.
En nuestro ejemplo, existen aproximadamente las siguientes colecciones principales (omitiendo otros campos irrelevantes):

Dado que el sistema actual solo admite la impresión de registros individuales, haremos clic en "Imprimir" en la página de "Detalles del Contrato". El sistema recuperará automáticamente el registro de contracts correspondiente, así como la información asociada de parties y otros datos, y los rellenará en documentos de Word o PDF.
Tenga en cuenta que nuestro plugin de «Impresión de plantillas» es un plugin comercial que debe comprarse y activarse antes de poder realizar operaciones de impresión.

Confirmar la activación del plugin:
En cualquier página, cree un bloque de detalles (por ejemplo, users) y verifique si existe una opción de configuración de plantilla correspondiente en la configuración de acciones:


Cree las colecciones principales (entidad, contrato e ítems de producto) diseñadas anteriormente (seleccione solo los campos principales).
Contracts)| Categoría de Campo | Nombre de Visualización del Campo | Nombre del Campo | Interfaz del Campo |
|---|---|---|---|
| Campos PK y FK | |||
| ID | id | Entero | |
| ID Comprador | buyer_id | Entero | |
| ID Vendedor | seller_id | Entero | |
| Campos de Asociación | |||
| Ítems del Contrato | contract_items | Uno a muchos | |
| Comprador (Parte A) | buyer | Muchos a uno | |
| Vendedor (Parte B) | seller | Muchos a uno | |
| Campos Generales | |||
| Número de Contrato | contract_no | Texto de una línea | |
| Fecha de Inicio de Entrega | start_date | Fecha y hora (con zona horaria) | |
| Fecha de Fin de Entrega | end_date | Fecha y hora (con zona horaria) | |
| Porcentaje de Depósito (%) | deposit_ratio | Porcentaje | |
| Días de Pago Después de la Entrega | payment_days_after | Entero | |
| Nombre de Cuenta Bancaria (Beneficiario) | bank_account_name | Texto de una línea | |
| Nombre del Banco | bank_name | Texto de una línea | |
| Número de Cuenta Bancaria (Beneficiario) | bank_account_number | Texto de una línea | |
| Monto Total | total_amount | Número | |
| Códigos de Moneda | currency_codes | Selección única | |
| Porcentaje de Saldo (%) | balance_ratio | Porcentaje | |
| Días de Saldo Después de la Entrega | balance_days_after | Entero | |
| Lugar de Entrega | delivery_place | Texto largo | |
| Nombre del Firmante Parte A | party_a_signatory_name | Texto de una línea | |
| Cargo del Firmante Parte A | party_a_signatory_title | Texto de una línea | |
| Nombre del Firmante Parte B | party_b_signatory_name | Texto de una línea | |
| Cargo del Firmante Parte B | party_b_signatory_title | Texto de una línea | |
| Campos del Sistema | |||
| Creado el | createdAt | Creado el | |
| Creado por | createdBy | Creado por | |
| Última Actualización el | updatedAt | Última actualización el | |
| Última Actualización por | updatedBy | Última actualización por |
Parties)| Categoría de Campo | Nombre de Visualización del Campo | Nombre del Campo | Interfaz del Campo |
|---|---|---|---|
| Campos PK y FK | |||
| ID | id | Entero | |
| Campos Generales | |||
| Nombre de la Parte | party_name | Texto de una línea | |
| Dirección | address | Texto de una línea | |
| Persona de Contacto | contact_person | Texto de una línea | |
| Teléfono de Contacto | contact_phone | Teléfono | |
| Puesto | position | Texto de una línea | |
| Correo Electrónico | Correo electrónico | ||
| Sitio Web | website | URL | |
| Campos del Sistema | |||
| Creado el | createdAt | Creado el | |
| Creado por | createdBy | Creado por | |
| Última Actualización el | updatedAt | Última actualización el | |
| Última Actualización por | updatedBy | Última actualización por |
Contract Line Items)| Categoría de Campo | Nombre de Visualización del Campo | Nombre del Campo | Interfaz del Campo |
|---|---|---|---|
| Campos PK y FK | |||
| ID | id | Entero | |
| ID Contrato | contract_id | Entero | |
| Campos de Asociación | |||
| Contrato | contract | Muchos a uno | |
| Campos Generales | |||
| Nombre del Producto | product_name | Texto de una línea | |
| Especificación / Modelo | spec | Texto de una línea | |
| Cantidad | quantity | Entero | |
| Precio Unitario | unit_price | Número | |
| Monto Total | total_amount | Número | |
| Fecha de Entrega | delivery_date | Fecha y hora (con zona horaria) | |
| Observación | remark | Texto largo | |
| Campos del Sistema | |||
| Creado el | createdAt | Creado el | |
| Creado por | createdBy | Creado por | |
| Última Actualización el | updatedAt | Última actualización el | |
| Última Actualización por | updatedBy | Última actualización por |
Introducir datos de ejemplo:


Configure las reglas de vinculación de la siguiente manera para calcular automáticamente el precio total y los pagos pendientes:

Cree un bloque de vista, confirme los datos y habilite la acción de «Impresión de plantillas»:


Agregue una configuración de plantilla, como «Contrato de Suministro y Compra»:


A continuación, vaya a la pestaña de Lista de Campos, donde podrá ver todos los campos del objeto actual. Después de hacer clic en "Copiar", podrá empezar a rellenar la plantilla.

Archivo de Plantilla de Contrato de Word
Prepare de antemano la plantilla de contrato (archivo .docx), por ejemplo: SUPPLY AND PURCHASE CONTRACT.docx
En este ejemplo, le proporcionamos una versión simplificada del «Contrato de Suministro y Compra», que contiene marcadores de posición de ejemplo:
{d.contract_no}: Número de contrato{d.buyer.party_name}、{d.seller.party_name}: Nombres del comprador y del vendedor{d.total_amount}: Monto total del contratoA continuación, puede copiar y pegar los campos de su colección en Word.
Relleno de campos básicos:
Por ejemplo, el número de contrato en la parte superior, o el objeto de la entidad firmante del contrato. Simplemente haga clic en copiar y péguelo directamente en el espacio en blanco correspondiente del contrato.


En las plantillas, a menudo necesitamos dar formato a los campos, especialmente a los campos de fecha. El formato de fecha copiado directamente suele ser largo (por ejemplo, Wed Jan 01 2025 00:00:00 GMT), y es necesario formatearlo para mostrar el estilo que deseamos.
Para los campos de fecha, puede utilizar la función formatD() para especificar el formato de salida:
Ejemplo:
Por ejemplo, si el campo original que copiamos es {d.created_at}, y necesitamos formatear la fecha al estilo 2025-01-01, entonces modifique este campo para que sea:
Estilos comunes de formato de fecha:
YYYY - Año (cuatro dígitos)MM - Mes (dos dígitos)DD - Día (dos dígitos)HH - Hora (formato de 24 horas)mm - Minutosss - SegundosEjemplo 2:
Supongamos que hay un campo de monto, como {d.total_amount} en el contrato. Podemos usar la función formatN() para formatear números, especificando los decimales y el separador de miles.
Sintaxis:
2 significa dos decimales.true o false.Ejemplo 1: Formatear un monto con separador de miles y dos decimales
Esto formateará d.amount a dos decimales y agregará un separador de miles.
Ejemplo 2: Formatear un monto a un número entero sin decimales
Esto formateará d.amount a un número entero y agregará un separador de miles.
Ejemplo 3: Formatear un monto con dos decimales pero sin separador de miles
Aquí se deshabilita el separador de miles y solo se mantienen dos decimales.
Otras necesidades de formato de monto:
Para los campos de cadena de texto, puede usar :upperCase para especificar el formato del texto, como la conversión a mayúsculas o minúsculas.
Sintaxis:
Métodos de conversión comunes:
upperCase - Convertir a todo mayúsculaslowerCase - Convertir a todo minúsculasupperCase:ucFirst - Poner la primera letra en mayúsculaEjemplo:
Cuando necesitamos imprimir una tabla que contiene múltiples sub-ítems (por ejemplo, detalles de productos), normalmente necesitamos utilizar la impresión en bucle. De esta manera, el sistema generará una fila de contenido para cada ítem de la lista hasta que se hayan recorrido todos los ítems.
Supongamos que tenemos una lista de productos (por ejemplo, contract_items), que contiene múltiples objetos de producto. Cada objeto de producto tiene varios atributos, como nombre del producto, especificación, cantidad, precio unitario, monto total y observaciones.
Paso 1: Rellenar los campos en la primera fila de la tabla
Primero, en la primera fila de la tabla (no en el encabezado), copie y rellene directamente las variables de la plantilla. Estas variables serán reemplazadas por los datos correspondientes y se mostrarán en la salida.
Por ejemplo, la primera fila de la tabla es la siguiente:
| Nombre del Producto | Especificación / Modelo | Cantidad | Precio Unitario | Monto Total | Observación |
|---|---|---|---|---|---|
| {d.contract_items[i].product_name} | {d.contract_items[i].spec} | {d.contract_items[i].quantity} | {d.contract_items[i].unit_price} | {d.contract_items[i].total_amount} | {d.contract_items[i].remark} |
Aquí, d.contract_items[i] representa el i-ésimo ítem en la lista de productos, e i es un índice que representa el orden del producto actual.
Paso 2: Modificar el índice en la segunda fila
A continuación, en la segunda fila de la tabla, modificaremos el índice del campo a i+1 y rellenaremos solo el primer atributo. Esto se debe a que, durante la impresión en bucle, necesitamos recuperar el siguiente ítem de datos de la lista y mostrarlo en la siguiente fila.
Por ejemplo, la segunda fila se rellena de la siguiente manera:
| Nombre del Producto | Especificación / Modelo | Cantidad | Precio Unitario | Monto Total | Observación |
|---|---|---|---|---|---|
| {d.contract_items[i+1].product_name} |
En este ejemplo, cambiamos [i] a [i+1], lo que nos permite obtener los datos del siguiente producto en la lista.
Paso 3: Impresión en bucle automática durante la renderización de la plantilla
Cuando el sistema procesa esta plantilla, operará según la siguiente lógica:
d.contract_items, rellenando cada fila en bucle según el formato de la tabla hasta que se hayan impreso todos los detalles del producto.El valor de i en cada fila se incrementará, asegurando que cada fila muestre información diferente del producto.


En este punto, salga de la ventana emergente actual y haga clic en "Descargar plantilla" para obtener la plantilla completa generada.
Consejos:
.doc u otros, es posible que deba convertirla a .docx, dependiendo de la compatibilidad del plugin.¡Le deseamos un uso exitoso! Con la función «Impresión de plantillas», podrá ahorrar enormemente el trabajo repetitivo en la gestión de contratos, evitar errores de copiar y pegar manuales, y lograr una salida de contratos estandarizada y automatizada.