Вопрос выбора стратегии идентификации продукции на производстве является ключевым при проектировании систем класса MES или ERP на базе 1С. От этого решения зависит не только удобство работы кладовщиков и операторов, но и глубина прослеживаемости (traceability), которая критически важна для работы с браком, рекламациями и государственными системами маркировки. Разберем подробно, какой подход выбрать и как его реализовать программно.
При этом подходе на каждом технологическом переделе старая этикетка удаляется или перекрывается новой. Рассмотрим ситуации, в которых этот метод является единственно верным:
С точки зрения реализации в 1С, для каждого этапа создается новый элемент справочника СерииНоменклатуры или записи в регистре сведений. При этом крайне важно сохранять преемственность данных.
В этом случае изделию присваивается уникальный номер (например, серийный номер), который сопровождает его от «рождения» до отгрузки клиенту. Рассмотрим плюсы и минусы этого решения:
Преимущества:
Недостатки:
Основная сложность заключается в реализации процессов сборки. Если у нас есть узел, состоящий из 400 деталей, каждая из которых имеет свой штрихкод, то при сборке нам нужно решить, какой из них станет «главным». Проанализируем это в контексте следующего решения.
Это наиболее продвинутый метод, который часто применяется в 1С:ERP. Суть заключается в том, что мы не выбираем между постоянным и сменяемым кодом, а используем систему «Родитель — Потомок».
Рассмотрим алгоритм работы:
ШК_1.ШК_2. В системе фиксируется связь: ШК_2 поглотил ШК_1.ШК_Узел агрегирует в себе коды всех входящих деталей.Важный технический нюанс: Как справедливо замечено в обсуждении, основной проблемой здесь становится производительность запросов. В 1С (особенно на платформе 8.3) стандартные запросы не являются рекурсивными (в отличие от WITH RECURSIVE в PostgreSQL). Чтобы быстро найти, из какой плавки металла была сделана конкретная шестеренка в собранном редукторе, необходимо поддерживать в системе «сквозной» реквизит или использовать дополнительные регистры сведений для хранения всей цепочки связей.
Выясним, какие инструменты платформы 1С лучше использовать для решения этой задачи. Проанализируем типичную схему данных:
Для хранения уникальных идентификаторов изделий на производстве рекомендуется использовать справочник СерииНоменклатуры. В отличие от простого регистра штрихкодов, серия является ссылочным типом данных, что позволяет привязывать к ней документы, остатки и дополнительные свойства.
Пример кода для генерации и печати нового штрихкода при завершении этапа производства:
// Процедура генерации нового штрихкода для этапа
Процедура СформироватьШтрихкодЭтапа(ТекущаяСерия, ПредыдущаяСерия)
// Создаем новую серию или находим существующую
НоваяСерияОбъект = Справочники.СерииНоменклатуры.СоздатьЭлемент();
НоваяСерияОбъект.Наименование = "Партия " + ТекущаяДата();
НоваяСерияОбъект.Владелец = Объект.Номенклатура;
// Устанавливаем связь с предыдущим этапом для прослеживаемости
НоваяСерияОбъект.ДополнительныеРеквизиты.Очистить();
НовыйРеквизит = НоваяСерияОбъект.ДополнительныеРеквизиты.Добавить();
НовыйРеквизит.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ПредыдущийЭтап");
НовыйРеквизит.Значение = ПредыдущаяСерия;
НоваяСерияОбъект.Записать();
// Генерируем ШК (например, в формате EAN13 или DataMatrix)
МенеджерШтрихкодов.СформироватьНовыйШтрихкод(НоваяСерияОбъект.Ссылка);
КонецПроцедуры
Интересным вариантом является привязка штрихкода не только к товару, но и к Бизнес-процессу. Рассмотрим ситуацию: штрихкод на этикетке является ссылкой на экземпляр бизнес-процесса в 1С. При сканировании система определяет, на какой точке маршрута находится данное изделие, и предлагает пользователю только те действия, которые допустимы на текущем этапе. Это реализует принцип Poka-yoke (защита от ошибок).
Разберем ситуацию с выбором носителя информации. В промышленном производстве рекомендуется использовать DataMatrix (2D-код). Посмотрим на его преимущества:
Однако, как верно подмечено в сообщении 16, не стоит перегружать сам код данными, если система работает в режиме онлайн. Внутри 1С все связи должны строиться по ссылкам на объекты базы данных, а штрихкод должен служить лишь уникальным ключом для поиска этой ссылки.
Подведем итог: как же лучше поступить? Рассмотрим рекомендации в зависимости от сложности производства:
Проанализировав все за и против, мы видим, что наиболее гибким является вариант с уникальным идентификатором каждой производственной единицы, который может перепечатываться при физическом изменении изделия, сохраняя при этом цифровую связь со всеми предыдущими компонентами.