Ситуация, когда сканер штрихкодов успешно проходит внутренние тесты драйвера, но при этом "отказывается" вносить данные непосредственно в табличную часть документа 1С, является классической проблемой для конфигураций на обычных формах, таких как Управление торговлей 10.3. Это особенно актуально при работе в терминальном режиме (через RDP) или при использовании устаревших моделей оборудования, например, марки Symbol (Zebra).
В данной статье мы подробно разберем, почему возникает этот программный разрыв, проанализируем цепочку передачи события от сканера к платформе 1С и найдем оптимальное решение проблемы.
Прежде чем переходить к глубоким техническим настройкам драйверов, проанализируем базовые ограничения прав доступа. В 1С:УТ 10.3 существует механизм дополнительных прав, который может блокировать программное изменение документа, даже если визуально кнопка "Добавить" доступна.
Выполним следующие шаги для проверки:
Если с правами всё в порядке, значит проблема кроется в механизме инициализации торгового оборудования.
Рассмотрим ситуацию, когда сканер физически подключен через USB, но определяется системой по-разному. Существует два основных режима:
ВнешнееСобытие.Выясним причину, почему в окне теста данные отображаются, а в документе — нет. Окно теста захватывает устройство монопольно. Когда же открывается форма документа, 1С должна заново инициализировать сканер. Если в этот момент порт занят другой программой или зависшей сессией, подключение клиента не произойдет.
Для корректной работы драйвера ScanOPOS крайне важно, чтобы настройки в самой 1С совпадали с "железными" настройками сканера. Проанализируем значение суффикса. Обычно это символ перевода строки (LF — код 10) или возврата каретки (CR — код 13).
Если сканер настроен на передачу суффикса LF, а в 1С указано CR, драйвер будет бесконечно ждать завершающего символа и не передаст данные в программу. Проверьте в окне теста, какие непечатные символы приходят вместе со штрихкодом. Если вы видите символы типа #10 или #13, убедитесь, что они корректно прописаны в настройках торгового оборудования в 1С.
Посмотрим на ситуацию с точки зрения программиста. Чтобы понять, почему событие не доходит до документа, нужно проверить момент открытия формы. Разберем работу процедуры ПриОткрытии в типовых документах УТ 10.3.
Проанализируем код, отвечающий за подключение оборудования:
Процедура ПриОткрытии()
// Стандартный механизм инициализации торгового оборудования
Если ПолучитьСерверТО() <> Неопределено Тогда
Результат = ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
Если Результат <> Перечисления.ТООшибки.ПустаяСсылка Тогда
Сообщить("Ошибка подключения сканера: " + ТекстОшибки(Результат));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Если отладчик при сканировании не заходит в процедуру ВнешнееСобытие, значит метод ПодключитьКлиента(ЭтаФорма) не сработал успешно. Причиной может быть поврежденный кэш метаданных пользователя. Попробуйте полностью очистить папки Local и Roaming в профиле пользователя Windows, чтобы 1С заново пересчитала описания доступного оборудования.
Как показывает практика, для стабильной работы старых сканеров Symbol в среде современных ОС (особенно в связке с 64-битной платформой 1С) необходимо использовать проверенные версии компонентов. Рассмотрим наиболее эффективное сочетание:
Если ваша база "северная", проанализируем маппинг портов. При подключении к удаленному рабочему столу в настройках клиента (mstsc) обязательно должна стоять галочка Порты в разделе "Локальные ресурсы".
Важный нюанс: 1С:Предприятие 8.3 иногда некорректно работает с номерами портов выше COM9. Если ваш сканер определился как COM15, перейдите в диспетчер устройств на локальном ПК, зайдите в свойства порта и принудительно переназначьте его на свободный номер в диапазоне COM1-COM5. После этого перенастройте подключение в 1С.
Если программные методы не помогают, выясним причину в самом устройстве. Сканеры Symbol часто "запоминают" некорректные режимы работы. Найдите управляющее руководство (Programming Guide) для вашей модели и последовательно считайте следующие штрихкоды:
После выполнения этих действий устройство вернется в предсказуемое состояние, и его будет проще сопрячь с драйвером 1С.
Подводя итог, отметим, что решение проблемы чаще всего кроется в синхронизации версий драйвера и обработки обслуживания, а также в проверке успешности выполнения метода ПодключитьКлиента. Последовательное выполнение описанных шагов позволит восстановить работоспособность сканера и обеспечить быструю приемку и реализацию товаров в вашей базе 1С:Управление торговлей 10.3.