Как исправить ошибку «Отсутствует полный код маркировки» в 1С:Розница и УТ

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

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

Поймем природу ошибки: сканер или база данных?

Первым делом нам необходимо выяснить, на каком этапе происходит сбой. Процесс попадания кода в программу состоит из двух ключевых стадий:

  1. Физическое считывание: Сканер считывает DataMatrix-код и передает последовательность символов в драйвер оборудования.
  2. Логическая обработка в 1С: Программа получает строку, распознает в ней идентификаторы применения (AI), проверяет наличие «криптохвоста» и ищет информацию о коде в своих внутренних реестрах.

Если ошибка возникает только в 1С, а сторонние утилиты (например, блокнот или специализированные тестовые программы) показывают полную строку кода с разделителями, значит, проблема кроется в настройках программы или накопленных «битых» данных.

Проверяем физическую передачу данных

Для диагностики сканера, работающего в режиме COM-порта, рекомендуется использовать специализированные утилиты для мониторинга портов. Мы должны убедиться, что сканер передает спецсимвол GS (ASCII 29), который разделяет группы данных в коде маркировки. Если сканер настроен в режиме клавиатуры (HID), этот символ часто теряется или подменяется, что и приводит к обрезке кода.

Рассмотрим структуру кода маркировки для моторных масел. Он должен содержать:

Если сканер в режиме эмуляции клавиатуры настроен неверно, 1С получает «кашу» из символов, которую не может интерпретировать как полный код маркировки.

Главный виновник: Регистр «Пул кодов маркировки СУЗ»

Проанализируем внутреннюю механику 1С. В конфигурациях «Розница 2.3», «Управление торговлей 11» и «ERP» существует технический регистр сведений — Пул кодов маркировки СУЗ. Рассмотрим подробнее, зачем он нужен.

Этот регистр выполняет роль кэша. Когда вы сканируете марку, система обращается к нему, чтобы проверить, не получала ли она полные данные об этом коде ранее. Это ускоряет работу, избавляя программу от постоянных запросов к серверу «Честного Знака» (ГИС МТ). Однако здесь и затаилась ловушка.

Как происходит порча данных:

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

Пошаговая инструкция по исправлению

Чтобы «победить» ошибку, нам нужно действовать комплексно: очистить кэш и перенастроить оборудование.

Шаг 1. Очистка регистра в 1С

Выясним, есть ли в вашей базе некорректные записи. Для этого выполним следующие действия:

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

Шаг 2. Настройка сканера в Native COM

Чтобы ситуация не повторилась, переведем сканер (например, Atol SB2108 Plus) в режим Native COM. Это единственный надежный способ работы с маркировкой. Разберем по шагам:

  1. Найдем в инструкции к сканеру настроечный штрихкод «USB COM» (или «CDC-ACM») и считаем его.
  2. В диспетчере устройств Windows должен появиться новый виртуальный COM-порт. Если устройство отображается с восклицательным знаком, установите драйверы с сайта производителя.
  3. В 1С зайдем в Администрирование — Подключаемое оборудование.
  4. Откроем настройки сканера и выберем соответствующий COM-порт.
  5. В поле «Символ GS» попробуйте установить значение NONE или убедитесь, что драйвер 1С (NativeApi) корректно перехватывает разделители.

Шаг 3. Тонкая настройка драйвера 1С

Посмотрим на настройки драйвера оборудования. В современных релизах 1С используется библиотека 1С:Сканеры штрихкода (NativeApi). Убедитесь, что версия драйвера актуальна. Нередко в распределенных информационных базах (РИБ) возникает ситуация, когда на центральном узле компонента обновлена, а на периферийной кассе осталась старой. Это может приводить к тому, что на одной точке всё работает, а на другой — нет.

Особенности категории «Моторные масла»

Проанализируем специфику товара. Коды маркировки на канистрах масла часто имеют большую плотность печати и могут быть длиннее, чем на сигаретных пачках. Для корректной работы убедитесь, что:

Резюме

Ошибка «Отсутствует полный код маркировки» — это в 90% случаев проблема «грязного» кэша в базе данных 1С. После того как мы очистили регистр Пул кодов маркировки СУЗ и обеспечили прямую передачу данных через COM-порт, программа начнет корректно обрабатывать каждую марку. Помните: использование сканера в режиме клавиатуры при работе с маркировкой — это мина замедленного действия, которая рано или поздно приведет к блокировке продаж из-за некорректных записей в регистрах.

← На главную