Переход с терминалов сбора данных (ТСД) на базе Windows CE/Mobile на современные устройства под управлением Android — неизбежный процесс для многих складов, где ежедневно требуется сверять остатки номенклатуры с ценой и штрихкодом. Однако, если учетная система построена на старой конфигурации 1С (например, УПП 1.3 или УТ 10.3) на обычных формах, и работа происходит через удаленный рабочий стол (RDP), возникают специфические проблемы. Чаще всего это некорректная передача штрихкода, "проглатывание" символов или отсутствие реакции 1С на сканирование.
В этой статье мы подробно разберем, как "подружить" Android-терминал с 1С на обычных формах в режиме RDP, проанализируем основные подводные камни и найдем рабочие решения. Важным подготовительным этапом является проверка полноты данных: стоит убедиться в наличии штрихкодов на все товары, а при их отсутствии — использовать генератор штрихкодов для УТ 10.3, чтобы обеспечить корректный учет.
Ранее, на ТСД с Windows, использовался встроенный RDP-клиент, который часто умел пробрасывать COM-порты или корректно работать с драйверами торгового оборудования. Android-устройства работают иначе. В большинстве случаев они выступают как эмуляторы клавиатуры (Keyboard Wedge).
При сканировании штрихкода через RDP возникают следующие сложности:
Рассмотрим пошагово методы решения этой задачи, от настройки самого устройства до конфигурации драйвера в 1С.
Первое и самое важное действие — настройка самого сканирующего модуля на устройстве. Независимо от бренда (CipherLab, Urovo, Zebra, Atol), логика настройки одинакова. Нам необходимо замедлить передачу данных, чтобы RDP успел их обработать.
Проанализируем необходимые настройки в утилите сканирования на ТСД (обычно это DataWedge, Scanner Settings или Barcode Utility):
Если оставить 0 мс, штрихкод будет приходить обрывками. Начните с 10 мс и увеличивайте, если символы все еще теряются. Это немного замедлит ввод, но обеспечит целостность данных.
Enter (или LF / CR). Это нужно, чтобы после сканирования происходило действие (нажатие кнопки "Ввод" или переход к следующему полю).F7 через RDP с Android бывает сложно. Попробуйте пока настроить без префикса или использовать тильду ~, если драйвер позволяет перенастройку.Также обратите внимание на настройки RDP-клиента на Android (Microsoft Remote Desktop, Parallels и др.). В некоторых клиентах есть опция "Scancode mode" или "Send remote keyboard shortcuts" — их стоит включить для корректной передачи служебных символов.
Если мы работаем в режиме эмуляции клавиатуры, нам нужно заставить 1С понимать, что быстрый ввод символов — это именно штрихкод, а не ручной ввод кладовщика.
Рассмотрим настройки на примере драйвера Атол или 1С:Сканер штрихкода (Native), так как принцип схож.
Поскольку мы добавили задержку между символами на самом ТСД (см. Решение 1), драйвер 1С может "подумать", что ввод закончен, раньше времени. Нам нужно увеличить этот параметр.
Установите значение 300–400 мс. Это время, которое драйвер ждет следующего символа, прежде чем сгенерировать событие сканирования.
Enter (код 13), то и в драйвере должен быть указан #13 (CR).$ или #), и укажите его же в драйвере. Это надежнее, чем пытаться пробросить функциональную клавишу F7.Если добиться стабильного срабатывания процедуры ВнешнееСобытие не удается (драйвер не ловит префиксы, RDP искажает спецсимволы), можно пойти по пути упрощения. Android-терминал — это, по сути, клавиатура. Мы можем адаптировать формы 1С для приема данных напрямую в текстовое поле.
Разберем алгоритм адаптации формы:
ПолеШтрихкод.Enter.АвтоПодборТекста или ПриИзменении для обработки полученных данных.Пример кода обработки события для обычных форм:
Процедура ПолеШтрихкодПриИзменении(Элемент)
Штрихкод = СокрЛП(ПолеШтрихкод);
Если Не ПустаяСтрока(Штрихкод) Тогда
// Вызываем ту же логику, что и при внешнем событии
ОбработатьШтрихкод(Штрихкод);
// Очищаем поле для следующего сканирования
ПолеШтрихкод = "";
КонецЕсли;
КонецПроцедуры
Недостаток метода: Фокус всегда должен быть в этом поле. Если кладовщик ткнет стилусом в таблицу или другое поле, штрихкод "напечатается" туда.
Решение: Использовать событие формы ОбновлениеОтображения или подключить обработчик ожидания, который принудительно возвращает фокус в поле сканирования. Для новых версий платформы также может помочь готовая форма подбора с установкой фокуса, решающая эту проблему.
Существует альтернативный способ передачи данных, который полностью исключает проблему скорости ввода и "битых" символов. RDP отлично синхронизирует буфер обмена между клиентом (Android) и сервером (Windows).
Настроим ТСД следующим образом:
Ctrl + V (Вставить). Многие современные утилиты ТСД имеют такую опцию "Paste text via keystroke" или аналогичную.Результат: Весь штрихкод вставляется в 1С мгновенно, как единый кусок текста. Это работает намного надежнее посимвольного ввода через нестабильную сеть. Такой подход особенно полезен при выполнении рутинных операций.
Для стабильной работы связки Android ТСД + RDP + 1С Обычные формы рекомендуем придерживаться следующего плана:
Inter-character delay (10-20 мс) решает 90% проблем с искажением данных.Применяя эти настройки, вы сможете продлить жизнь текущей учетной системе на обычных формах, используя при этом современное оборудование.