Как исправить ошибку «уже добавлена в документ» при сканировании марки в 1С:Розница 2.3.3.19?

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

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

В этой статье мы подробно разберем причины возникновения этой ошибки и рассмотрим по шагам все возможные способы её устранения: от быстрой настройки торгового оборудования до программного решения проблемы.

---

Причина 1. Системный баг релиза 2.3.3.19 (Ошибочная логика сопоставления)

Проанализируем логику работы Библиотеки интеграции с государственной информационной системой маркировки (ГосИС), встроенной в релиз 2.3.3.19. В этой версии разработчики допустили ошибку в алгоритме обработки последовательного сканирования. При необходимости отключить лишние проверки по GTIN можно использовать расширение для отключения уточнения упаковок по GTIN.

Выясним причину сбоя:

  1. Кассир сканирует обычный линейный штрихкод EAN-13 на упаковке товара.
  2. РМК определяет, что данный товар является маркированным, и открывает модальное окно с запросом кода маркировки.
  3. Кассир сканирует квадратный код DataMatrix.
  4. В этот момент система считывает из кода DataMatrix входящую в него группу данных GTIN (которая по сути дублирует EAN-13) и пытается повторно сопоставить её с номенклатурой. Из-за ошибки в коде конфигурации программа воспринимает это считывание как вторую попытку добавить тот же самый товар в ту же строку чека. Результат — ложное срабатывание защиты от дублей, вывод ошибки «уже добавлена в документ» и полная очистка строки.

Как решить эту проблему без программирования и обновления баз:

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

---

Причина 2. Зависание кода маркировки в кэше сессии РМК

Рассмотрим ситуацию, когда код маркировки физически уже был задействован в системе, но визуально в текущем чеке кассир его не видит. Такое происходит из-за некорректного очищения кэша в старом движке РМК.

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

Разберем по шагам, как очистить зависшие данные:

  1. Попробуйте полностью закрыть форму РМК, выйти из режима кассира и зайти в него заново. Это принудительно очистит оперативную память текущего сеанса.
  2. Если это не помогло, необходимо проверить регистр сведений, где хранятся штрихкоды упаковок. Для диагностики и очистки можно использовать следующий программный код в обработке или через групповую обработку данных:

// Пример поиска зависшей марки в регистре сведений
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ШтрихкодыУпаковок.Номенклатура КАК Номенклатура,
    |	ШтрихкодыУпаковок.ЗначениеШтрихкода КАК ЗначениеШтрихкода
    |ИЗ
    |	РегистрСведений.ШтрихкодыУпаковок КАК ШтрихкодыУпаковок
    |ГДЕ
    |	ШтрихкодыУпаковок.ЗначениеШтрихкода ПОДОБНО &СчитанныйКод";

Запрос.УстановитьПараметр("СчитанныйКод", "%" + СокрЛП(СчитанныйКодМаркировки) + "%");
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
    // Запись найдена, её необходимо удалить или перепривязать
КонецЕсли;

Также рекомендуется воспользоваться встроенной обработкой «Групповое изменение реквизитов» для проверки документов вида ЧекККМ на предмет содержания дублирующейся марки в табличных частях отложенных чеков за текущую смену.

---

Причина 3. Некорректные настройки 2D-сканера штрихкодов

Проанализируем аппаратную сторону вопроса. Очень часто причиной дублирования сигналов становится работа сканера штрихкода в режиме эмуляции клавиатуры (KB-интерфейс).

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

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

  1. Переведите ваш 2D-сканер в режим работы эмуляции COM-порта (VCOM). Для этого найдите в руководстве пользователя вашего сканера специальный настроечный штрихкод (обычно он называется "USB OEM" или "USB Virtual COM") и отсканируйте его.
  2. Установите на рабочем компьютере виртуальный драйвер COM-порта от производителя вашего сканера (например, Honeywell, Zebra или Datalogic).
  3. Перейдите в 1С в раздел Администрирование -> Подключаемое оборудование.
  4. Откройте карточку настроек вашего сканера штрихкодов, смените порт с "Клавиатура" на соответствующий виртуальный COM-порт (например, COM3) и выберите драйвер устройства "1С:Сканеры штрихкода".
  5. Выполните тест устройства. При корректной настройке сканер будет передавать данные в 1С напрямую через порт без использования префиксов эмуляции клавиатуры, что полностью исключит проблему «двойного клика».

---

Причина 4. Дубли штрихкодов EAN-13 в справочнике «Номенклатура»

Если один и тот же штрихкод EAN-13 привязан к разным карточкам номенклатуры или к разным характеристикам одного и того же товара, алгоритм интеграции с ГосИС начинает сбоить. При сканировании кода маркировки система пытается сопоставить извлеченный из него GTIN с базой штрихкодов. Обнаружив несколько совпадений, программа инициирует внутренний конфликт уникальности табличной части и выдает ошибку о дублировании. Для предварительного сопоставления марок с позициями номенклатуры пригодится обработка для сопоставления кодов маркировки табачной продукции.

Для исправления ситуации выполните следующие действия:

  1. Перейдите в меню НСИ -> Номенклатура.
  2. Откройте отчет по дублирующимся штрихкодам или проверьте их вручную через регистр сведений ШтрихкодыНоменклатуры.
  3. Убедитесь, что для каждой товарной позиции (или конкретной характеристики, если учет ведется в разрезе характеристик) задан строго уникальный штрихкод.

---

Причина 5. Кардинальное решение — обновление конфигурации

Если все вышеперечисленные временные меры не приносят стабильного результата, необходимо устранить первопричину сбоя — программную ошибку релиза 2.3.3.19. Разработчики оперативно исправили некорректную обработку кодов маркировки в последующих обновлениях линейки 1С:Розница 2.3 (а также при переходе на актуальные версии линейки 2.2 и 3.0).

Рекомендуется обновить конфигурацию до актуального релиза. После обновления Библиотека интеграции с ГосИС начнет корректно разбирать структуру DataMatrix, и ошибка сопоставления дублей в РМК исчезнет навсегда. При обслуживании нескольких информационных баз процедуру можно упростить с помощью программы для автоматического обновления баз 1С.

← На главную