В процессе автоматизации розничной или оптовой торговли часто возникает ситуация, когда для внутреннего учета продукции присваиваются собственные штрих-коды стандарта EAN-13. Однако при внедрении этой системы вы можете столкнуться с крайне неприятным поведением оборудования: при первом сканировании штри-кода система выдает ошибку или просто "зависает", а при повторном сканировании того же самого штрих-кода товар успешно находится в базе и добавляется в документ. При этом любые сторонние штрих-коды (например, заводские штрих-коды производителей) считываются с первого раза без каких-либо нареканий.
В этой статье мы подробно разберем, почему возникает этот сбой, проанализируем внутренние механизмы работы платформы 1С с префиксами штрих-кодирования, выясним причины зависания драйвера торгового оборудования и рассмотрим пошаговые методы устранения данной проблемы.
Для того чтобы понять суть проблемы, нам необходимо обратиться к международным стандартам формирования штрих-кодов EAN-13 и логике их обработки внутри конфигураций 1С. Диапазон штрих-кодов, начинающийся с цифры 2 (от 20 до 29), зарезервирован для внутреннего использования предприятиями. Это означает, что данные коды не могут использоваться для маркировки товаров во внешней торговой сети, но идеально подходят для внутреннего учета на складе или в магазине.
В типовых конфигурациях 1С по умолчанию настроены шаблоны (префиксы) для работы с весовыми и штучными фасованными товарами. Как правило, для них выделяются префиксы из того же диапазона (например, 21, 22, 23 и так далее). Когда вы присваиваете товару собственный штрих-код, начинающийся, к примеру, на 21, в системе происходит внутренний конфликт алгоритмов:
ШтрихкодыНоменклатуры. Так как код ищется как простая текстовая строка, товар успешно находится и добавляется в форму.При анализе подобных сбоев администраторы часто замечают, что после первого "ошибочного" сканирования в настройках торгового оборудования 1С статус драйвера сканера меняется на «Версия не определена», а стабильная работа восстанавливается только после полного перезапуска сеанса 1С.
Выясним причину этого поведения. При использовании встроенных компонент (например, 1С:Сканер штрихкода или устаревших COM-библиотек типа ScanOpos.dll) любое необработанное исключение в коде конфигурации в момент обработки внешнего события приводит к прерыванию связи между платформой и внешней компонентой. COM-объект или NativeApi-библиотека блокируется в памяти, и платформа теряет к ней доступ в текущей сессии. Перезапуск конфигурации принудительно выгружает зависшие библиотеки и инициализирует подключение сканера заново.
Основное решение проблемы заключается в устранении конфликта префиксов в настройках вашей базы данных 1С. Если система не дает вам интерактивно удалить или изменить настройку префикса весового товара из-за ограничений интерфейса или связанных данных, рассмотрим три эффективных способа решения этой задачи.
Самый простой и безопасный способ, не требующий написания программного кода. Если вам не удается просто удалить строку с конфликтующим префиксом (например, 21 или 22), мы можем перенастроить ее на диапазон, который гарантированно никогда не будет использоваться в вашей организации.
Для этого выполните следующие действия:
Если настройки префиксов хранятся в справочниках или константах, доступ к которым напрямую ограничен интерфейсом, мы можем воспользоваться стандартным инструментом администратора:
ПравилаОбменаСПодключаемымОборудованием).В некоторых случаях настройки жестко прописываются в регистры сведений, связанные с кодами PLU или весовым оборудованием. В такой ситуации мы можем написать простую внешнюю обработку, которая принудительно очистит мешающие записи. Рассмотрим пример программного кода, который можно выполнить в режиме "1С:Предприятие" через обработку "Групповая обработка справочников и документов" или через консоль кода:
// Создаем набор записей для регистра настроек штрихкодирования
НаборЗаписей = РегистрыСведений.НастройкиШтрихкодирования.СоздатьНаборЗаписей();
// Если требуется удалить конкретную настройку префикса, устанавливаем отбор
НаборЗаписей.Отбор.Префикс.Установить("21");
// Записываем пустой набор записей, тем самым удаляя конфликтующую настройку из базы данных
НаборЗаписей.Записать();
Сообщить("Конфликтующий префикс успешно удален из настроек системы!");
После выполнения этого кода обязательно выполните полную перезагрузку программы, чтобы очистить кэш торгового оборудования и инициализировать драйвер сканера заново.
Помимо программных настроек в самой 1С, стабильность считывания штрих-кодов напрямую зависит от параметров физического подключения сканера к рабочему месту. Для популярных моделей сканеров, таких как Symbol LS1203, проанализируем две важные рекомендации:
Таким образом, планомерно проверив настройки префиксов в конфигурации 1С и скорректировав параметры работы самого сканера, мы полностью решим проблему повторного сканирования и обеспечим быструю и бесперебойную работу пользователей при внутреннем учете продукции.