Как исправить ошибку «для номенклатуры должно быть указано марок 1, а указано 0» в 1С:УПП при маркировке товаров без сканера?

Пользователь 1С v8.3 (Обычные формы) Управленческий учет Торговля и дистрибуция
← На главную

При работе с государственной системой маркировки «Честный Знак» (ИС МП) в программных продуктах 1С, особенно в комплексных решениях на обычных формах, таких как 1С:Управление производственным предприятием (УПП), пользователи часто сталкиваются с непредвиденными сложностями. Одна из самых распространенных ошибок при попытке ввести товары в оборот — блокировка проведения документа «Маркировка товаров ИС МП» с диагностическим сообщением: «Для номенклатуры [Наименование] должно быть указано марок [Х], а указано [Y]».

В этой статье мы подробно разберем, почему возникает данная ошибка, в чем заключается техническая логика работы конфигурации 1С:УПП с маркированной продукцией, почему «быстрые» решения из интернета могут навредить учету, и как правильно решить проблему ввода кодов в оборот, если под рукой нет физического сканера штрихкодов 2D. В рамках проектов по модернизации устаревших систем часто выполняется перенос остатков и документов из 1С:УПП 1.3 в 1С:КА 2.

---

Выясняем причину: почему 1С:УПП требует марки при заполненном количестве?

Для обычных товаров без обязательной маркировки системе достаточно знать только номенклатуру, характеристику, серию и количество. Однако для маркированной продукции (обувь, одежда, текстиль, табак, молочная продукция и др.) каждая единица товара является уникальной. Государственная система контроля требует передавать в ИС МП информацию о каждом конкретном коде маркировки (DataMatrix), который вводится в оборот.

Когда мы заполняем табличную часть «Товары» в документе «Маркировка товаров ИС МП», мы указываем лишь целевое (плановое) количество позиций, которые планируем ввести в оборот. Для проведения документа и последующей отправки данных этого недостаточно. Внутри документа существует скрытая от обычного редактирования табличная часть — «ШтрихкодыУпаковок» (связанная со справочником штрихкодов).

Логика проведения документа выполняет строгую проверку соответствия:


// Упрощенный алгоритм проверки соответствия планового и фактического количества кодов
Для Каждого СтрокаТовары Из Ссылка.Товары Цикл
    НайденныеКоды = Ссылка.ШтрихкодыУпаковок.НайтиСтроки(Новый Структура("Номенклатура", СтрокаТовары.Номенклатура));
    Если НайденныеКоды.Количество() <> СтрокаТовары.Количество Тогда
        ВызватьИсключение "Для номенклатуры " + СтрокаТовары.Номенклатура + " должно быть указано марок " + СтрокаТовары.Количество + ", а указано " + НайденныеКоды.Количество();
    КонецЕсли;
КонецЦикла;

Если в табличной части «Товары» стоит число 1 (или больше), а в скрытой табличной части «ШтрихкодыУпаковок» записей нет, система выдает ошибку проведения. Ей физически нечего отправлять в ГИС МТ.

---

Опасность «костыльных» решений: почему нельзя просто закомментировать код или добавить пустую упаковку?

Иногда системные администраторы или неопытные разработчики пытаются обойти проверку двумя путями:

  1. Комментирование проверки в коде конфигурации. Если отключить проверку в конфигураторе, документ проведется. Однако при нажатии кнопки «Передать данные» система попытается сформировать XML-файл для отправки в «Честный Знак». Поскольку табличная часть со штрихкодами пуста, в ИС МП уйдет пустой пакет данных, и сервер вернет ошибку некорректного формата или отсутствия кодов.
  2. Ручное создание фиктивного элемента в справочнике упаковок. Как отмечают пользователи на форумах, если вручную создать упаковку и силой «запихнуть» её в табличную часть штрихкодов, документ проведется. Но этот метод несет огромные риски: созданный вручную элемент не содержит реального криптохвоста и структуры DataMatrix, полученной от СУЗ (Станции управления заказами). При отправке в ИС МП такие коды будут отклонены системой как несуществующие или некорректные.

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

---

Способ 1. Автоматический подбор из «Пула кодов маркировки» (Штатный метод)

Если вы ранее успешно оформили документ «Заказ на эмиссию кодов маркировки СУЗ» и получили марки (они имеют статус «Сгенерирован» или «Эмитирован» в регистре сведений Пул кодов маркировки), система позволяет сопоставить их автоматически.

Проанализируем пошагово, как это сделать:

  1. Откройте ваш документ «Маркировка товаров ИС МП».
  2. Перейдите на вкладку «Товары». Нажмите на гиперссылку «Подобрать и проверить маркированную продукцию» (в зависимости от релиза УПП она может выглядеть как кнопка со значком марки или ссылка над табличной частью).
  3. Перед вами откроется специализированное окно проверки кодов. В верхней части панели найдите кнопку «Заполнить» (или меню команд) и выберите пункт «Доступные коды маркировки» (или «Подобрать из пула»).
  4. Программа автоматически проанализирует регистр сведений Пул кодов маркировки, найдет свободные коды, эмитированные под этот GTIN и под данный заказ-основание, и перенесет их в список подобранных с зеленым статусом готовности.
  5. Нажмите кнопку «Завершить подбор». Скрытая табличная часть ШтрихкодыУпаковок автоматически заполнится легитимными кодами из пула.
  6. Проведите документ и отправьте данные в ИС МП.

---

Способ 2. Загрузка кодов маркировки из внешнего файла

Бывают ситуации, когда коды маркировки были выгружены напрямую из личного кабинета «Честного Знака» (например, в формате .txt или .csv) или переданы вам в текстовом виде, и в локальном пуле базы 1С они отсутствуют.

Выясним, как загрузить их в документ напрямую без сканирования:

  1. Подготовьте текстовый файл, в котором каждый код маркировки (полная строка DataMatrix с криптохвостом и разделителями, либо только код идентификации, в зависимости от требований текущего релиза вашей интеграции) расположен на новой строчке.
  2. В документе «Маркировка товаров ИС МП» откройте форму «Подобрать и проверить маркированную продукцию».
  3. Нажмите кнопку «Загрузить из файла» (значок папки со стрелкой или команда в меню формы подбора).
  4. Укажите путь к вашему файлу. Система считает строки, распознает структуру штрихкодов, автоматически сопоставит их с номенклатурными позициями в табличной части и заполнит необходимые регистры.
  5. Нажмите «Завершить подбор» и проведите документ.

---

Технические нюансы работы с пулом кодов в 1С:УПП

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

---

Программное решение для разработчиков (на случай сбоев конфигурации)

В устаревших или сильно доработанных базах 1С:УПП штатные механизмы распределения из пула кодов могут работать некорректно из-за накопленных ошибок в коде интеграции. Если вам необходимо программно привязать свободные коды из пула к документу маркировки, можно воспользоваться следующей методикой заполнения табличной части:


// Пример программного заполнения табличной части ШтрихкодыУпаковок из пула
Процедура ЗаполнитьШтрихкодыИзПула(ДокументОбъект) Экспорт
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |	ПулКодовМаркировки.КодМаркировки КАК КодМаркировки,
        |	ПулКодовМаркировки.Номенклатура КАК Номенклатура
        |ИЗ
        |	РегистрСведений.ПулКодовМаркировки КАК ПулКодовМаркировки
        |ГДЕ
        |	ПулКодовМаркировки.ДокументОснование = &ДокументОснование
        |	И ПулКодовМаркировки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыКодовМаркировки.Эмитирован)";
        
    Запрос.УстановитьПараметр("ДокументОснование", ДокументОбъект.ДокументОснование);
    РезультатЗапроса = Запрос.Выполнить();
    
    Если Не РезультатЗапроса.Пустой() Тогда
        Выборка = РезультатЗапроса.Выбрать();
        ДокументОбъект.ШтрихкодыУпаковок.Очистить();
        
        Пока Выборка.Следующий() Цикл
            НоваяСтрока = ДокументОбъект.ШтрихкодыУпаковок.Добавить();
            НоваяСтрока.Штрихкод = Выборка.КодМаркировки;
            НоваяСтрока.Номенклатура = Выборка.Номенклатура;
            // Заполнение дополнительных реквизитов упаковки в соответствии с вашей версией БИС
        КонецЦикла;
        
        ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    КонецЕсли;
    
КонецПроцедуры

Используя этот подход в виде внешней обработки, вы сможете быстро связать зависшие в пуле коды с нужным документом «Маркировка товаров ИС МП», успешно ввести продукцию в оборот в системе «Честный Знак» и избежать рутинного ручного труда и ошибок человеческого фактора. Если организация переходит на современный производственный учет, применяется перенос документов и остатков из 1С:УПП 1.3 в 1С:ERP 2.

← На главную