snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,122 @@
---
title: Campos
description: Comprenda el papel de los campos y cómo gestionarlos.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Acerca de los Campos
Los campos son como columnas en una hoja de cálculo. Almacenan diferentes tipos de datos como texto, números o fechas. Los campos pueden ser estándar (integrados) o personalizados (los que usted crea).
### Campos Estándar
Los campos estándar vienen integrados con Twenty para cubrir necesidades empresariales comunes.
Por ejemplo, `Nombre` y `Apellido` son campos estándar en el objeto `Personas`. Almacenan datos de texto para nombres individuales.
No puede eliminar campos estándar, pero puede desactivarlos si no los necesita.
También puede personalizar las opciones de los campos estándar de tipo `SELECT`, por ejemplo, las opciones para la `Etapa` en Oportunidades.
<img src="/images/user-guide/fields/standard-fields.png" style={{width:'100%'}} />
### Campos Personalizados
Se pueden añadir campos personalizados a cualquier objeto. Puede almacenar texto, números, fechas, selecciones desplegables y más. Utilice campos personalizados para rastrear información específica de su negocio.
Por ejemplo, un campo personalizado para SpaceX podría ser `Estado Activo del Cohete`, indicando si un cohete está operativo.
<img src="/images/user-guide/fields/custom-fields.png" style={{width:'100%'}} />
## Tipos de campo
Twenty admite varios tipos de campo:
| Tipo | Descripción | Ejemplo |
| ------------------ | --------------------------------------------------------------------- | ------------------------------- |
| Dirección | Dirección estructurada con calle, ciudad, estado, país, código postal | Dirección de la oficina |
| Array | Lista de valores de texto | Etiquetas |
| Booleano | Casilla de verificación verdadero/falso | Activo |
| Moneda | Valor monetario con código de moneda | Importe del acuerdo (USD) |
| Fecha | Valores de fecha | Fecha de cierre |
| Fecha y hora | Fecha con hora | Hora de la reunión |
| Dominio | Dominio del sitio web (usado para Empresas) | acme.com |
| Correo electrónico | Direcciones de correo electrónico (con principal + adicionales) | Correo electrónico del contacto |
| JSON | Datos JSON estructurados | Metadatos personalizados |
| Enlaces | URLs con etiquetas (principal + secundaria) | Sitio web, LinkedIn |
| Texto largo | Texto multilínea | Descripción, notas |
| Selección múltiple | Varias opciones de una lista predefinida | Etiquetas, categorías |
| Número | Valores numéricos (enteros o decimales) | Cantidad, puntuación |
| Teléfono | Números de teléfono con código de país | Teléfono del trabajo |
| Valoración | Valoración por estrellas (1-5) | Prioridad, puntuación |
| Relación | Enlaces a registros en otros objetos | Empresa → Personas |
| Selección | Una sola opción de una lista predefinida | Etapa, estado |
| Texto | Una sola línea de texto | Nombre, título |
## Crear un Campo Personalizado
Para agregar un campo personalizado a cualquier objeto, siga estos pasos:
1. Vaya a `Configuración` en la barra lateral izquierda.
2. Vaya a `Modelo de Datos`, luego seleccione el objeto que desea personalizar.
3. Proceda haciendo clic en `+ Nuevo Campo`.
4. Elija un nombre de campo y tipo que se adapten a sus requisitos. Considere agregar una descripción de campo para una mejor comprensión.
Su nuevo campo creado ahora está disponible dentro de los campos de la aplicación. Para mostrarlo en una vista específica, haga clic en el menú de opciones, luego seleccione `Campos`.
<VimeoEmbed videoId="927628219" title="Demostración en video" />
**Forma rápida:** Haga clic en el botón **+** en la esquina superior derecha de cualquier tabla de objetos, luego seleccione `Personalizar campos`. Esto lo lleva directamente a la configuración del Modelo de Datos.
<img src="/images/user-guide/fields/quick-new-field.png" style={{width:'100%'}} />
## Desactivar un campo
Puede desactivar un campo para ocultarlo de la aplicación sin perder sus datos. Piense en ello como ocultar el campo en lugar de eliminarlo.
Así es como puede hacerlo:
1. Encuentre el campo que desea desactivar en la configuración de su objeto.
2. Haga clic en los tres puntos `⋮` junto al campo para abrir el menú.
3. Seleccione `Desactivar` en el menú desplegable.
<img src="/images/user-guide/fields/deactivate-field.png" style={{width:'100%'}} />
¿Qué ocurre cuando desactiva un campo?
1. **En la aplicación:** El campo desaparece y no puede añadir nuevos valores.
2. **Relaciones existentes:** Si es un campo de relación, las conexiones existentes permanecen, pero no puede crear nuevas.
3. **Acceso API:** Aún puede acceder al campo y sus datos a través de la API.
Puede reactivar los Campos Estándar y Personalizados o tener la opción de eliminarlos permanentemente.
## Hacer Campos Únicos
Haga un campo único para asegurar que registros distintos no puedan tener el mismo valor. Por ejemplo, las direcciones de correo electrónico son únicas para cada persona.
Si recibe un error al establecer la unicidad, verifique los valores duplicados en sus datos (incluso registros eliminados).
## Índices (avanzado)
Los índices de base de datos se gestionan automáticamente; crear índices propios rara vez es necesario y es fácil equivocarse. Con el modo avanzado activado, cada objeto tiene una sección de **Índices** en `Settings → Data Model → <object>` para los casos en los que sabes que necesitas uno.
## Mejores Prácticas de Configuración de Campos
### Convenciones y Limitaciones de Nombres
* **Los nombres singulares y plurales deben ser distintos**: Nuestra API GraphQL necesita nombres distintos para mutaciones
* **Nombres de campos protegidos**: algunos nombres están reservados para uso del sistema (p. ej., `Type`, `Application`)
### Campos de Moneda y Teléfono
* **Moneda predeterminada:** se puede configurar a través del modelo de datos
* **Códigos de país predeterminados:** se pueden configurar para campos de teléfono a través del modelo de datos
### Campos de Selección
* **Se puede seleccionar una opción predeterminada** para cada campo de Selección
### Campos de Texto del Registro
* **Cada objeto tiene un campo principal de visualización**: Este campo aparece en la columna más a la izquierda y representa el registro cuando se vincula a otros objetos. Debe ser un campo de texto. Por ejemplo, las Personas utilizan `Nombre` como el campo principal, por lo que cuando vincula una persona a una empresa, verá su nombre en la vista de la empresa.

View File

@@ -0,0 +1,92 @@
---
title: Objetos
description: Conozca los objetos estándar y personalizados en Twenty.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Objetos estándar
Objetos estándar son entidades predefinidas en tu espacio de trabajo para ayudarte a comenzar. Forman parte de un modelo de datos compartido accesible para todos los usuarios de Twenty. Puedes usarlos tal cual, personalizarlos o desactivarlos.
<img src="/images/user-guide/objects/standard-objects.png" style={{width:'100%'}} />
### Personas
El objeto `Personas` almacena tus contactos. Incluye detalles de contacto y el historial de interacciones, para que puedas ver todas tus interacciones con clientes en un solo lugar.
### Empresas
El objeto `Empresas` almacena las cuentas de tu negocio. Incluye detalles como industria, tamaño y ubicación. Las empresas se conectan tanto a los objetos `Personas` como `Oportunidades`.
### Oportunidades
El objeto `Oportunidades` almacena datos relacionados con acuerdos. Hace un seguimiento de la progresión de las ventas potenciales, desde la prospección hasta el cierre, registrando etapas, importes del acuerdo, cuenta asociada y fecha de cierre prevista. Puedes ver tu canal de ventas en un diseño kanban.
### Notas
El objeto `Notes` almacena notas de formato libre que se pueden adjuntar a Personas, Empresas, Oportunidades y otros registros. Utilice las notas para capturar resúmenes de reuniones, detalles importantes o cualquier información contextual.
### Tareas
El objeto `Tasks` almacena tareas pendientes y elementos de acción. Las tareas se pueden vincular a Personas, Empresas, Oportunidades y otros registros. Realice un seguimiento de las fechas de vencimiento, los responsables y el estado de finalización para mantenerse al día con sus seguimientos.
## Objetos personalizados
Los objetos personalizados te permiten almacenar información que es única para tu organización y que los objetos estándar no pueden manejar. Por ejemplo, si eres SpaceX, puedes querer crear un objeto personalizado para Cohetes y Lanzamientos.
<img src="/images/user-guide/objects/custom-objects.png" style={{width:'100%'}} />
### Creando un nuevo objeto personalizado
Para crear un nuevo objeto personalizado:
1. Ve a Configuración en la barra lateral a la izquierda.
2. En Espacio de Trabajo, vaya al Modelo de Datos. Aquí podrá ver una visión general de todos sus objetos estándar y personalizados existentes (tanto activos como desactivados).
<VimeoEmbed videoId="926288174" title="Demostración en video" />
3. Haz clic en `+ Nuevo objeto` en la parte superior. Ingresa el nombre (tanto singular como plural), elige un ícono y añade una descripción para tu objeto personalizado y presiona Guardar (en la parte superior derecha). Usando Listado como un ejemplo de objeto personalizado, el singular sería "listado" y el plural sería "listados" junto con una descripción como "Listados que los anfitriones crearon para mostrar sus propiedades."
4. Su objeto personalizado ya se creó y aparecerá en su barra lateral. Puede empezar a añadir registros de inmediato.
## Gestión de objetos
### Desactivación de objetos
Si no necesita un objeto estándar o personalizado:
1. Vaya a Configuración → Modelo de datos
2. Encuentra el objeto que quieres desactivar y haz clic en él
3. Ir a la pestaña **Configuración** del objeto
4. Haz clic en el botón 'Desactivar'
5. El objeto se ocultará de su espacio de trabajo, pero los datos se conservarán
### Reactivación de objetos
Para recuperar un objeto desactivado:
1. Vaya a Configuración → Modelo de datos
2. Habilitar filtro 'Desactivado'
3. Busca objetos desactivados (tienen 'desactivados' junto a su nombre)
4. Haz clic en 'Deshacer' y luego en 'Activar' para reactivarlo
5. El objeto y todos sus datos se restaurarán
## Mejores prácticas
### Cuándo crear objetos personalizados
* **Entidades empresariales únicas**: Elementos específicos de su sector o proceso
* **Relaciones complejas**: Cuando necesita realizar un seguimiento de las conexiones entre varias entidades
* **Datos escalables**: Cuando puede haber muchas instancias de algo
### Cuándo usar campos en su lugar
* **Atributos simples**: Propiedades que describen objetos existentes
* **Categorías o etiquetas**: Formas de clasificar registros existentes
* **Valores únicos**: Información que no necesita su propio ciclo de vida
### Nomenclatura de objetos
* **Utilice nombres claros y descriptivos**: Haga evidente qué representa el objeto
* **Siga las convenciones**: Utilice el singular para el nombre del objeto y el plural para la colección
* **Tenga en cuenta a su equipo**: Elija nombres que todos comprendan

View File

@@ -0,0 +1,94 @@
---
title: Campos de Relación
description: Conecte registros entre distintos objetos mediante campos de relación.
---
## Tipos de relaciones
### Uno a muchos
Un registro en el Objeto A puede vincularse a muchos registros en el Objeto B.
**Ejemplo:** Una Empresa puede tener muchas Personas (empleados).
### Muchos a uno
Muchos registros en el Objeto A pueden vincularse a un registro en el Objeto B.
**Ejemplo:** Muchas Personas pueden pertenecer a una Empresa.
### Relaciones que pueden apuntar a varios tipos de objeto
Algunos objetos pueden vincularse a varios tipos de objeto en un lado de la relación.
**Ejemplo:** Una Nota puede adjuntarse simultáneamente a una Persona Y a una Empresa Y a una Oportunidad. La Nota está en el lado de "muchos", conectándose a varios lados de "uno".
<img src="/images/user-guide/fields/many-to-one-morph.png" style={{width:'100%'}} />
De manera similar, un Proyecto (en el lado de "uno") podría recibir vínculos de varias Personas, varias Empresas y varias Notas.
<img src="/images/user-guide/fields/one-to-many-morph.png" style={{width:'100%'}} />
<Warning>
**Limitación de importación/exportación**: Las relaciones que apuntan a varios tipos de objeto aún no son compatibles con la importación/exportación de CSV. Esto está en nuestra hoja de ruta.
</Warning>
### Muchos a muchos
Muchos registros en el Objeto A pueden vincularse a muchos registros en el Objeto B.
**Ejemplo:** Muchas Personas pueden vincularse a muchos Proyectos, y viceversa.
Las relaciones de muchos a muchos usan un patrón de **objeto de unión**: un objeto intermedio que conecta ambos lados. Con la función de relaciones de unión, Twenty muestra directamente los registros finales vinculados, ocultando el objeto intermedio de la UI.
<Warning>
**Característica Beta**: Las relaciones de unión deben estar habilitadas en **Ajustes → Comunidad → Características** antes de usar.
</Warning>
Consulta [Cómo crear relaciones de muchos a muchos](/l/es/user-guide/data-model/how-tos/create-many-to-many-relations) para obtener una guía completa paso a paso.
## Creación de un campo de relación
1. Vaya a **Configuración → Modelo de datos**
2. Seleccione el objeto en el que desea agregar la relación
3. Haga clic **+ Nuevo campo**
4. Seleccione **Relation** como tipo de campo
5. Elija el(los) objeto(s) de destino con los que relacionar
6. Configure los ajustes de la relación:
* **Nombre del campo en el objeto de origen**: El nombre del campo de relación en el objeto que está editando
* **Nombre del campo en el objeto de destino**: El nombre del campo de relación que aparecerá en el objeto de destino
* Tipo de relación (uno a muchos, muchos a uno)
7. Haga clic en **Guardar**
## Relaciones estándar
Twenty incluye relaciones predefinidas entre objetos estándar:
| Desde el objeto | Al objeto | Tipo de relación |
| --------------- | --------- | ---------------- |
| Personas | Empresas | Muchos a uno |
| Oportunidades | Empresas | Muchos a uno |
| Oportunidades | Personas | Muchos a uno |
## Mejores prácticas
### Planificación de relaciones
* **Mapee su modelo de datos**: Planifique las relaciones antes de crearlas
* **Considere la dirección**: Piense en a qué objeto "pertenece" la relación
* **Evite las dependencias circulares**: Mantenga su modelo de datos limpio
### Asignar nombres a las relaciones
* **Use nombres claros**: Deje claro qué representa la relación
* **Sea coherente**: Use patrones de nomenclatura similares en todas las relaciones
* **Considere ambos lados**: Asigne nombres adecuados a ambos lados de la relación
### Rendimiento
* **No cree relaciones en exceso**: Demasiadas relaciones pueden ralentizar su espacio de trabajo
## Limitaciones
* **Eliminar relaciones** elimina el vínculo pero no los registros relacionados
* **Las relaciones circulares** deben evitarse para mantener la integridad de los datos