На производственных предприятиях (особенно в мебельной отрасли, производстве дверей или крупногабаритного оборудования) часто возникает задача поупаковочного учета. Готовое изделие, например диван или шкаф, изготавливается как единое целое, но для транспортировки разбирается на несколько составных частей (упаковок). Каждая упаковка заворачивается в пленку или картон, маркируется собственной этикеткой с уникальным штрихкодом (ШК). При отгрузке клиенту кладовщик должен отсканировать ШК абсолютно всех упаковок, чтобы исключить риск некомплектной поставки.
В типовой конфигурации 1С:Управление нашей фирмой (УНФ) готовое изделие учитывается как одна номенклатурная позиция. Прямого механизма автоматического деления одной штуки товара на несколько маркируемых грузовых мест «из коробки» не предусмотрено. В этой статье мы подробно разберем несколько вариантов реализации такой схемы учета: от использования типового функционала до кастомных доработок и интеграции со сторонним программным обеспечением.
Прежде чем переходить к технической реализации в 1С, давайте детально проанализируем схему работы и сформулируем ключевые требования к системе:
---
Рассмотрим самый близкий к типовой методологии 1С вариант, предложенный опытными пользователями на форуме. Мы можем представить процесс упаковки как финальный этап (передел) производства.
При такой схеме в спецификации изделия настраивается многоэтапное производство:
Диван (неупакованный)).Производство списывается неупакованный полуфабрикат, а также упаковочные материалы (гофрокартон, пленка, скотч, бирки). На выходе мы получаем готовую продукцию.Для реализации штрихкодирования упаковок в данном сценарии мы можем использовать печатную форму «Упаковочный лист». При проведении документа выпуска готовой продукции формируется упаковочный лист, в котором выводятся строки для каждого грузового места. В состав упаковочного листа выводится основной штрихкод изделия с дополнительным префиксом или суффиксом номера упаковки.
Преимущества метода: Точный расчет себестоимости с учетом затрат на упаковочные материалы и трудоемкость работы упаковщиков.
Минусы метода: В типовой УНФ упаковочные листы имеют ограниченный функционал и требуют ручного контроля со стороны кладовщика, так как система не умеет автоматически проверять сканирование каждой отдельной коробки в рамках одного серийного номера без доработок.
---
Проанализируем возможность адаптации стандартного механизма серийных номеров УНФ под учет упаковок. Каждому изготовленному изделию присваивается уникальный серийный номер (например, СН-2023-0001).
Мы можем программно или организационно связать штрихкоды упаковок с этим серийным номером. Схема генерации штрихкодов в таком случае будет выглядеть следующим образом:
СН-2023-0001-1СН-2023-0001-2СН-2023-0001-3СН-2023-0001-4При выпуске продукции принтер этикеток сразу распечатывает ленту из 4 этикеток. На каждой этикетке выводится текстовая информация (номер упаковки, общие габариты) и уникальный линейный или QR-код, содержащий вышеуказанную строковую структуру.
При отгрузке в рабочем месте кладовщика сканирование любого из этих кодов должно распознаваться системой как сканирование части конкретного изделия с серийным номером СН-2023-0001. Кладовщик сканирует все коробки подряд, а система заполняет внутреннюю таблицу проверки отгрузки. Как только будут зафиксированы все индексы от 1 до 4 для данного серийного номера, строка считается собранной.
---
Если специфика производства позволяет хранить упаковки как отдельные складские сущности, то мы можем применить механизм Наборов.
В этом случае в справочнике Номенклатура создается элемент Диван (Набор). Для этого набора настраивается состав:
Упаковка 1 (каркас) — 1 шт.Упаковка 2 (подлокотники) — 1 шт.Упаковка 3 (подушки) — 1 шт.Упаковка 4 (фурнитура) — 1 шт.Каждая упаковка является отдельной номенклатурной позицией, имеет свой собственный уникальный штрихкод в регистре сведений Штрихкоды номенклатуры.
Как это работает в документах:
Заказе покупателя и Расходной накладной менеджер выбирает одну позицию — Диван (Набор).Минус этого подхода: Придется вести складской учет в разрезе отдельных упаковок. Если на производстве повредится одна упаковка, на складе возникнет пересортица комплектующих, что усложнит инвентаризацию.
---
Если мы хотим сохранить учет готовой продукции как единой целой штуки, но получить полный контроль над упаковками, наилучшим решением будет создание небольшого расширения для 1С:УНФ.
Разберем по шагам, какие объекты необходимо создать и как настроить логику их работы.
Создадим новый независимый регистр сведений УпаковкиИзделий со следующей структурой:
Номенклатура (СправочникСсылка.Номенклатура)Характеристика (СправочникСсылка.ХарактеристикиНоменклатуры)СерийныйНомер (СправочникСсылка.СерийныеНомера)НомерУпаковки (Число) — порядковый номер места (например, от 1 до 4).Штрихкод (Строка) — уникальный штрихкод конкретного грузового места.Статус (ПеречислениеСсылка.СтатусыУпаковок) — значения: "Упаковано", "Отгружено".В документе Производство при его проведении (или по кнопке «Упаковать и распечатать») должен запускаться алгоритм автоматической генерации записей в наш регистр и печать этикеток. Напишем пример функции генерации уникального штрихкода для упаковки:
Функция СгенерироватьШтрихкодУпаковки(СерийныйНомер, НомерУпаковки) Экспорт
// Формируем уникальный префикс предприятия (например, 29)
Префикс = "29";
// Получаем чистый номер из серийного номера (очищаем от спецсимволов)
КодСерии = СокрЛП(СерийныйНомер.Код);
Пока СтрДлина(КодСерии) < 8 Цикл
КодСерии = "0" + КодСерии;
КонецЦикла;
// Форматируем номер упаковки (двузначное число)
СтрокаНомера = Формат(НомерУпаковки, "ЧЦ=2; ЧГ=0");
// Собираем штрихкод без контрольного символа (всего 12 символов для EAN-13)
ШтрихкодБезКонтрольного = Префикс + КодСерии + СтрокаНомера;
// Вычисляем контрольный символ EAN-13
Четные = 0; Нечетные = 0;
Для Индекс = 1 По 12 Цикл
Цифра = Число(Сред(ШтрихкодБезКонтрольного, Индекс, 1));
Если Индекс % 2 = 0 Тогда
Четные = Четные + Цифра;
Иначе
Нечетные = Нечетные + Цифра;
КонецЕсли;
КонецЦикла;
Сумма = Нечетные + (Четные * 3);
Остаток = Сумма % 10;
КонтрольныйСимвол = ?(Остаток = 0, 0, 10 - Остаток);
Возврат ШтрихкодБезКонтрольного + Строка(КонтрольныйСимвол);
КонецФункции
Данный алгоритм формирует полноценный штрихкод формата EAN-13, который легко считывается любым стандартным сканером штрихкодов или терминалом сбора данных (ТСД).
---
Для того чтобы кладовщик не мог отгрузить товар без сканирования всех коробок, нам необходимо доработать форму проверки отгрузки в документе Расходная накладная.
Создадим расширение для формы проверки и перехватим событие сканирования штрихкода. Проанализируем логику обработки отсканированного штрихкода:
&НаКлиенте
Процедура Расш_ПриСканированииШтрихкода(Штрихкод)
// 1. Ищем штрихкод в нашем регистре упаковок
ДанныеУпаковки = ПолучитьДанныеУпаковкиНаСервере(Штрихкод);
Если ДанныеУпаковки = Неопределено Тогда
Предупреждение("Штрихкод не зарегистрирован в базе упаковок!");
Возврат;
КонецЕсли;
// 2. Проверяем, есть ли такое изделие в документе отгрузки
СтрокаДокумента = НайтиСтрокуПоСерийномуНомеру(ДанныеУпаковки.СерийныйНомер);
Если СтрокаДокумента = Неопределено Тогда
Предупреждение("Данное изделие отсутствует в текущем документе реализации!");
Возврат;
КонецЕсли;
// 3. Фиксируем факт сканирования конкретной упаковки
ДобавитьУпаковкуВТаблицуПроверенных(ДанныеУпаковки);
// 4. Проверяем комплектность изделия
Если ВсеУпаковкиСобраны(ДанныеУпаковки.СерийныйНомер) Тогда
УстановитьСтатусСтроки"Проверено"(СтрокаДокумента);
Сообщить("Изделие " + ДанныеУпаковки.СерийныйНомер + " полностью укомплектовано!");
Иначе
КоличествоОставшихся = ПолучитьОстатокУпаковок(ДанныеУпаковки.СерийныйНомер);
Сообщить("Успешно отсканировано. Осталось собрать упаковок для этого изделия: " + КоличествоОставшихся);
КонецЕсли;
КонецПроцедуры
При такой логике работы кладовщик физически не сможет завершить проверку документа отгрузки, пока не отсканирует все штрихкоды, привязанные к конкретному серийному номеру готовой продукции.
---
Если сборка заказов на складе происходит динамично и на большой площади, использование обычного проводного сканера у стационарного компьютера становится крайне неудобным. В таком случае оптимальным решением является интеграция 1С:УНФ с мобильным программным обеспечением для ТСД (например, DataMobile или Клеверенс (Cleverence)).
В этих программных продуктах уже реализован готовый бизнес-процесс «Комплектация по упаковочным листам». Схема работы выглядит так:
Расходная накладная из 1С:УНФ выгружается на ТСД кладовщика.УпаковкиИзделий выгружаются на ТСД как связанные штрихкоды номенклатуры).---
Подводя итог, выберем оптимальный вариант автоматизации поупаковочного учета в зависимости от бюджета и сложности ваших процессов: