При автоматизации предприятий, выпускающих несерийную (позаказную) продукцию — такую как пластиковые окна, металлические двери, натяжные потолки или индивидуальную мебель, — ИТ-специалисты неизбежно сталкиваются с архитектурной дилеммой. Каждое изделие обладает уникальным набором параметров (высота, ширина, цвет профиля, тип стеклопакета, фурнитура), которые практически никогда не повторяются.
Если создавать под каждое уникальное изделие новый элемент в справочнике Номенклатура, система быстро начнет деградировать. Справочник раздуется до миллионов записей, механизмы полнотекстового поиска станут бесполезными, отчеты по продажам потеряют аналитичность, а обмены данными в распределенных информационных базах (РИБ) начнут вызывать критические задержки. В этой статье мы подробно разберем, как правильно организовать хранение данных о несерийной продукции в 1С, взвесим все «за» и «против» типовых подходов и выберем оптимальные проектные решения.
Это классический подход, заложенный в методологию современных ERP-решений от 1С (таких как 1С:ERP, 1С:Комплексная автоматизация и 1С:Управление нашей фирмой). Мы создаем одну общую номенклатурную позицию (например, «Окно ПВХ двустворчатое»), а все изменяемые параметры выносим в механизм характеристик.
Для реализации этого метода настроим индивидуальные характеристики для вида номенклатуры и добавим дополнительные реквизиты (высота, ширина, цвет, стеклопакет). Чтобы упростить работу на производстве, задействуем механизм параметрических спецификаций. Вместо создания сотен спецификаций на каждое окно мы описываем одну базовую спецификацию, в которой формулами задаем расчет расхода материалов в зависимости от параметров характеристики.
Рассмотрим пример логики расчета расхода профиля в параметрической спецификации:
// Формула для расчета расхода основного профиля (в метрах)
РасходПрофиля = ((Характеристика.Высота * 2) + (Характеристика.Ширина * 2)) / 1000 + ТехнологическийЗапас;
Однако при всей логичности этого подхода мы обязаны учитывать его существенные недостатки, которые часто всплывают на реальных внедрениях:
1С:Бухгалтерия (БП), нужно помнить, что в БП учет по характеристикам отсутствует. Бухгалтеры увидят только общую номенклатуру без расшифровки физических параметров.Альтернативный способ разгрузить справочник номенклатуры — перенести уникальные свойства изделия на уровень механизма серий. Этот вариант отлично подходит для производств, где важна строгая прослеживаемость каждого конкретного экземпляра готовой продукции.
При этом подходе серия выступает в роли уникального идентификатора паспорта изделия. В наименование или номер серии можно зашивать закодированную строку параметров или привязывать серию напрямую к конкретному заказу клиента.
Посмотрим на пример структуры кодирования серии:
// Формат серии: [НомерЗаказа]-[Высота]х[Ширина]-[КодПрофиля]-[КодЦвета]
// Пример: ЗК-04812-1450х1300-REH60-MAH
Применение серий позволяет гибко рассчитывать индивидуальную себестоимость каждого окна (поскольку серии поддерживают партионный учет и обособление затрат). При этом справочник Номенклатура и справочник Характеристики остаются компактными и удобными для анализа укрупненных продаж.
Для достижения максимального баланса между аналитикой продаж и производительностью системы мы рекомендуем провести статистический анализ всех свойств вашей продукции и разделить их на две категории:
Если мы хотим полностью защитить нормативно-справочную информацию от засорения, отличным решением станет хранение параметров непосредственно в документах движения (Заказ клиента, Заказ на производство) с трансляцией данных в специальный регистр сведений.
Разберем, как это реализовать технически. Мы создаем независимый регистр сведений ПараметрыУникальныхИзделий со следующей структурой:
ДокументСсылка (Заказ клиента), НомерСтроки (число).Высота, Ширина, Площадь, СпецификацияТекстом (JSON или XML со всеми дополнительными опциями).При проведении заказа менеджером параметры записываются в этот регистр. При создании цепочки документов (например, на основании Заказа клиента создается Заказ на производство) система программно переносит эти параметры, исключая ручной ввод. Печатные формы нарядов на производство и спецификаций для клиентов получают геометрические размеры напрямую из этого регистра.
Проанализируем пример кода для программного копирования параметров изделия по цепочке документов:
Процедура ЗаполнитьПараметрыИзделияНаОсновании(ДокументИсточник, ДокументПриемник) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Параметры.НомерСтроки КАК НомерСтроки,
| Параметры.Высота КАК Высота,
| Параметры.Ширина КАК Ширина,
| Параметры.СпецификацияТекстом КАК СпецификацияТекстом
|ИЗ
| РегистрСведений.ПараметрыУникальныхИзделий КАК Параметры
|ГДЕ
| Параметры.ДокументСсылка = &ДокументИсточник";
Запрос.УстановитьПараметр("ДокументИсточник", ДокументИсточник);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
// Записываем параметры для нового документа-приемника
МенеджерЗаписи = РегистрыСведений.ПараметрыУникальныхИзделий.СоздатьМенеджерЗаписи();
МенеджерЗаписи.ДокументСсылка = ДокументПриемник;
МенеджерЗаписи.НомерСтроки = Выборка.НомерСтроки;
МенеджерЗаписи.Высота = Выборка.Высота;
МенеджерЗаписи.Ширина = Выборка.Ширина;
МенеджерЗаписи.СпецификацияТекстом = Выборка.СпецификацияТекстом;
МенеджерЗаписи.Записать();
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Попытка заставить 1С выполнять функции графического конструктора окон и рассчитывать карты оптимального раскроя профиля с точностью до миллиметра часто обречена на провал. На крупных предприятиях наиболее эффективной показывает себя двухконтурная схема автоматизации:
В результате такой интеграции 1С не перегружается сложными геометрическими расчетами, но получает абсолютно точные данные для списания материалов со склада и калькуляции реальной себестоимости каждого заказа.
Выбор конкретного метода зависит от масштаба вашего производства и используемой конфигурации: