Поля
Поля определяют схему таблицы 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 из приложения. Нумерацией и аудитом управляет система. См. формулы и связи записей.
Добавление полей
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' }, ], }, }, },)Обновление полей
priority.setName('Impact')priority.update({ description: 'Business priority' })priority.setConfig({ options: [ { id: 'p0', name: 'P0', color: '#dc2626' }, { id: 'p1', name: 'P1', color: '#f97316' }, ],})Изменение типа поля
priority.changeType(univerAPI.Enum.BaseFieldType.Text, {})При изменении типа поля существующие значения могут быть приведены к новому формату. Прежде чем изменять схему рабочих таблиц, проверьте данные в приложении.
Вложения
Вложению нужны стабильный ID, имя и доступный источник. В примере файл уже загружен приложением.
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:
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. Это параметры отображения; вход и права доступа остаются ответственностью приложения.
Насколько полезно это руководство?