# Поля

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

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

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

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

---

Поля определяют схему таблицы Base. У каждого поля есть тип, конфигурация, значение по умолчанию и такие возможности, как сортировка, фильтрация, группировка и отображение на карточках.

## Типы полей

| Назначение                      | `BaseFieldType`                                                             |
| ------------------------------- | --------------------------------------------------------------------------- |
| Текст и контакты                | `Text`, `Link`, `Phone`, `Email`                                            |
| Числа и прогресс                | `Number`, `Currency`, `Progress`, `Rating`                                  |
| Выбор и участники               | `Checkbox`, `SingleSelect`, `MultiSelect`, `Person`, `Group`                |
| Даты и вложения                 | `Date`, `Attachment`                                                        |
| Вычисления и связи              | `Formula`, `RecordLink`                                                     |
| Автоматические значения и аудит | `Numbering`, `RecordId`, `CreatedBy`, `UpdatedBy`, `CreatedAt`, `UpdatedAt` |

Для выбора используйте ID вариантов, для участников — ID из приложения. Нумерацией и аудитом управляет система. См. [формулы](https://docs.univer.ai/ru-RU/guides/bases/features/core/formulas.md) и [связи записей](https://docs.univer.ai/ru-RU/guides/bases/features/core/records.md).

## Добавление полей

```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' },
        ],
      },
    },
  },
)
```

## Обновление полей

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

## Изменение типа поля

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

При изменении типа поля существующие значения могут быть приведены к новому формату. Прежде чем изменять схему рабочих таблиц, проверьте данные в приложении.

## Вложения

Вложению нужны стабильный ID, имя и доступный источник. В примере файл уже загружен приложением.

```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()` заменяет весь список. `getAttachments()` читает его, а `deleteAttachments()` удаляет выбранные элементы. Укажите доступный URL и настройте загрузку при существующей регистрации Bases UI:

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

Сигнатура `uploadAttachment`: `(file: File) => Promise<IBaseAttachment>`; функция возвращает показанные выше данные. `maxSize` задаётся в байтах. Без загрузчика плагин сначала пробует ввод-вывод изображений, затем Base64, увеличивая снимок. В рабочей среде подключите хранилище и проверяйте тип, размер и права скачивания на сервере.

## Пользователи и группы

Задайте варианты через `personOptions` и `groupOptions` Bases UI. У каждого элемента есть `id`, `name` и необязательный `avatar`. Это параметры отображения; вход и права доступа остаются ответственностью приложения.
