Разберем частую и довольно неприятную ситуацию при работе с 1С:Управление торговлей 11: вы подключаете сканер штрих-кодов, он корректно считывает код при заведении новой карточки товара, но при попытке продать этот товар (в рабочем месте кассира или документе реализации), а особенно товар с кодом маркировки, программа его не находит. Более того, в окне ошибки или в строке поиска отображается совершенно другой, искаженный штрих-код. Проанализируем причины такого поведения системы и по шагам рассмотрим эффективные методы решения этой проблемы.
Самая распространенная причина искажения штрих-кодов в 1С:УТ 11 кроется в механизмах обработки весовых товаров. Посмотрим, как это работает: если штрих-код начинается с цифры 2 (особенно диапазоны 22-29), система автоматически может расценивать его как внутренний штрих-код весового товара. В этом случае программа не ищет полное совпадение всего набора цифр, а пытается разобрать его на составные части: префикс, код (PLU) товара и его вес.
Рассмотрим пример того, как программа видит такой код: стандартный формат весового товара выглядит примерно как 2_000100000_. Если вы отсканировали обычный штучный товар, чей заводской код случайно начинается на 2, программа отсечет часть цифр, интерпретируя их как вес (например, 0 кг 0 гр), а оставшуюся часть будет искать как артикул или внутренний код, которого, разумеется, не существует.
Решим эту задачу с помощью корректировки настроек конфигурации:
Администрирование.Номенклатура.Настройка префиксов внутренних ШК (в зависимости от релиза УТ 11 расположение может немного отличаться, иногда это находится в разделе настроек подключаемого оборудования или продаж).Если в вашем релизе УТ 11 логика распознавания кодов, начинающихся на «2», жестко зашита в программном модуле и стандартными настройками не отключается, вам придется либо избегать использования таких штрих-кодов для штучных товаров, либо привлекать программиста для корректировки модуля обработки подключаемого оборудования.
Рассмотрим следующую частую проблему: сканер по умолчанию работает в режиме эмуляции клавиатуры (разрыв клавиатуры). Это означает, что при сканировании драйвер просто имитирует очень быстрое нажатие клавиш. Если ваша база 1С находится на удаленном сервере и вы работаете через удаленный рабочий стол (RDP), сетевые микрозадержки могут разбивать передаваемый штрих-код на куски. В результате 1С считывает только половину символов или вставляет случайные цифры. Альтернативой физическим устройствам могут служить мобильные приложения, превращающие смартфон в полноценный терминал сбора данных.
Разберем по шагам, как перевести сканер в более надежный режим:
COM3.Администрирование -> Подключаемое оборудование -> Сканеры штрихкода.Этот режим позволяет передавать штрих-код в систему цельным пакетом, исключая любые потери символов из-за сетевых задержек.
Проанализируем еще один побочный эффект работы сканера в режиме "в разрыв клавиатуры". Поскольку сканер имитирует нажатие кнопок, он полностью зависит от текущего состояния операционной системы. Если в момент сканирования в Windows активна русская раскладка клавиатуры, а в штрих-коде присутствуют английские буквы, они автоматически "переведутся" в кириллицу.
Аналогично влияет нажатая клавиша CapsLock: все символы сменят регистр. Из-за этого строка искажается, и программа выдает ошибку, что штрих-код не найден. Перевод сканера в режим COM-порта (описанный выше) полностью решает и эту проблему, так как данные передаются в сыром виде напрямую в драйвер 1С, минуя системную обработку ввода с клавиатуры.
Выясним причину, по которой 1С может вообще не реагировать на отсканированный код или обрабатывать его не до конца. Для того чтобы программа поняла, что передача штрих-кода завершена, сканер должен в конце отправлять специальный невидимый символ (суффикс завершения). Обычно это команда возврата каретки — Enter или CR (в настройках 1С отображается как код #13).
Если суффикс не запрограммирован в самом сканере, 1С будет воспринимать введенные цифры просто как текст, набранный в строке поиска, и ждать дальнейшего ввода. Обязательно проверьте по мануалу сканера, включен ли суффикс Enter.
Также обратим внимание на сложную маркировку (например, коды DataMatrix). В таких штрих-кодах содержатся служебные разделители GS (код #029). Сканеры в режиме клавиатуры часто "съедают" эти невидимые символы, из-за чего 1С считает код маркировки недействительным. Решение аналогично: использование режима USB-COM и актуального драйвера, например 1С:Сканер штрихкода (Native).
В завершение разберем, как правильно локализовать проблему, не ломая рабочую базу. Не стоит тестировать сканер сразу в справочнике "Номенклатура", в интерфейсе кассира или в форме подбора номенклатуры, так как там на результат влияют алгоритмы поиска 1С.
Сделаем следующее:
Подключаемое оборудование.Настроить.Тест устройства (или Тест подключения).В окне лога вы увидите "сырую" строку данных, которую 1С получает от драйвера. Сравним то, что вывелось на экране, с тем, что напечатано на этикетке. Если в окне теста не хватает цифр в начале (обрезаются нули), присутствуют лишние префиксы, или вместо английских букв выводятся русские — значит, проблема кроется в аппаратных настройках самого сканера (неверно считан управляющий код, не тот режим). Если же в окне теста штрих-код отображается идеально (ровно так, как на этикетке), но в самой программе товар не ищется — возвращаемся к первому пункту нашей инструкции. Иногда стандартная логика поиска не предусмотрена в некоторых формах, например, в обработке подбора товаров, и ее приходится добавлять расширениями.