С введением разрешительного режима с 1 апреля 2024 года (Постановление Правительства №1944) многие оптовые компании, работающие в 1С:Управление торговлей 11, столкнулись с серьезной технической проблемой. Ситуация выглядит следующим образом: организация получает табак от поставщика в транспортных коробах, оформляет оптовую продажу, но покупатель желает оплатить товар наличными. В этом случае, согласно 54-ФЗ, необходимо пробить кассовый чек. Однако при попытке отсканировать штрихкод коробки система выдает ошибку: «Требуется код маркировки для товара» или «[М] отсутствует, Отсутствует полный код маркировки».
В этой статье мы подробно разберем, почему возникает эта ошибка, проанализируем внутренние механизмы 1С и «Честного ЗНАКа», а также найдем способы решения задачи для бесперебойной отгрузки товара.
Для начала проанализируем ситуацию с точки зрения системы маркировки. В «Честном ЗНАКе» (ИС МП) существует жесткое разграничение типов упаковок:
DataMatrix код. Именно эти коды предназначены для выбытия через ККТ (розничной или мелкооптовой продажи с чеком).GS1-128 или SSCC. Эта упаковка предназначена исключительно для логистических операций (перемещение, отгрузка через ЭДО).Разрешительный режим требует, чтобы кассовое ПО отправило онлайн-запрос в ИС МП перед пробитием чека. Проблема в том, что система «Честный ЗНАК» не выдает положительный токен проверки для логистического кода при попытке его розничного выбытия. Касса «ожидает» коды вложенных блоков, а не код самой коробки.
Разберем техническую сторону вопроса в 1С:Управление торговлей 11. Когда мы принимаем товар по ЭДО, в систему зачастую попадает только код короба (так называемая «доверительная приемка»). Если мы не выполняли полную проверку и подбор каждой пачки или блока при поступлении, в базе 1С отсутствуют данные о том, какие именно марки блоков находятся внутри этого короба.
Как отмечается в обсуждении, даже если в отладчике изменить Перечисления.ВидыУпаковокИС.Логистическая на Потребительская, это не решает проблему, так как система перестает корректно считывать серии из ШК. Программа 1С честно пытается найти вложенные элементы, но не находит их в своем регистре сведений «Коды маркировки подакцизных товаров».
Это наиболее корректный и законный способ решения проблемы. Чтобы 1С смогла пробить чек на коробку, она должна «разложить» её на блоки в момент формирования чека. Для этого база должна заранее знать состав этой коробки.
Рассмотрим пошагово, как это реализовать:
DataMatrix (блоков), которые числятся внутри данного короба.Важный нюанс: В этом случае кассовый чек может стать очень длинным, так как в него запишутся все блоки (например, 50 штук). Однако только так касса сможет пройти проверку разрешительного режима для каждого кода.
Некоторые специалисты пытаются решить вопрос через расширение конфигурации, отключая проверку кодов на стороне 1С. Рассмотрим пример кода, который часто предлагается для обхода блокировки:
&Вместо("ФискальноеУстройствоПоддерживаетПроверкуКодовМаркировки")
Функция Расш1_ФискальноеУстройствоПоддерживаетПроверкуКодовМаркировки(ИдентификаторУстройства)
// Принудительно возвращаем Ложь, чтобы программа не инициировала онлайн-проверку в ЧЗ
Возврат Ложь;
КонецФункции
Проанализируем последствия такого решения. Несмотря на то что чек может пробиться, возникает ряд критических проблем:
Если «разагрегация» и запрос состава каждой коробки занимают слишком много времени (например, при отгрузке фурами), следует рассмотреть изменение способа расчетов с покупателями. Разрешительный режим и требования к кодам маркировки в чеке возникают только при использовании ККТ (наличные, оплата картой).
Выясним, как можно оптимизировать процесс:
При работе с кодами GS1-128 в 1С важно понимать, как программа парсит строку. Логистический ШК содержит идентификаторы применения (AI). Для коробок это обычно (01) — GTIN короба и (21) — серийный номер или (00) — SSCC.
Выясним причину, почему подстановка «подчиненных ШК» вручную (как пробовал автор вопроса) не работает. При пробитии чека 1С проверяет не просто наличие записи в справочнике, а корректность формирования объекта ДанныеМаркировки. Для табака требуется наличие «криптохвоста» (кода проверки), которого нет у логистического штрихкода. Именно поэтому 1С пишет об отсутствии полного кода.
Резюме для технического специалиста:
ИнтеграцияИСМП.ЗапроситьСоставТранспортныхУпаковок() в серверном модуле.Таким образом, единственным надежным способом продать коробку табака через чек в условиях разрешительного режима является обеспечение базы данных 1С сведениями о каждом вложенном блоке. Это достигается либо детальной приемкой, либо онлайн-запросом состава упаковки перед продажей.