При торговле маркированными товарами (шинами, обувью, одеждой, табаком или парфюмерией) в программе 1С:Розница 2.3 пользователи часто сталкиваются со следующей проблемой: кассир последовательно сканирует несколько единиц одного и того же маркированного товара, позиции без проблем добавляются в чек, но при фискализации на кассе ККТ (например, популярной модели АТОЛ 30Ф) в систему маркировки «Честный Знак» уходят не все коды. В личном кабинете «Честного Знака» списывается только часть проданного товара, а в логах обмена регистрируются дубликаты одного и того же кода маркировки. Выясним, почему возникает этот сбой и как его устранить по шагам.
Прежде чем приступать к изменению настроек оборудования, проанализируем ситуацию и определим, на каком именно этапе теряются или дублируются коды маркировки — в самой программе 1С или уже при передаче данных в драйвер кассы АТОЛ.
Для этого мы воспользуемся встроенными механизмами проверки фискальных операций:
РегистрСведений.ФискальныеОперации. Нам нужно проанализировать, какие именно коды маркировки зафиксированы в строках XML-пакета, отправленного на кассу.Если в скрытой табличной части чека коды уникальны, а в регистре ФискальныеОперации или в логах драйвера ККТ АТОЛ фигурируют одинаковые (продублированные) коды маркировки, значит, сбой происходит в момент подготовки XML-пакета для отправки на ККТ средствами интеграционной библиотеки 1С. Для детальной проверки структуры записей мы можем воспользоваться следующей консолью запросов в режиме «1С:Предприятие»:
ВЫБРАТЬ
ФискальныеОперации.Ссылка КАК ЧекККМ,
ФискальныеОперации.Период КАК ДатаОперации,
ФискальныеОперации.Товар КАК Номенклатура,
ФискальныеОперации.КодМаркировки КАК ЗаписанныйКодМаркировки
ИЗ
РегистрСведений.ФискальныеОперации КАК ФискальныеОперации
ГДЕ
ФискальныеОперации.Период МЕЖДУ &НачалоПериода И &КонецПериода
И ФискальныеОперации.КодМаркировки ПОДОБНО "%"
Если в результате выполнения запроса мы видим, что для разных строк одного документа записан один и тот же код маркировки, перейдем к устранению основных причин этой системной ошибки.
Самая распространенная техническая причина искажения и дублирования кодов при быстром последовательном сканировании — работа сканера (например, АТОЛ SB2109) в режиме эмуляции клавиатуры (Keyboard Wedge / USB-HID).
При сканировании маркированного товара в режиме клавиатуры сканер передает символы кода в буфер операционной системы с огромной скоростью, имитируя нажатие клавиш. При этом операционная система или платформа 1С не всегда успевают обработать входящий поток данных без потерь. Теряются управляющие символы, в частности, обязательный символ-разделитель GS1 Group Separator (ASCII-код 29). Теряя разделитель, 1С не может корректно распарсить структуру криптохвоста новой марки. Программа считает, что сканирование прошло со сбоем, и берет из кэша памяти предыдущий успешно расшифрованный код маркировки, подставляя его в новую строку чека. Чтобы решить проблему без изменения режима работы сканера, можно использовать расширение для автоматического добавления символов GS1 в коды маркировки.
Рассмотрим, как правильно настроить сканер:
COM3.При работе через COM-порт данные передаются единым пакетом, что исключает потерю спецсимволов и гарантирует мгновенную и безошибочную обработку каждой уникальной марки.
В настройках параметров работы кассира в конфигурациях 1С:Розница 2.3 прошлых релизов (таких как 2.3.7.22) содержался критический баг, связанный с опцией группировки строк.
Проанализируем ситуацию: в настройках РМК включен флаг «Объединять позиции с одинаковым товаром». Когда кассир сканирует 4 одинаковые шины, программа визуально объединяет их в одну строку на экране со значением количества «4 шт.». Однако в этот момент внутри платформы формируется массив кодов маркировки. Из-за ошибки в коде формирования XML-пакета для ККТ драйвер получал команду пробить 4 единицы товара, но сопоставление марок отрабатывало некорректно. В результате на кассу отправлялся пакет, где ко всем 4 единицам товара был прикреплен только первый отсканированный код маркировки.
Фискальный накопитель кассы ККТ АТОЛ, распознавая дублирующие коды в рамках одного чека, отбрасывал их в соответствии с требованиями ФФД 1.2. Из-за этого в систему «Честный Знак» уходили сведения только об одной марке из четырех.
Чтобы решить эту проблему, выполните следующие действия:
Теперь при сканировании маркированной продукции каждая единица будет добавляться в чек ККМ отдельной строкой со своим индивидуальным кодом маркировки. Это гарантирует корректную генерацию XML-структуры чека и правильную отправку всех кодов в ОФД и «Честный Знак».
В 1С:Розница 2.3 старый интерфейс кассира имеет архитектурные ограничения при работе с табличными частями документов и регистром РегистрСведений.ШтрихкодыУпаковокТоваров. Временные таблицы кэша марок в старом РМК при быстром сканировании могут очищаться некорректно, что и провоцирует «залипание» старых кодов.
Разработчики фирмы «1С» полностью переписали логику обработки маркированных товаров в «Новом РМК». В нем алгоритмы работы с кэшем оптимизированы под требования разрешительного режима и ФФД 1.2. Рекомендуется перевести торговую точку на работу в новом интерфейсе РМК, предварительно включив его использование в настройках интеграции в администрировании программы.
Еще один важный аспект взаимодействия 1С и кассы — это версии драйверов. Проблема часто возникает, если на компьютере установлен современный драйвер АТОЛ ДТО 10 (например, версии 10.10.x.x), а внутри конфигурации 1С Розница используется старая интеграционная компонента.
При несовпадении версий драйвера и компоненты XML-схема передачи кодов маркировки обрабатывается некорректно, что приводит к утере тега 1162 (или тегов 2108 / 2007 для ФФД 1.2) для части позиций.
Рекомендуется выполнить комплексное обновление системы:
В редких случаях дублирование кодов при сканировании вызывается сбоями локального кэша платформы 1С на рабочем месте кассира (особенно при работе в файловом режиме). Чтобы исключить технические проблемы СУБД, закройте программу и полностью удалите временные папки кэша пользователя из директории %userprofile%\AppData\Local\1C\1Cv8 и %userprofile%\AppData\Roaming\1C\1Cv8, либо просто удалите базу из списка запуска 1С и добавьте ее заново под тем же путем.