Почему 1С:Розница 2.3.6.27 не видит штрихкоды EAN8 в РМК и как это исправить

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

В работе с конфигурацией 1С:Розница 2.3.6.27 (и смежных релизах) пользователи часто сталкиваются со странным поведением системы: товар прекрасно отображается в справочнике номенклатуры, его штрихкод виден в регистрах, однако при попытке продать этот товар через рабочее место кассира (РМК) система выдает ошибку "Товар не найден". Особенно часто это проявляется в распределенных информационных базах (РИБ) и касается специфических форматов, таких как EAN8.

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

Причина 1: Сбой индекса полнотекстового поиска (ППД)

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

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

  1. Перейдем в раздел Администрирование — Поддержка и обслуживание.
  2. Найдем гиперссылку Управление полнотекстовым поиском.
  3. Проверим статус индекса. Если указано, что требуется обновление, нажмем кнопку Обновить индекс.
  4. В некоторых случаях помогает только полная очистка: нажмем Очистить индекс, а затем запустим процесс Создать индекс заново.

После завершения переиндексации обязательно проверим поиск в РМК. Если товар начал находиться, значит, проблема заключалась в механизме кэширования поисковых данных.

Причина 2: Специфика обработки формата EAN8 и ведущие нули

Проанализируем ситуацию, когда штрихкоды EAN13 считываются корректно, а EAN8 игнорируются. Это связано с алгоритмами нормализации строки, которые применяются в коде РМК. В релизе 2.3.6.27 механизмы обработки ввода со сканера стали более строго валидировать длину входящей последовательности символов.

Иногда система пытается привести любой короткий код к формату EAN13, дополняя его ведущими нулями (например, превращая "12345670" в "0000012345670"). Если в регистре Штрихкоды запись хранится без этих нулей, сопоставление не сработает. Рассмотрим программный аспект: в общих модулях, отвечающих за работу с торговым оборудованием (например, МенеджерОборудованияВызовСервера), функции поиска могут иметь разные ветки исполнения для ручного ввода и для события сканера.

Почему помогает перезапись штрихкода вручную? При открытии формы номенклатуры и повторном сохранении штрихкода (удаление и создание заново) срабатывает обработчик события ПриЗаписи, который нормализует данные и записывает их в регистр в том виде, который текущий релиз конфигурации считает эталонным. Это "проталкивает" данные в индекс поиска и обновляет внутренние идентификаторы.

Причина 3: Настройки профиля РМК и "Упрощенный поиск"

Проверим настройки самого рабочего места. В "Рознице 2.3" появились Профили РМК, которые позволяют гибко настраивать поведение интерфейса. Посмотрим на параметры поиска:

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

Для диагностики этого момента воспользуемся тестом подключаемого оборудования. Перейдем в Администрирование — Подключаемое оборудование, выберем сканер и нажмем Тест устройства. Отсканируем проблемный EAN8. Если в поле "Результат" мы видим лишние символы или пробелы, необходимо перенастроить сам сканер или параметры его драйвера в 1С.

Причина 4: Конфликт кэша данных на узлах РИБ

В распределенных базах данных часто возникает ситуация "зависания" локального кэша платформы. Даже если обмен данными прошел успешно и в регистре сведений Штрихкоды появилась нужная запись, программный код может обращаться к устаревшим данным, хранящимся в сеансе пользователя.

Разберем шаги по очистке кэша для исправления этой проблемы:

  1. Завершим работу всех пользователей в базе на проблемном узле.
  2. Самый надежный способ — удалить базу из списка в окне запуска 1С и добавить её заново. При этом папка с временными файлами (кэшем) будет создана с нуля.
  3. Альтернативно можно использовать ключ запуска /ClearCache в дополнительных параметрах запуска информационной базы.

Технический анализ: работа с отладчиком

Если вышеперечисленные методы не помогли, нам, как программистам, необходимо локализовать место, где "теряется" штрихкод. Рассмотрим, какие методы следует проанализировать в конфигураторе.

Основная точка входа при сканировании в РМК — это процедура обработки внешнего события. Нам нужно найти место, где вызывается поиск номенклатуры. Обычно это функции, использующие РегистрыСведений.Штрихкоды.НайтиПоШтрихкоду() или специализированные методы в общем модуле ШтрихкодыУзловСервер.

Посмотрим на пример логики, которую можно проверить в отладке:


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

Если в консоли запросов этот код находит товар, а в РМК — нет, значит, проблема в надстройках над поиском (например, в расширениях или в использовании индекса ППД вместо прямого запроса к таблице). Также проанализируем тип данных переменной СчитанныйШтрихкод. В некоторых релизах некорректно обрабатываются типы Строка и наличие в них невидимых символов (символов переноса строки CR/LF).

Рекомендации по исправлению

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

  1. Массовая перезапись: Если товаров немного, попробуйте просто пересохранить штрихкоды. Это самый быстрый "костыль", который часто решает проблему мгновенно.
  2. Обновление ППД: Обязательно выполните полную переиндексацию полнотекстового поиска. В 90% случаев в новых интерфейсах РМК проблема кроется именно здесь.
  3. Проверка длины кода: Убедитесь, что сканер не добавляет лишних нулей или символов к EAN8.
  4. Обновление конфигурации: Релиз 2.3.6.27 имел ряд известных ошибок в интерфейсе РМК. Если есть возможность, рекомендуется обновиться до более стабильных версий ветки 2.3.10 и выше, где алгоритмы поиска были оптимизированы.

Следование этим шагам позволит вам восстановить процесс продаж и избежать простоев на кассовых узлах.

← На главную