Как организовать сквозное отслеживание цепочки производства от сырья до готовой продукции в 1С?

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

Задача прослеживаемости (traceability) является одной из самых сложных и востребованных в автоматизации производства. Нам необходимо знать не просто общее количество списанного сырья, а четко понимать генеалогию продукта: из какой конкретно партии сырья был сделан полуфабрикат, и в какую партию готовой продукции этот полуфабрикат в итоге попал. Это критически важно для контроля качества, работы с рекламациями и соблюдения требований законодательства (ХАССП, Честный ЗНАК, Меркурий).

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

Вариант 1. Использование механизма серий (Классический подход)

В типовых конфигурациях (УПП, ERP, КА) основным инструментом прослеживаемости являются Серии. Разберем, как это работает на практике. Серия — это не просто номер, это дополнительное измерение учета. Для каждого вида номенклатуры (сырье, полуфабрикат, продукция) настраивается политика учета серий.

Алгоритм работы:

  1. При поступлении сырья документом ПриходнаяНакладная (или ПриобретениеТоваровУслуг) регистрируется новая серия. В нее можно записать номер сертификата, дату производства и срок годности.
  2. При передаче сырья в производство документом ТребованиеНакладная кладовщик обязан указать конкретную серию, которая физически выдается со склада.
  3. При оформлении выпуска (ОтчетПроизводстваЗаСмену) для выпускаемого полуфабриката также генерируется новая серия. В этом же документе указывается связь: на выпуск Серии ПФ-001 пошло сырье Серии С-100.

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

Вариант 2. Сквозная аналитика по «Заказам» (Метод шампура)

Интересный и эффективный метод, предложенный в сообщении 26, — использование сквозного разреза через все документы. Если производство работает под конкретные заказы клиентов, то документ ЗаявкаПокупателя (или ЗаказНаПроизводство) становится тем самым «шампуром», на который нанизываются все операции.

Реализация по шагам:

  1. Во всех документах (от закупки до реализации) в табличных частях добавляется реквизит Заказ.
  2. Закупка сырья делается под конкретный Заказ 1.
  3. Списание в производство и выпуск полуфабрикатов также резервируются под Заказ 1.

Выясним причину популярности этого метода: он позволяет видеть всю цепочку в типовом отчете «Структура подчиненности» или через простой фильтр в регистрах. Но у него есть существенное ограничение: он плохо работает в поточном производстве, где из одного замеса (одной партии сырья) делается продукция для десяти разных заказчиков.

Вариант 3. Партионный учет через дополнительные измерения

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

Разберем пример реализации связи при переделах:

При выпуске продукции нам необходимо зафиксировать связь «Вход-Выход». Технически это можно сделать через создание вспомогательного регистра сведений СвязиПартийПроизводства.


// Пример логики при проведении выпуска
Запись = РегистрыСведений.СвязиПартийПроизводства.СоздатьМенеджерЗаписи();
Запись.Период = ДатаДокумента;
Запись.ПартияВыход = НоваяПартияПФ; // Ссылка на созданную партию полуфабриката
Запись.ПартияВход  = ПартияСырья;   // Серия/партия списанного сырья
Запись.Количество  = КоличествоСписанногоСырья;
Запись.Записать();

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

Вариант 4. Маркировка и использование ТСД

Любой самый совершенный алгоритм в 1С разобьется о «человеческий фактор», если склад и цех будут работать по бумажкам. Проанализируем решение проблемы достоверности данных. Единственный надежный способ — это штрихкодирование каждой единицы (или паллеты/замеса) сырья и полуфабриката.

  1. На входе на сырье клеится этикетка с внутренним штрихкодом партии.
  2. При передаче в производство рабочий пикает штрихкод сырья терминалом сбора данных (ТСД).
  3. На выходе из станка принтер печатает новую этикетку для полуфабриката, которая программно уже связана с «пикнутым» сырьем.

Это исключает ситуацию, когда в программе списана «Партия №1», а физически в чан засыпали «Партию №2».

Вариант 5. Проблема «Фарш невозможно провернуть назад» (Mass Balance)

Рассмотрим сложную ситуацию, упомянутую в сообщении 48: производство из многих ингредиентов или смешивание партий. Например, когда в один бункер досыпают зерно из разных поставок. В этом случае строгая цепочка «один к одному» рвется.

Как это решается в автоматизации:

Техническая реализация отчета «Дерево прослеживаемости»

Для построения отчета «Готовая продукция –> Сырье» (сверху вниз) или «Сырье –> Готовая продукция» (снизу вверх) лучше всего использовать рекурсивный обход графа. Если данных очень много, расчет «на лету» по регистрам бухгалтерии или себестоимости будет медленным. Рекомендуем создать отдельный «теневой» регистр, где связи между партиями будут фиксироваться в момент проведения документов выпуска. Это позволит мгновенно получать ответ на вопрос: «В какие коробки попало зараженное молоко из партии А?».

Важный совет: Не пытайтесь внедрить все и сразу. Начните с организационного этапа — заставьте людей маркировать сырье на входе. Без этого любая программная реализация в 1С останется лишь красивой, но бесполезной теорией.

← На главную