Дополнение к справочнику типов полей для администратора платформы.
Табличная часть — это таблица строк внутри документа. Типичные примеры: список товаров в накладной, перечень услуг в заказе, список работ в смете.
Табличная часть создаётся не отдельным шагом — она появляется автоматически когда вы назначаете полю секцию.
Порядок действий:
positionsВсе поля с одинаковым именем секции объединяются в одну таблицу. Порядок колонок определяется порядком полей.
Пример: чтобы создать таблицу «Товары» с колонками «Наименование», «Количество», «Цена», «Сумма»:
| Поле | Тип | Секция |
|---|---|---|
| Наименование | Текст | positions |
| Количество | Число | positions |
| Цена | Число | positions |
| Сумма | Формула | positions |
В строках таблицы работают:
✅ Текст, Многострочный текст, Число
✅ Дата, Дата и время
✅ Выпадающий список (один и несколько вариантов)
✅ Радио кнопки
✅ Цветные статусы
✅ Выбор цвета
✅ Связь с сущностью
✅ Чекбокс (только тумблер да/нет)
✅ Формула (readonly — вычисляется автоматически по другим ячейкам строки)
✅ Сумма с НДС (как числовое поле ввода)
❌ Файл, Изображение — только в шапке
❌ Агрегат — только в шапке
❌ Автономер — только в шапке
❌ Пользователь — только в шапке
В форме документа таблица отображается ниже полей шапки. Пользователь добавляет строки кнопкой «Добавить строку», удаляет кнопкой корзины в каждой строке.
Поле типа «Формула» вычисляет числовое значение автоматически. Вы пишете выражение, система считает результат.
В шапке документа — формула обращается к другим полям шапки.
В строке таблицы — формула обращается к другим ячейкам той же строки.
Нельзя из шапки обратиться к строкам таблицы — для этого используется «Агрегат».
Нельзя из строки обратиться к шапке — только к полям той же строки.
В выражении используются системные имена полей (то что вы задавали при создании поля). Доступны стандартные математические операции.
Базовый синтаксис:
| Что нужно | Как написать |
|---|---|
| Сложение | price + tax |
| Вычитание | total - discount |
| Умножение | price * qty |
| Деление | amount / days |
| Скобки | (price + fee) * qty |
| Константа | price * 1.2 |
Примеры готовых выражений:
Сумма строки:
qty * price
Сумма с НДС 20%:
qty * price * 1.2
Сумма со скидкой:
qty * price * (1 - discount / 100)
Наценка в рублях:
cost * margin / 100
Вес всего (кг в тонны):
qty * weight / 1000
Формула поддерживает условную логику через тернарный оператор:
условие ? значение_если_да : значение_если_нет
Это позволяет менять расчёт в зависимости от значений других полей.
Синтаксис условий:
| Оператор | Смысл |
|---|---|
> |
больше |
< |
меньше |
>= |
больше или равно |
<= |
меньше или равно |
== |
равно |
!= |
не равно |
Простое условие — одна ветка:
Цена со скидкой 10% если количество больше 10, иначе обычная цена:
qty > 10 ? price * 0.9 : price
НДС только если флаг включён (1 = да, 0 = нет):
vat ? amount * 1.2 : amount
Минимальная сумма заказа 500₽:
amount < 500 ? 500 : amount
Несколько условий — цепочка (else if):
Условия можно объединять в цепочку — второй тернарник ставится в ветку «нет»:
условие1 ? значение1 : условие2 ? значение2 : значение3Скидка зависит от объёма — три градации:
qty >= 100 ? price * 0.8 : qty >= 50 ? price * 0.9 : price
Читать как:
— если qty ≥ 100 → скидка 20%
— иначе если qty ≥ 50 → скидка 10%
— иначе → без скидки
Коэффициент срочности по количеству дней:
days <= 1 ? base * 2 : days <= 3 ? base * 1.5 : base
Читать как:
— до 1 дня → двойная цена
— до 3 дней → полтора коэффициента
— остальное → обычная цена
Категория по сумме (закодирована числом):
amount >= 10000 ? 3 : amount >= 5000 ? 2 : 1
Условие со сложным выражением в ветке:
Сумма со скидкой только если скидка задана:
discount > 0 ? qty * price * (1 - discount / 100) : qty * price
Итог с учётом НДС и скидки одновременно:
vat ? qty * price * (1 - discount / 100) * 1.2 : qty * price * (1 - discount / 100)
Условие на основе суммы нескольких полей:
Бонус если сумма двух показателей превышает план:
(actual + bonus) > plan ? (actual + bonus - plan) * 0.1 : 0
discount > 0 при пустом поле discount считается как 0 > 0 — то есть «нет»Агрегат считает итог по числовой колонке таблицы. Располагается только в шапке документа.
При создании поля типа «Агрегат (сумма колонки)» укажите:
positions)amount)| Функция | Что считает |
|---|---|
| SUM | Сумму всех значений |
| COUNT | Количество строк |
| AVG | Среднее значение |
| MIN | Минимальное значение |
| MAX | Максимальное значение |
Да. Агрегат не знает откуда взялось число в ячейке — из ввода пользователя или из формулы. Когда строка сохраняется, вычисленное значение формулы записывается в строку как обычное число, и агрегат суммирует его наравне с остальными.
Это значит типичная схема полностью работает:
Колонка «Сумма» (формула): qty * price
Поле шапки «Итого» (агрегат): SUM колонки «Сумма»
Агрегат посчитает правильно.
Документ «Заказ» содержит таблицу товаров (positions) с колонками: название, количество, цена, сумма (формула).
В шапке документа создаётся поле «Итого»:
positionsamount (колонка «Сумма» в таблице)Итого автоматически обновляется при каждом изменении таблицы.
Показывает разбивку суммы на три строки: база без НДС → НДС → итого. Не редактируется — только отображение.
Источником может быть:
Поле из шапки — любое числовое поле или формула в шапке документа.
Колонка таблицы — в этом случае агрегируется SUM по всей колонке.
| Настройка | Что значит |
|---|---|
| Поле-источник | Системное имя числового поля шапки, например amount |
| Секция таблицы | Если источник — колонка таблицы, укажите имя секции |
| Ставка НДС | 0, 10 или 20 процентов |
| Тип расчёта | Сверху — НДС добавляется к сумме. В т.ч. — НДС уже внутри суммы |
Сверху (on_top): база 1000₽ → НДС 200₽ → итого 1200₽
В т.ч. (included): итого 1200₽ → в т.ч. НДС 200₽ → без НДС 1000₽
Только в шапке документа. Нельзя разместить в строке таблицы.
Поле принимает только текст определённого формата. Если пользователь ввёл что-то другое — поле подсвечивается красным с вашим сообщением.
Вы задаёте шаблон — описание допустимого формата. Система автоматически проверяет каждый ввод.
| Поле | Шаблон | Сообщение об ошибке |
|---|---|---|
| ИНН физлица (12 цифр) | ^\d{12}$ |
Введите 12 цифр |
| ИНН юрлица (10 цифр) | ^\d{10}$ |
Введите 10 цифр |
| ИНН (10 или 12 цифр) | ^\d{10}(\d{2})?$ |
Введите 10 или 12 цифр |
| ОГРН (13 цифр) | ^\d{13}$ |
Введите 13 цифр |
| КПП (9 цифр) | ^\d{9}$ |
Введите 9 цифр |
| СНИЛС | ^\d{3}-\d{3}-\d{3} \d{2}$ |
Формат: 000-000-000 00 |
| Почтовый индекс | ^\d{6}$ |
Введите 6 цифр |
| Год (4 цифры) | ^\d{4}$ |
Введите 4-значный год |
| Артикул (буквы и цифры) | ^[A-Za-z0-9-]+$ |
Только латиница, цифры и дефис |
| Символ | Смысл | Пример |
|---|---|---|
\d |
Любая цифра | \d\d — две любые цифры |
{N} |
Ровно N раз | \d{6} — ровно 6 цифр |
{N,M} |
От N до M раз | \d{10,12} — от 10 до 12 цифр |
^ |
Начало строки | Шаблон должен начинаться с ^ |
$ |
Конец строки | Шаблон должен заканчиваться на $ |
[A-Z] |
Буква A до Z | [A-Za-z] — любая латинская буква |
Совет: для большинства задач достаточно шаблонов из таблицы выше — копируйте и используйте.
Чтобы показать как всё работает вместе — полный пример настройки документа.
Шапка документа:
| Поле | Тип | Примечание |
|---|---|---|
| Номер | Автономер | Префикс ЗАК-, 5 знаков |
| Клиент | Связь с сущностью | Справочник «Клиенты» |
| Телефон клиента | Подстановка | Берёт телефон из карточки клиента |
| Дата | Дата | |
| Статус | Цветные статусы | Новый, В работе, Готов, Отменён |
| Ответственный | Пользователь | Редактируемый |
| Создал | Пользователь | Только автоподстановка |
| Итого (без НДС) | Агрегат | SUM колонки amount секции positions |
| Итого с НДС | Сумма с НДС | Источник: поле «Итого», ставка 20%, сверху |
| Примечание | Многострочный текст | 3 строки |
Таблица услуг (секция positions):
| Колонка | Тип | Примечание |
|---|---|---|
| Наименование | Текст | |
| Количество | Число | Минимум 1 |
| Единица | Выпадающий список | шт, кг, м, час |
| Цена | Число | С валютой |
| Скидка % | Число | От 0 до 100 |
| Сумма | Формула | qty * price * (1 - discount / 100) |
Платформа Уни · v0.9.9.8