При работе с государственной системой маркировки «Честный Знак» (ИС МП) в программных продуктах 1С, особенно в комплексных решениях на обычных формах, таких как 1С:Управление производственным предприятием (УПП), пользователи часто сталкиваются с непредвиденными сложностями. Одна из самых распространенных ошибок при попытке ввести товары в оборот — блокировка проведения документа «Маркировка товаров ИС МП» с диагностическим сообщением: «Для номенклатуры [Наименование] должно быть указано марок [Х], а указано [Y]».
В этой статье мы подробно разберем, почему возникает данная ошибка, в чем заключается техническая логика работы конфигурации 1С:УПП с маркированной продукцией, почему «быстрые» решения из интернета могут навредить учету, и как правильно решить проблему ввода кодов в оборот, если под рукой нет физического сканера штрихкодов 2D. В рамках проектов по модернизации устаревших систем часто выполняется перенос остатков и документов из 1С:УПП 1.3 в 1С:КА 2.
---
Для обычных товаров без обязательной маркировки системе достаточно знать только номенклатуру, характеристику, серию и количество. Однако для маркированной продукции (обувь, одежда, текстиль, табак, молочная продукция и др.) каждая единица товара является уникальной. Государственная система контроля требует передавать в ИС МП информацию о каждом конкретном коде маркировки (DataMatrix), который вводится в оборот.
Когда мы заполняем табличную часть «Товары» в документе «Маркировка товаров ИС МП», мы указываем лишь целевое (плановое) количество позиций, которые планируем ввести в оборот. Для проведения документа и последующей отправки данных этого недостаточно. Внутри документа существует скрытая от обычного редактирования табличная часть — «ШтрихкодыУпаковок» (связанная со справочником штрихкодов).
Логика проведения документа выполняет строгую проверку соответствия:
// Упрощенный алгоритм проверки соответствия планового и фактического количества кодов
Для Каждого СтрокаТовары Из Ссылка.Товары Цикл
НайденныеКоды = Ссылка.ШтрихкодыУпаковок.НайтиСтроки(Новый Структура("Номенклатура", СтрокаТовары.Номенклатура));
Если НайденныеКоды.Количество() <> СтрокаТовары.Количество Тогда
ВызватьИсключение "Для номенклатуры " + СтрокаТовары.Номенклатура + " должно быть указано марок " + СтрокаТовары.Количество + ", а указано " + НайденныеКоды.Количество();
КонецЕсли;
КонецЦикла;
Если в табличной части «Товары» стоит число 1 (или больше), а в скрытой табличной части «ШтрихкодыУпаковок» записей нет, система выдает ошибку проведения. Ей физически нечего отправлять в ГИС МТ.
---
Иногда системные администраторы или неопытные разработчики пытаются обойти проверку двумя путями:
Рассмотрим правильные, штатные методы сопоставления ранее заказанных кодов маркировки с документом ввода в оборот без использования физического сканера. Для автоматизации этих рутинных операций в интерфейсе 1С может быть использована платформа для роботизации действий пользователя OneRPA.
---
Если вы ранее успешно оформили документ «Заказ на эмиссию кодов маркировки СУЗ» и получили марки (они имеют статус «Сгенерирован» или «Эмитирован» в регистре сведений Пул кодов маркировки), система позволяет сопоставить их автоматически.
Проанализируем пошагово, как это сделать:
Пул кодов маркировки, найдет свободные коды, эмитированные под этот GTIN и под данный заказ-основание, и перенесет их в список подобранных с зеленым статусом готовности.ШтрихкодыУпаковок автоматически заполнится легитимными кодами из пула.---
Бывают ситуации, когда коды маркировки были выгружены напрямую из личного кабинета «Честного Знака» (например, в формате .txt или .csv) или переданы вам в текстовом виде, и в локальном пуле базы 1С они отсутствуют.
Выясним, как загрузить их в документ напрямую без сканирования:
---
Рассмотрим ситуацию, когда вы пытаетесь выполнить подбор из пула, но программа сообщает, что доступных кодов нет. В чем может быть причина?
Пул кодов маркировки. Если они имеют статус «Сгенерирован», но обмен с СУЗ еще не завершен полностью (база ожидает подтверждения получения от ИС МП), 1С может блокировать их автоматический подбор. Иногда требуется принудительно запустить регламентное задание обмена с СУЗ ИС МП или подождать некоторое время (до 4 часов, согласно регламенту «Честного Знака»).---
В устаревших или сильно доработанных базах 1С:УПП штатные механизмы распределения из пула кодов могут работать некорректно из-за накопленных ошибок в коде интеграции. Если вам необходимо программно привязать свободные коды из пула к документу маркировки, можно воспользоваться следующей методикой заполнения табличной части:
// Пример программного заполнения табличной части ШтрихкодыУпаковок из пула
Процедура ЗаполнитьШтрихкодыИзПула(ДокументОбъект) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПулКодовМаркировки.КодМаркировки КАК КодМаркировки,
| ПулКодовМаркировки.Номенклатура КАК Номенклатура
|ИЗ
| РегистрСведений.ПулКодовМаркировки КАК ПулКодовМаркировки
|ГДЕ
| ПулКодовМаркировки.ДокументОснование = &ДокументОснование
| И ПулКодовМаркировки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыКодовМаркировки.Эмитирован)";
Запрос.УстановитьПараметр("ДокументОснование", ДокументОбъект.ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
ДокументОбъект.ШтрихкодыУпаковок.Очистить();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ДокументОбъект.ШтрихкодыУпаковок.Добавить();
НоваяСтрока.Штрихкод = Выборка.КодМаркировки;
НоваяСтрока.Номенклатура = Выборка.Номенклатура;
// Заполнение дополнительных реквизитов упаковки в соответствии с вашей версией БИС
КонецЦикла;
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
КонецПроцедуры
Используя этот подход в виде внешней обработки, вы сможете быстро связать зависшие в пуле коды с нужным документом «Маркировка товаров ИС МП», успешно ввести продукцию в оборот в системе «Честный Знак» и избежать рутинного ручного труда и ошибок человеческого фактора. Если организация переходит на современный производственный учет, применяется перенос документов и остатков из 1С:УПП 1.3 в 1С:ERP 2.