Как лучше организовать штрихкодирование на производстве: менять код на каждом этапе или оставить один постоянный?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Промышленность, строительство и АПК
← На главную

Вопрос выбора стратегии идентификации продукции на производстве является ключевым при проектировании систем класса MES или ERP на базе 1С. От этого решения зависит не только удобство работы кладовщиков и операторов, но и глубина прослеживаемости (traceability), которая критически важна для работы с браком, рекламациями и государственными системами маркировки. Разберем подробно, какой подход выбрать и как его реализовать программно.

Вариант 1: Использование сменяемого штрихкода на каждом этапе

При этом подходе на каждом технологическом переделе старая этикетка удаляется или перекрывается новой. Рассмотрим ситуации, в которых этот метод является единственно верным:

  1. Деление заготовки: Проанализируем ситуацию, когда один лист металла раскраивается на 50 разных деталей. Если у исходного листа был один штрихкод, то после резки нам необходимо идентифицировать каждую деталь отдельно, так как они могут пойти по разным маршрутам обработки.
  2. Изменение свойств объекта: Когда заготовка проходит термическую обработку, покраску или гальванику, она фактически становится другим объектом учета с точки зрения складской программы. Смена штрихкода позволяет однозначно понять статус изделия, просто считав код, без обращения к истории перемещений.
  3. Детальная отчетность: Как отмечалось в обсуждении, через постоянную смену штрихкодов можно получить более прозрачную аналитику по времени нахождения изделия на каждом этапе.

С точки зрения реализации в 1С, для каждого этапа создается новый элемент справочника СерииНоменклатуры или записи в регистре сведений. При этом крайне важно сохранять преемственность данных.

Вариант 2: Постоянный идентификатор (UID) изделия

В этом случае изделию присваивается уникальный номер (например, серийный номер), который сопровождает его от «рождения» до отгрузки клиенту. Рассмотрим плюсы и минусы этого решения:

Преимущества:

Недостатки:

Основная сложность заключается в реализации процессов сборки. Если у нас есть узел, состоящий из 400 деталей, каждая из которых имеет свой штрихкод, то при сборке нам нужно решить, какой из них станет «главным». Проанализируем это в контексте следующего решения.

Вариант 3: Иерархическое штрихкодирование и агрегация

Это наиболее продвинутый метод, который часто применяется в 1С:ERP. Суть заключается в том, что мы не выбираем между постоянным и сменяемым кодом, а используем систему «Родитель — Потомок».

Рассмотрим алгоритм работы:

  1. Заготовка имеет свой штрихкод ШК_1.
  2. После обработки она превращается в деталь, которой присваивается ШК_2. В системе фиксируется связь: ШК_2 поглотил ШК_1.
  3. При сборке узла ШК_Узел агрегирует в себе коды всех входящих деталей.

Важный технический нюанс: Как справедливо замечено в обсуждении, основной проблемой здесь становится производительность запросов. В 1С (особенно на платформе 8.3) стандартные запросы не являются рекурсивными (в отличие от WITH RECURSIVE в PostgreSQL). Чтобы быстро найти, из какой плавки металла была сделана конкретная шестеренка в собранном редукторе, необходимо поддерживать в системе «сквозной» реквизит или использовать дополнительные регистры сведений для хранения всей цепочки связей.

Техническая реализация в 1С: объекты и методы

Выясним, какие инструменты платформы 1С лучше использовать для решения этой задачи. Проанализируем типичную схему данных:

Для хранения уникальных идентификаторов изделий на производстве рекомендуется использовать справочник СерииНоменклатуры. В отличие от простого регистра штрихкодов, серия является ссылочным типом данных, что позволяет привязывать к ней документы, остатки и дополнительные свойства.

Пример кода для генерации и печати нового штрихкода при завершении этапа производства:


// Процедура генерации нового штрихкода для этапа
Процедура СформироватьШтрихкодЭтапа(ТекущаяСерия, ПредыдущаяСерия)
    
    // Создаем новую серию или находим существующую
    НоваяСерияОбъект = Справочники.СерииНоменклатуры.СоздатьЭлемент();
    НоваяСерияОбъект.Наименование = "Партия " + ТекущаяДата();
    НоваяСерияОбъект.Владелец = Объект.Номенклатура;
    
    // Устанавливаем связь с предыдущим этапом для прослеживаемости
    НоваяСерияОбъект.ДополнительныеРеквизиты.Очистить();
    НовыйРеквизит = НоваяСерияОбъект.ДополнительныеРеквизиты.Добавить();
    НовыйРеквизит.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ПредыдущийЭтап");
    НовыйРеквизит.Значение = ПредыдущаяСерия;
    
    НоваяСерияОбъект.Записать();
    
    // Генерируем ШК (например, в формате EAN13 или DataMatrix)
    МенеджерШтрихкодов.СформироватьНовыйШтрихкод(НоваяСерияОбъект.Ссылка);
    
КонецПроцедуры

Использование бизнес-процессов

Интересным вариантом является привязка штрихкода не только к товару, но и к Бизнес-процессу. Рассмотрим ситуацию: штрихкод на этикетке является ссылкой на экземпляр бизнес-процесса в 1С. При сканировании система определяет, на какой точке маршрута находится данное изделие, и предлагает пользователю только те действия, которые допустимы на текущем этапе. Это реализует принцип Poka-yoke (защита от ошибок).

Выбор формата штрихкода: 1D или 2D?

Разберем ситуацию с выбором носителя информации. В промышленном производстве рекомендуется использовать DataMatrix (2D-код). Посмотрим на его преимущества:

Однако, как верно подмечено в сообщении 16, не стоит перегружать сам код данными, если система работает в режиме онлайн. Внутри 1С все связи должны строиться по ссылкам на объекты базы данных, а штрихкод должен служить лишь уникальным ключом для поиска этой ссылки.

Итоги и рекомендации

Подведем итог: как же лучше поступить? Рассмотрим рекомендации в зависимости от сложности производства:

  1. Если производство линейное (из А получается Б), достаточно одного постоянного штрихкода, а статусы этапов менять программно в 1С.
  2. Если на производстве есть процессы деления (резка листов, роспуски рулонов) или сборки (узлы из сотен деталей), необходимо использовать сменяемый штрихкод или систему агрегации (создание новой этикетки при переходе на этап сборки).
  3. Для обеспечения прослеживаемости всегда сохраняйте ссылку на «предшественника» в карточке серии или в специальном регистре сведений. Это позволит построить отчет «Дерево состава изделия» и быстро найти виновника брака.

Проанализировав все за и против, мы видим, что наиболее гибким является вариант с уникальным идентификатором каждой производственной единицы, который может перепечатываться при физическом изменении изделия, сохраняя при этом цифровую связь со всеми предыдущими компонентами.

← На главную