После установки обновления конфигурации «1С:Розница» до версии 2.3.18.13 многие пользователи столкнулись с критической проблемой: при сканировании штрихкода весового товара в чеке ККМ система перестала его распознавать. Проблема проявляется в «старом» режиме Рабочего места кассира (РМК), при этом все настройки префиксов и кодов товаров (SKU) остаются корректными. Вместо добавления товара в чек, система может выдавать окно сопоставления номенклатуры или просто не находить товар.
Проанализируем ситуацию и разберем несколько проверенных способов решения этой ошибки, от официального исправления, выпущенного фирмой "1С", до временных обходных путей.
Самый правильный и надежный способ устранения ошибки — установка официального исправления от "1С". Разработчики оперативно отреагировали на сообщения о проблеме и выпустили специальный патч, который целенаправленно исправляет данный дефект в механизме обработки весовых штрихкодов.
Название патча: EF_00_00616704_2
Патчи (или исправления) — это небольшие обновления, которые устанавливаются поверх текущей версии конфигурации и исправляют конкретные, критически важные ошибки, не дожидаясь выхода следующего полноценного релиза. Рассмотрим по шагам, как его установить.
EF_00_00616704_2, выделите его и нажмите «Установить».Важно: Установка официального патча является предпочтительным решением, так как оно не требует изменения конфигурации и поддерживается разработчиком.
В ходе обсуждений выяснилось, что ошибка затрагивает исключительно «старый» (классический) интерфейс РМК. В то же время, новое РМК, доступное в последних версиях «1С:Розница», работает корректно и не подвержено этой проблеме. Переход на новый интерфейс может стать отличным решением, если установка патча по каким-либо причинам невозможна или откладывается.
Новое РМК обладает более современным интерфейсом и оптимизированными механизмами работы, включая обработку штрихкодов, что и позволило избежать проявления данной ошибки.
Для переключения на новое РМК выполните следующие действия:
Этот способ позволяет быстро восстановить работоспособность кассового узла без вмешательства в конфигурацию. При возникновении сопутствующих проблем с валидацией маркированной продукции на кассе может помочь обработка для оформления чеков ККМ без кода маркировки.
Если нет возможности немедленно установить патч или перейти на новое РМК, а проблему нужно решить здесь и сейчас, можно применить временное исправление на уровне кода. Этот способ требует доступа к конфигуратору и навыков программирования.
Суть исправления: необходимо перехватить вызов стандартной функции обработки штрихкода в форме документа ЧекККМ и для весовых товаров принудительно изменить параметры сканирования, чтобы задействовать старый, работающий механизм.
Для этого необходимо создать расширение конфигурации и добавить в него заимствованную форму документа ЧекККМ. В модуле этой формы следует разместить следующий код:
Модуль формы документа ЧекККМ, обработка РМКУправляемыйРежим:
&Вместо("ОбработатьВводШтрихкода")
Функция ПрИС_Штрихкод_ОбработатьВводШтрихкода(ДанныеШтрихкода, КэшированныеЗначения, ПараметрыСканирования, ДополнительныеПараметры)
// - если это весовой товар, то вызываем старый поиск по ШК
Если ТипЗнч(ДанныеШтрихкода) = Тип("Структура") Тогда
ШтрихКод = "";
Если ДанныеШтрихкода.Свойство("ФорматBase64") И ДанныеШтрихкода.ФорматBase64 Тогда
ШтрихКод = ШтрихкодированиеОбщегоНазначенияИСКлиентСервер.Base64ВШтрихкод(ДанныеШтрихкода.ШтрихКод);
ИначеЕсли ДанныеШтрихкода.Свойство("ШтрихКод") Тогда
ШтрихКод = ДанныеШтрихкода.ШтрихКод;
КонецЕсли;
// Проверяем префиксы весового товара ("21" или "22")
Если Лев(ШтрихКод, 2) = "21" ИЛИ Лев(ШтрихКод, 2) = "22" И ТипЗнч(ПараметрыСканирования) = Тип("Структура") И ПараметрыСканирования.Свойство("РасширеннаяВерсияГосИС") Тогда
// Отключаем параметр, который вызывает ошибку в данном релизе
ПараметрыСканирования.РасширеннаяВерсияГосИС = Ложь;
КонецЕсли;
КонецЕсли;
// Вызываем исходный обработчик с измененными (при необходимости) параметрами
Результат = ПродолжитьВызов(ДанныеШтрихкода, КэшированныеЗначения, ПараметрыСканирования, ДополнительныеПараметры);
Возврат Результат;
КонецФункции
Разберем логику кода:
&Вместо("ОбработатьВводШтрихкода") указывает, что наша функция будет выполняться вместо стандартной.Если Лев(ШтрихКод, 2) = "21" ИЛИ Лев(ШтрихКод, 2) = "22". Стандартные префиксы для весового товара — это 21, 22 и другие в диапазоне 20-29. Код проверяет, начинается ли штрихкод с одного из этих префиксов.ПараметрыСканирования.РасширеннаяВерсияГосИС в значение Ложь. По всей видимости, именно новый механизм обработки, связанный с этим параметром, содержит ошибку в релизе 2.3.18.13.ПродолжитьВызов(...) мы передаем управление стандартному обработчику, но уже с исправленными параметрами.После применения этого кода в расширении и его подключения к базе данных, сканирование весового товара в старом РМК снова заработает. Не забудьте отключить или удалить это расширение после установки официального патча или обновления до следующего релиза, чтобы избежать возможных конфликтов в будущем. Для повышения стабильности кассового узла и предотвращения зависаний при печати документов также будет полезно использовать решение для ускорения пробития чеков ККТ.