Почему 1С:Розница зависает при сканировании марки сигарет и не добавляет товар в чек?

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

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

В этой статье мы подробно разберем, почему возникает такое «молчаливое» зависание системы, и пошагово проанализируем все способы решения этой технической проблемы — от тестирования сканера штрихкодов до тонкой настройки карточек номенклатуры.

Причина 1. Проблема со скрытыми символами (разделителями GS1) и режимом сканера

Маркировка табачной продукции базируется на стандарте GS1 DataMatrix. Особенность этого штрихкода заключается в наличии внутри него скрытых служебных символов. К ним относятся признак символики FNC1 в начале кода и непечатные разделители групп данных GS (символ с ASCII-кодом 29).

Рассмотрим, что происходит, когда сканер штрихкодов работает в режиме эмуляции клавиатуры (USB-HID):

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

Как проверить сканер? Откроем обычный текстовый редактор (Блокнот) и отсканируем проблемную марку туда. Нормальный код должен содержать спецсимволы (или отрабатывать перенос строки в местах разделителей, если настроен суффикс). Если марка выводится сплошной строкой без спецсимволов, а «хорошая» марка содержит визуальные отличия, проблема кроется в настройках сканера.

Как решить проблему:

  1. Переведем сканер штрихкодов в режим эмуляции COM-порта (Virtual COM). Для этого найдем инструкцию к вашей модели сканера и считаем специальный управляющий штрихкод (обычно называется "USB OEM" или "USB Virtual COM").
  2. Установим на компьютере соответствующий драйвер виртуального COM-порта (для многих современных ОС Windows он устанавливается автоматически).
  3. В 1С перейдем в раздел Администрирование — Подключаемое оборудование, откроем настройки нашего сканера и изменим порт подключения с "Клавиатура" на соответствующий созданный виртуальный "COM-порт". В этом режиме драйвер 1С будет получать сырые данные напрямую из порта, включая все непечатные символы GS, и распознавание марки станет безошибочным.

Причина 2. Текущая раскладка клавиатуры кассира

Если перевести сканер в режим COM-порта по каким-то причинам невозможно, критически важной становится текущая языковая раскладка на кассовом компьютере в момент сканирования.

Проанализируем ситуацию: если на ПК включена русская раскладка (RU), то при сканировании в режиме клавиатуры латинские буквы, содержащиеся в криптохвосте DataMatrix-кода, автоматически заменяются на кириллические (например, "A" превращается в "Ф", "B" в "И"). Часть пачек, в кодах которых содержатся только цифры, будет пробиваться успешно. Но как только кассир попытается отсканировать пачку, в коде которой присутствуют латинские буквы, 1С не сможет распознать марку из-за искажения символов.

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

Причина 3. Сбой реквизита «Особенность учета» в карточке номенклатуры

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

Для корректной работы с табаком в карточке номенклатуры должен быть правильно заполнен реквизит Особенность учета. Если там пусто или выбрано иное значение, программа не понимает, что при сканировании штрихкода упаковки нужно запускать процедуру валидации марки.

Выясним, как проверить и исправить эту настройку:

  1. Откроем карточку проблемной номенклатуры сигарет.
  2. Проверим поле Особенность учета. Там должно быть строго установлено значение: Маркируемая табачная продукция (или "Табачная продукция" в зависимости от релиза).
  3. Если позиций много, воспользуемся обработкой группового изменения реквизитов. Для этого перейдем в меню Администрирование — Обслуживание — Корректировка данных — Групповое изменение реквизитов. Выберем объект "Номенклатура", отберем нужные позиции табака и массово установим реквизит ОсобенностьУчета в необходимое значение.

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


Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
    // Проверяем, относится ли товар к табачной продукции по виду номенклатуры
    Если Выборка.ВидНоменклатуры.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар 
       И Выборка.ВидНоменклатуры.ИспользоватьХарактеристики Тогда
        
        ОбъектНоменклатуры = Выборка.ПолучитьОбъект();
        // Устанавливаем верную особенность учета для маркировки
        ОбъектНоменклатуры.ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.МаркируемаяТабачнаяПродукция;
        
        Попытка
            ОбъектНоменклатуры.Записать();
            Сообщить("Успешно обновлен товар: " + ОбъектНоменклатуры.Наименование);
        Исключение
            Сообщить("Ошибка записи товара: " + ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
КонецЦикла;

Причина 4. Отсутствие зарегистрированных цен на товар

В РМК настроено жесткое правило: товар не может быть добавлен в чек, если на него не установлена розничная цена. Если для обычной номенклатуры система может выдать предупреждение "Не задана цена товара", то при потоковом сканировании DataMatrix-кодов табачной продукции алгоритм обработки ошибок может отработать некорректно. Система пытается найти цену, не находит её, прерывает обработку марки и тихо закрывает форму подбора.

Что нужно сделать:

  1. Убедимся, что на дату продажи по данной номенклатуре введен документ Установка цен номенклатуры.
  2. Проверим актуальность применения цен в магазине через отчет "Цены номенклатуры".

Причина 5. Дубликаты в регистре сведений «Штрихкоды упаковок товаров»

В процессе работы (например, при некорректном импорте накладных УПД или повторном сканировании блока сигарет) в базе данных могут задвоиться записи о штрихкодах упаковок.

Если один и тот же код маркировки или ассоциированный с ним потребительский штрихкод (EAN-13) привязан к нескольким разным карточкам номенклатуры (или разным характеристикам), система 1С сталкивается с логическим конфликтом. Программа "задумывается", пытаясь определить, какой именно товар добавить в чек, и в итоге сбрасывает транзакцию сканирования.

Как исправить:

  1. Перейдем в функции для технического специалиста (или через поиск в меню) в регистр сведений ШтрихкодыУпаковокТоваров (в некоторых релизах — "Штрихкоды номенклатуры").
  2. Выполним поиск по значению штрихкода проблемной пачки.
  3. Если обнаружим дублирующие записи для разных товаров, удалим неактуальные привязки, оставив строго одну уникальную запись для конкретной номенклатуры.

Причина 6. Технологический баг старого интерфейса РМК

В последних релизах 1С:Розница, начиная с версий 2.3.18 и ветки 3.0, разработчики активно развивают Новое РМК (управляемый интерфейс). В "Старом РМК" (обычные формы или старый вариант управляемого интерфейса) при интеграции с механизмами ГИС МТ "Честный Знак" и включении разрешительного режима могут возникать скрытые системные ошибки. Программа пытается в фоновом режиме инициализировать проверки, зависает из-за отсутствия ответа от внутренних библиотек и сбрасывает сканирование.

Решение: В настройках интеграции с ИС МП и настройках продаж рекомендуется переключиться на использование современного Нового РМК. Алгоритмы разбора кодов маркировки в нем оптимизированы, а обработка ошибок происходит корректно с выводом понятных пользователю диагностических сообщений на экран.

Резюмируем план диагностики для кассира и администратора:

Если пачка сигарет не бьется на кассе, выполним следующие действия по шагам:

  1. Проверим раскладку: Переключим раскладку клавиатуры компьютера на английский язык и попробуем отсканировать марку снова.
  2. Проверим в Блокноте: Откроем Блокнот и считаем марку туда. Если в коде отсутствуют разделители или спецсимволы — перенастроим сканер в режим COM-порта.
  3. Проверим карточку товара: Убедимся, что для номенклатуры установлена особенность учета "Маркируемая табачная продукция" и задана розничная цена.
  4. Проверим "Честный Знак": Отсканируем марку мобильным приложением "Честный Знак" на телефоне. Если приложение сообщает о нарушении структуры кода, значит, на производстве был допущен брак печати, и такую пачку необходимо списать или вернуть поставщику.
← На главную