Конструктор формул
Формула отвечает на вопрос «сколько материала заказать». Она берёт данные заказа — площадь деталей, количество по спецификации, фасады — умножает на норму расхода и выдаёт количество. Собирается формула мышкой, писать код не нужно.
Где найти
Путь в меню: Снабжение → Формулы расчёта. Нужно право «Конструкторы шаблонов и формул» (21604).

Формула начинает работать только после того, как её выберут в колонке шаблона заявки (источник «Формула»).
Главное правило
Формула считает каждый заказ отдельно. Затем количества складываются по ключу объединения шаблона, и только потом применяются округление, кратность и минимум — один раз на строку заявки.
2,2 + 2,1 = 4,3 → при кратности 1 кг это 5 кг, а не 3 + 3 = 6 кг.
Если округлить нужно именно промежуточный результат внутри расчёта — для этого есть отдельный узел «Округление» в дереве.
Библиотека формул
В списке у каждой формулы видно:
- название и номер текущей версии (v3);
- отметку «отключена», если формула выключена;
- отметку «ссылок: N», если формула ссылается на другие формулы;
- описание;
- саму формулу человеческим текстом — чтобы не открывать редактор ради проверки нормы расхода;
- строку «Итог:» — как округляется результат.
Галка «Показывать отключённые формулы» добавляет в список выключенные.
Как создать формулу
- Нажмите «+ Новая формула».
- В блоке «Основное» заполните «Название» (например, «Эмаль») и «Описание» — зачем формула нужна, чтобы через полгода не гадать.
- Соберите расчёт (см. ниже).
- Задайте настройки версии: округление, шаг кратности, минимум, единицу.
- Проверьте формулу на тестовых данных.
- Нажмите «Создать формулу».
Собрать по образцу
Самый быстрый путь — кнопка «Собрать по образцу». Готовые заготовки:
| Образец | Для чего |
|---|---|
| Площадь × норма × стороны | Расход эмали: площадь деталей участка, норма на м², число окрашиваемых сторон |
| Процент от другой формулы | Отвердитель 25 % от эмали, разбавитель 12 % |
| Количество спецификации × норма | Материал, который расходуется пропорционально количеству позиции |
| Листы: площадь ÷ площадь листа | Целые листы ЛДСП: делим площадь на площадь листа и округляем вверх |
| Фасады: количество × норма | Расход на фасады — м² или штуки, смотря как заведён фасад |
| С нуля | Пустое число, дальше собираете дерево сами |
После выбора образца остаётся подставить свои числа. Если расчёт уже собран, система переспросит: образец заменяет дерево целиком.
Как собрать расчёт вручную
Расчёт — это дерево блоков. Наверху страницы всегда видна строка «Итоговая формула» — та же формула словами.
У каждого блока четыре действия:
- Тип — заменить блок другим (вложенные значения сохраняются, где это осмысленно);
- Обернуть — текущее значение станет частью новой операции (× 2, 25 % от…, округлить);
- Убрать — снять обёртку, оставив вложенное значение;
- Удалить — убрать значение; у арифметики операция схлопывается в соседний операнд. У самого верхнего блока кнопка называется «Очистить».
Типы блоков:
| Группа | Блок | Что делает |
|---|---|---|
| Значения | Переменная | Данные заказа: площадь деталей, количество спецификации, фасады — с фильтром |
| Значения | Число | Фиксированное число: 2 стороны, 0,12 кг/м² |
| Значения | Именованная константа | Число с именем, например «Норма расхода» — его видно отдельным полем при проверке формулы |
| Значения | Другая формула | Результат другой формулы библиотеки: отвердитель считает от эмали |
| Значения | Текст | Строка для сравнений вида «единица = шт» |
| Операции | Арифметика | Сложение, вычитание, умножение, деление |
| Операции | Процент от | «25 % от …» — самый частый вид сопутствующих материалов |
| Правила | Округление | Промежуточное округление внутри расчёта |
| Правила | Минимум | Не меньше указанного числа |
| Правила | Кратность | Вверх до кратного шагу: мешок 25 кг, бухта, канистра |
| Правила | Перевод единиц | мм → м, г → кг. Разные величины (кг → м) не переводятся |
| Логика | Сравнение | Сравнение двух значений: результат 1 (да) или 0 (нет) |
| Логика | Условие | Если условие выполнено — одно значение, иначе другое |
Переменные: откуда берутся данные
Нажмите на блок «Переменная» — откроется окно выбора.
«Откуда берём данные» — три области:
- Спецификация — сама позиция спецификации: количество, чистое количество, единица, артикул, наименование, категория.
- Детали — агрегаты по деталям заказа: площадь (м²), количество деталей, строк деталировки, суммарная длина и ширина, периметр, длина кромки, количество окромлённых сторон, количество сторон, минимальная, максимальная и средняя толщина.
- Фасады — фасады заказа: площадь (м²), число фасадов, строк фасадов, цвет, система цвета, материал.
Единица измерения поля подписана прямо в списке — так видно, что площадь приходит в м², а толщина в мм.
«Фильтр выборки» сужает данные:
- Материал — берём только детали или фасады с таким материалом; галка «Точное совпадение названия» требует полного совпадения, иначе достаточно вхождения части названия.
- Для деталей: Участок, Направление, Толщина от / до (границы включительно).
- Для фасадов: Система цвета (Имя / Текст / RAL) и Цвет.
Пустой фильтр означает «берём всё, что есть в заказе».
Ссылки на другие формулы и запрет циклов
Блок «Другая формула» подставляет результат формулы из библиотеки — так отвердитель считается от эмали. Саму себя формула выбрать не может.
Если получится кольцо («Эмаль → Отвердитель → Эмаль»), система откажется сохранять и покажет цепочку: «Циклическая зависимость формул: …». Проверка идёт и до отправки, и на сервере.
Настройки версии
| Поле | Что задаёт |
|---|---|
| Округление итога | Без округления, Вверх, Вниз, Математическое, Кратно шагу |
| Шаг кратности | Мешок 25 кг, лист, упаковка, канистра, бухта |
| Минимальное количество | Меньше этого поставщик не отгружает |
| Единица измерения | В чём считается результат |
Под полями строка «Итог строки заявки: …» показывает словами, что получится.
Эти правила срабатывают один раз — к сумме по всем заказам.
Проверить формулу
Блок «Проверка формулы» прогоняет расчёт на тестовых данных.
- По умолчанию источников два («Заказ 12345» и «Заказ 21345») — так сразу видно и сумму, и итог. Кнопка «+ ещё источник» добавляет третий.
- Заполните данные источников: позицию спецификации, детали (длина, ширина, толщина, количество, материал, участок, направление), фасады (материал, система цвета, цвет, единица, количество). Показываются только те блоки, которые формула действительно использует.
- Если в формуле есть именованные константы, их значения можно подставить в блоке «Именованные константы».
- Если формула ссылается на другие формулы, в блоке «Значения других формул» можно подставить готовое число. Пустое поле означает, что формула будет посчитана по-настоящему, на тех же тестовых данных.
- Нажмите «Проверить формулу».
В результате по каждому источнику показаны шаги расчёта и точное значение, ниже — «Сумма по источникам (до округления)», применённое правило и «Итого в заявку».
Данные здесь синтетические: панель проверяет саму формулу, а не конкретный заказ.
Версии: почему старые заявки не «плывут»
Правка расчёта создаёт новую версию формулы — поэтому кнопка называется «Сохранить как новую версию». Старые версии никуда не деваются.
Строка сформированной заявки помнит, по какой версии её посчитали, и остаётся с ней навсегда. Меняйте норму расхода спокойно: уже отправленные поставщику заявки не изменятся.
Кнопка «Показать версии» внизу редактора выводит все версии: номер, дату, автора, текст формулы и правило округления. Текущая версия помечена.
Версия создаётся только при изменении самого расчёта или настроек округления. Правка названия и описания новую версию не плодит.
Отключение и удаление
Кнопка «Отключить» выключает формулу: она перестаёт предлагаться в шаблонах, но продолжает считать уже сформированные заявки. Если на формулу не ссылаются ни заявки, ни другие формулы, она удаляется полностью; иначе система просто выключит её — это защита от «потерянных» ссылок.
Частые ошибки
- «Соберите расчёт — дерево пустое». Начните с образца или добавьте хотя бы одно значение.
- «У переменной не выбрано поле» / «У ссылки не выбрана формула» / «У именованной константы нет имени». Незаполненные блоки дерева.
- «Для округления "кратно шагу" задайте шаг больше нуля», «У кратности шаг должен быть больше нуля», «У перевода единиц не заданы единицы» — незаполненные настройки правил.
- «Циклическая зависимость формул». Разорвите кольцо ссылок.
- Предупреждение о единицах в расчёте строки. Единица формулы и единица колонки шаблона несовместимы (например, кг и м). Заявка всё равно сформируется, но значение останется непересчитанным — приведите единицы в соответствие.
- Формула есть, а количество не считается. Формула не выбрана ни в одной колонке шаблона поставщика либо колонка-формула стоит не первой.