Skip to content

Спецификации (BOM)

Спецификация (Bill of Materials) — состав изделия. Каждая строка BOM описывает: родительский объект содержит дочерний объект в определённом количестве. Развёртывая BOM сверху вниз, система получает полный перечень деталей и материалов для производства.

Как открыть

Боковое меню → ТехнологияСпецификации

Или: откройте технологический объект → вкладка «BOM»

Что на экране

Таблица BOM

СтолбецЧто показывает
ПозицияНомер строки в спецификации (position_number)
РодительЧто содержит (parent_object)
КомпонентЧто входит (child_object)
КоличествоСколько штук/метров/кг (quantity)
Единицашт, м², м.п., кг, л (unit)
АктивнаИспользуется ли строка

Как это работает

Спецификация — это направленный ациклический граф (DAG). Каждая строка — ребро графа «родитель содержит потомка».

Пример: Шкаф-купе

Шкаф-купе (изделие)
├── Поз. 1: Корпус (сборка) × 1 шт
│     ├── Поз. 1: Боковина левая (деталь) × 1 шт
│     ├── Поз. 2: Боковина правая (деталь) × 1 шт
│     ├── Поз. 3: Полка (деталь) × 3 шт
│     ├── Поз. 4: Задняя стенка (деталь) × 1 шт
│     └── Поз. 5: Дно (деталь) × 1 шт
├── Поз. 2: Дверь раздвижная (сборка) × 2 шт
│     ├── Поз. 1: Рама (деталь) × 1 шт
│     └── Поз. 2: Вставка зеркальная (деталь) × 1 шт
└── Поз. 3: Фурнитура (комплект) × 1 шт

При запуске заказа на 5 шкафов система рассчитает: 5 корпусов, 10 боковин левых, 10 правых, 15 полок, 10 дверей и т.д.

Поля строки BOM

ПолеОбязательноОписание
parent_objectДаЧто содержит (FK на TechnologicalObject)
child_objectДаЧто входит (FK на TechnologicalObject)
quantityДаКоличество (десятичное, до 6 знаков: 1.560000 м²)
unitДаЕдиница измерения: шт, м², м.п., кг, л
position_numberДаНомер позиции в спецификации
sort_orderНетПорядок отображения в UI (может отличаться от position_number)
notesНетЗаметки технолога

Уникальность строки

Комбинация (parent_object, child_object, position_number) уникальна. Один компонент может входить в родителя несколько раз, но с разными номерами позиций.

Условные строки BOM

Иногда состав зависит от выбора клиента. Поле applicability_conditions определяет условия:

json
{
  "onlyFor": {"modifier": "color", "value": "red"},
  "skipIf": {"modifier": "finish", "value": "raw"}
}
УсловиеЧто означает
onlyForСтрока включается только если модификатор имеет указанное значение
skipIfСтрока пропускается если модификатор имеет указанное значение

Пример

Изделие «Стол» имеет две строки BOM для столешниц:

  • Поз. 5: Столешница ЛДСП — onlyFor: {modifier: "top_material", value: "ldsp"}
  • Поз. 6: Столешница МДФ — onlyFor: {modifier: "top_material", value: "mdf"}

В заказ попадёт только одна из них, в зависимости от выбора клиента.

Наследование модификаторов

Поле modifier_application определяет, как модификаторы родителя передаются дочернему объекту:

РежимОписаниеКогда использовать
inheritМодификаторы родителя спускаются к потомкамПо умолчанию. Цвет шкафа = цвет всех деталей
overrideТолько собственные модификаторы дочернегоЗадняя стенка всегда белая, независимо от цвета шкафа
combineОбъединение родительских и собственныхДеталь наследует цвет шкафа + добавляет свой тип кромки

Наследование цвета

Если клиент заказал «Шкаф, цвет Вишня», при inherit все детали автоматически получат цвет Вишня. Задняя стенка с override останется белой, как задал технолог.

Формулы расчёта

Поле calculation_params позволяет задать формулы для автоматического расчёта количества:

json
{
  "formula": "parent.width * 0.8",
  "min": 0.5,
  "max": 10
}

Используется для материалов с расходом, зависящим от размеров родителя (кромка, клей, плёнка).

Привязка классификаторов к строке BOM

Через ResourcePropertySpecification технолог указывает, какой классификатор применяется к строке BOM:

ПолеОписание
specificationК какой строке BOM привязан
classifierКакой классификатор (Цвет, Толщина, Материал)
classifier_valueКонкретное значение (NULL если is_any_value = true)
is_any_valueTrue = значение определяется при заказе
sequence_orderКаскад фильтрации: 1 = материал, 2 = толщина, 3 = цвет

Пример

Технолог описывает строку BOM «Боковина → ЛДСП»:

  1. Классификатор «Материал», значение = ЛДСП (фиксировано)
  2. Классификатор «Толщина», значение = 16мм (фиксировано)
  3. Классификатор «Цвет», is_any_value = true (определяется при заказе из серии)

При заказе: цвет выбирается из серии «Классика» — Дуб, Липа, Вишня.

Правила и ограничения

ПравилоОписание
Количество > 0Нулевое или отрицательное количество запрещено
Нет самоссылокparent_object не может быть равен child_object
Деталь содержит только материалыДеталь — минимальный неделимый элемент. Не может содержать другие детали, сборки или изделия
Нет цикловГраф BOM ациклический: A → B → C, но C не может содержать A

Создание строки BOM

  1. Откройте технологический объект → вкладка «BOM»
  2. Нажмите «Добавить компонент»
  3. Заполните:
ПолеОбязательноОписание
КомпонентДаВыберите дочерний объект
КоличествоДаСколько единиц
ЕдиницаДашт, м², кг...
ПозицияДаНомер позиции
НаследованиеНетinherit / override / combine
УсловияНетУсловные строки BOM
  1. При необходимости привяжите классификаторы (ResourcePropertySpecification)
  2. Нажмите «Сохранить»

API

МетодEndpointОписание
GET/api/v1/specifications/Список всех строк BOM
POST/api/v1/specifications/Создать строку BOM
GET/api/v1/specifications/{id}/Детали строки BOM
PUT/api/v1/specifications/{id}/Обновить строку
DELETE/api/v1/specifications/{id}/Мягкое удаление
GET/api/v1/resource-property-specifications/Привязки классификаторов к BOM

AntRoute MES — управление блуждающими узкими местами