Внедрение обязательной маркировки (Честный ЗНАК) в оптовом звене — это не просто настройка обмена электронными документами, а полная перестройка складской логистики и архитектуры хранения данных в 1С. Рассмотрим основные технические и методологические вопросы, с которыми сталкиваются разработчики и руководители проектов при автоматизации маркировки «всего», на примере молочной продукции и других товарных групп.
Разберем, как технически выглядит цепочка передачи сведений о марках. Многие ошибочно полагают, что оператор ЭДО выполняет полную проверку легитимности марок в момент отправки УПД. На самом деле схема выглядит иначе:
Data Matrix или коды транспортных упаковок SSCC.Проанализируем ситуацию: чтобы избежать «зависших» документов, необходимо внедрять предварительную проверку марок через API «Честного ЗНАКа» еще на этапе сборки заказа на складе.
Интеграция маркировки с WMS-системой (системой управления складом) является самым трудозатратным этапом. Посмотрим на основные правила организации процесса:
Приемка — фундамент учета. Самый эффективный способ — организовать тотальный контроль на входе. Если на этапе приемки все коды Data Matrix проверены и сопоставлены с данными поставщика, то последующая отгрузка превращается в простую технологическую операцию. Однако при огромных объемах (например, фура молочных десертов) поштучная приемка невозможна. В этом случае используется объемно-сортовой учет (ОСУ), когда в документах указывается только GTIN и количество, без перечисления конкретных марок.
Отгрузка и сканирование. Для минимизации замедления работы склада рекомендуется использовать агрегацию. Если товар упакован в короба с кодами SSCC, складской работник сканирует один код упаковки вместо десятков кодов единиц товара. Рассмотрим алгоритм проверки на ТСД при отгрузке:
// Пример логики проверки марки на ТСД
Процедура ПроверитьМаркуНаСкладе(ТекущийКодМарки, ТекущееЗадание)
// 1. Проверяем, не занято ли задание другим кладовщиком
Если ЗаданиеЗаблокировано(ТекущееЗадание) Тогда
Возврат;
КонецЕсли;
// 2. Проверяем наличие марки в свободном остатке (регистр НаличиеМарки)
Если Не МаркаЕстьВНаличии(ТекущийКодМарки) Тогда
Сообщить("Марка отсутствует на остатке или уже зарезервирована!");
Возврат;
КонецЕсли;
// 3. Сопоставляем GTIN марки с номенклатурой в задании
Если ПолучитьGTIN(ТекущийКодМарки) <> ТекущееЗадание.Номенклатура.GTIN Тогда
Сообщить("Ошибка пересорта: товар не соответствует заданию!");
Возврат;
КонецЕсли;
// 4. Резервируем марку под конкретную реализацию
ЗафиксироватьРезервМарки(ТекущийКодМарки, ТекущееЗадание.ДокументОснование);
КонецПроцедуры
Один из главных страхов разработчиков — раздувание базы данных из-за хранения миллионов записей о кодах маркировки. Если записывать каждую марку в стандартный справочник или периодический регистр сведений, база быстро станет неповоротливой. Проанализируем способы оптимизации:
Пул кодов маркировки. Важно настроить механизм очистки: как только марка выбыла из оборота (подтверждена продажа через ЭДО или ККТ), запись о ней можно удалять из оперативного контура или перемещать в архив.PostgreSQL или ClickHouse). 1С в этом случае хранит только ссылку или уникальный идентификатор, а все операции проверки статусов проходят через внешний сервис.Data Matrix (которая может содержать более 100 символов) во всех документах. Достаточно хранить короткий хеш или уникальный ID из специализированного справочника.Для корректной работы системы необходимо вести детальный учет жизненного цикла каждой марки внутри вашей компании. Выясним, какие статусы критически важны для бизнес-логики:
Использование статусов позволяет избежать ситуации, когда одну и ту же марку пытаются отгрузить двум разным покупателям, что является одной из самых частых причин блокировок в «Честном ЗНАКе».
Рассмотрим ситуацию, когда покупатель отказывается от части товара. Здесь возможны два сценария:
Сценарий А: Универсальный корректировочный документ (УКД). Покупатель подписывает УПД с расхождениями. Продавец на основании этих данных формирует УКД. В этом случае в ГИС МТ возвращаются только те марки, которые были исключены из итогового документа. Проблема здесь в том, что магазин часто не хочет «пропикивать» фактически возвращаемые марки, отправляя «что попало». Поэтому склад отправителя обязан проводить повторную проверку возврата при поступлении товара назад.
Сценарий Б: Полный отказ и повторная отгрузка. Покупатель не принимает документ в ЭДО. Все марки остаются на балансе отправителя. Это проще с точки зрения учета, но требует повторного формирования всех транспортных документов.
Подведем итог: внедрение маркировки требует не только программирования обмена, но и внедрения жестких регламентов на складе. Помните, что любая ошибка в коде маркировки на этапе отгрузки может привести к административным штрафам и блокировке партии товара у клиента. Рекомендуется начинать с автоматизации приемки и агрегации, постепенно переходя к поштучному контролю каждого этапа товародвижения.