# Campos

- Human documentation: [https://docs.univer.ai/es-ES/guides/bases/features/core/fields](https://docs.univer.ai/es-ES/guides/bases/features/core/fields)

- Agent Markdown: [https://docs.univer.ai/es-ES/guides/bases/features/core/fields.md](https://docs.univer.ai/es-ES/guides/bases/features/core/fields.md)

- Requested language: `es-ES`

- Content language: `es-ES`

- Documentation version: `1.2.0`

- Source: [bases/features/core/fields.es-ES.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/bases/features/core/fields.es-ES.mdx)

---

Los campos definen el esquema de una tabla base. Cada campo tiene un tipo, configuración, valor predeterminado y capacidades como ordenar, filtrar, agrupar o mostrar tarjetas.

## Tipos de campo

| Uso                           | `BaseFieldType`                                                             |
| ----------------------------- | --------------------------------------------------------------------------- |
| Texto y datos de contacto     | `Text`, `Link`, `Phone`, `Email`                                            |
| Números y progreso            | `Number`, `Currency`, `Progress`, `Rating`                                  |
| Opciones y miembros           | `Checkbox`, `SingleSelect`, `MultiSelect`, `Person`, `Group`                |
| Fechas y adjuntos             | `Date`, `Attachment`                                                        |
| Cálculos y relaciones         | `Formula`, `RecordLink`                                                     |
| Valores generados y auditoría | `Numbering`, `RecordId`, `CreatedBy`, `UpdatedBy`, `CreatedAt`, `UpdatedAt` |

Use los ID de opción para las selecciones y los ID de su aplicación para los miembros. El sistema administra la numeración y los campos de auditoría. Consulte las [fórmulas](https://docs.univer.ai/es-ES/guides/bases/features/core/formulas.md) y las [relaciones](https://docs.univer.ai/es-ES/guides/bases/features/core/records.md).

## Agregar campos

```ts
const table = base.getTableById('tasks')
if (!table) throw new Error('Tasks table not found')

const title = table.addField('Title', univerAPI.Enum.BaseFieldType.Text)

const priority = table.addField(
  'Priority',
  univerAPI.Enum.BaseFieldType.SingleSelect,
  {
    field: {
      config: {
        options: [
          { id: 'high', name: 'High', color: '#ef4444' },
          { id: 'low', name: 'Low', color: '#22c55e' },
        ],
      },
    },
  },
)
```

## Actualizar campos

```ts
priority.setName('Impact')
priority.update({ description: 'Business priority' })
priority.setConfig({
  options: [
    { id: 'p0', name: 'P0', color: '#dc2626' },
    { id: 'p1', name: 'P1', color: '#f97316' },
  ],
})
```

## Cambiar tipo de campo

```ts
priority.changeType(univerAPI.Enum.BaseFieldType.Text, {})
```

Cambiar un tipo de campo puede normalizar los valores existentes. Valide los datos en su aplicación antes de aplicar cambios de esquema a las tablas de producción.

## Archivos adjuntos

Los adjuntos necesitan un ID estable, un nombre y una fuente accesible. Este ejemplo supone que la aplicación ya ha subido el archivo.

```ts
const attachments = table.addField('Files', univerAPI.Enum.BaseFieldType.Attachment)
const record = table.getRecords()[0]
if (!record) throw new Error('Create a record first')

record.setAttachments(attachments.getId(), [{
  id: 'brief-1',
  name: 'brief.pdf',
  mimeType: 'application/pdf',
  source: 'https://example.com/files/brief.pdf',
}])
```

`setAttachments()` reemplaza toda la lista. Use `getAttachments()` para leerla y `deleteAttachments()` para eliminar elementos concretos. Sustituya la URL por una dirección accesible y configure la subida en el registro existente de Bases UI:

```ts
univer.registerPlugin(UniverBasesUIPlugin, {
  attachment: {
    accept: ['image/*', '.pdf'],
    maxSize: 10 * 1024 * 1024,
    upload: uploadAttachment,
  },
})
```

La firma de `uploadAttachment` es `(file: File) => Promise<IBaseAttachment>` y devuelve los datos mostrados arriba. `maxSize` se expresa en bytes. Sin un gestor propio, el plugin intenta E/S de imágenes y después Base64, lo que aumenta la instantánea. En producción, conecte un almacenamiento y valide tipo, tamaño y permisos de descarga en el servidor.

## Personas y grupos

Proporcione candidatos mediante `personOptions` y `groupOptions` de Bases UI. Cada elemento tiene `id`, `name` y un `avatar` opcional. Son opciones de presentación; la aplicación gestiona la autenticación y los permisos.
