Как настроить ТСД на Android для работы с 1С (Обычные формы) через RDP?

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

Переход с терминалов сбора данных (ТСД) на базе Windows CE/Mobile на современные устройства под управлением Android — неизбежный процесс для многих складов, где ежедневно требуется сверять остатки номенклатуры с ценой и штрихкодом. Однако, если учетная система построена на старой конфигурации 1С (например, УПП 1.3 или УТ 10.3) на обычных формах, и работа происходит через удаленный рабочий стол (RDP), возникают специфические проблемы. Чаще всего это некорректная передача штрихкода, "проглатывание" символов или отсутствие реакции 1С на сканирование.

В этой статье мы подробно разберем, как "подружить" Android-терминал с 1С на обычных формах в режиме RDP, проанализируем основные подводные камни и найдем рабочие решения. Важным подготовительным этапом является проверка полноты данных: стоит убедиться в наличии штрихкодов на все товары, а при их отсутствии — использовать генератор штрихкодов для УТ 10.3, чтобы обеспечить корректный учет.

Суть проблемы: почему не работает "как раньше"

Ранее, на ТСД с Windows, использовался встроенный RDP-клиент, который часто умел пробрасывать COM-порты или корректно работать с драйверами торгового оборудования. Android-устройства работают иначе. В большинстве случаев они выступают как эмуляторы клавиатуры (Keyboard Wedge).

При сканировании штрихкода через RDP возникают следующие сложности:

  1. Скорость ввода: Android "выстреливает" символы штрихкода очень быстро. Протокол RDP (особенно при нестабильном Wi-Fi) не успевает передать последовательность нажатий клавиш на сервер. В итоге в 1С приходят "битые" штрихкоды или часть символов теряется.
  2. Функциональные клавиши: Драйверы сканеров в 1С часто настроены на ожидание префикса (например, F7). Многие RDP-клиенты на Android не умеют корректно передавать нажатие F-клавиш при сканировании.
  3. Драйвер 1С: Старые компоненты (например, "1C barcode scanner") не видят событий от Android-клавиатуры как "Внешнее событие".

Рассмотрим пошагово методы решения этой задачи, от настройки самого устройства до конфигурации драйвера в 1С.

Решение 1. Настройка терминала (ТСД) и RDP-клиента

Первое и самое важное действие — настройка самого сканирующего модуля на устройстве. Независимо от бренда (CipherLab, Urovo, Zebra, Atol), логика настройки одинакова. Нам необходимо замедлить передачу данных, чтобы RDP успел их обработать.

Проанализируем необходимые настройки в утилите сканирования на ТСД (обычно это DataWedge, Scanner Settings или Barcode Utility):

  1. Режим работы (Output Mode): Убедитесь, что выбран режим Keyboard (Клавиатура) или Keystroke.
  2. Задержка между символами (Inter-character delay): Это критический параметр. Установите значение в диапазоне 10–50 мс.

    Если оставить 0 мс, штрихкод будет приходить обрывками. Начните с 10 мс и увеличивайте, если символы все еще теряются. Это немного замедлит ввод, но обеспечит целостность данных.

  3. Префикс и Суффикс:
    • Суффикс: Обязательно добавьте символ Enter (или LF / CR). Это нужно, чтобы после сканирования происходило действие (нажатие кнопки "Ввод" или переход к следующему полю).
    • Префикс: Если вы планируете использовать стандартный драйвер 1С в режиме клавиатуры, часто требуется спецсимвол. Однако передать F7 через RDP с Android бывает сложно. Попробуйте пока настроить без префикса или использовать тильду ~, если драйвер позволяет перенастройку.

Также обратите внимание на настройки RDP-клиента на Android (Microsoft Remote Desktop, Parallels и др.). В некоторых клиентах есть опция "Scancode mode" или "Send remote keyboard shortcuts" — их стоит включить для корректной передачи служебных символов.

Решение 2. Настройка драйвера в 1С:Предприятие

Если мы работаем в режиме эмуляции клавиатуры, нам нужно заставить 1С понимать, что быстрый ввод символов — это именно штрихкод, а не ручной ввод кладовщика.

Рассмотрим настройки на примере драйвера Атол или 1С:Сканер штрихкода (Native), так как принцип схож.

  1. Зайдите в настройки торгового оборудования.
  2. Добавьте новое устройство типа "Сканер штрихкода".
  3. В параметрах подключения выберите порт: Клавиатура.
  4. Чувствительность (Sensitivity) или Таймаут: Это ключевой параметр при работе через RDP.

    Поскольку мы добавили задержку между символами на самом ТСД (см. Решение 1), драйвер 1С может "подумать", что ввод закончен, раньше времени. Нам нужно увеличить этот параметр.

    Установите значение 300–400 мс. Это время, которое драйвер ждет следующего символа, прежде чем сгенерировать событие сканирования.

  5. Префиксы и Суффиксы в 1С: Они должны строго совпадать с тем, что настроено на ТСД.
    • Если на ТСД суффикс Enter (код 13), то и в драйвере должен быть указан #13 (CR).
    • Если драйвер требует префикс для срабатывания, попробуйте настроить на ТСД передачу печатного символа (например, $ или #), и укажите его же в драйвере. Это надежнее, чем пытаться пробросить функциональную клавишу F7.

Решение 3. Работа без драйвера ("в разрыв клавиатуры")

Если добиться стабильного срабатывания процедуры ВнешнееСобытие не удается (драйвер не ловит префиксы, RDP искажает спецсимволы), можно пойти по пути упрощения. Android-терминал — это, по сути, клавиатура. Мы можем адаптировать формы 1С для приема данных напрямую в текстовое поле.

Разберем алгоритм адаптации формы:

  1. На форме документа или обработки создайте поле ввода. Назовем его ПолеШтрихкод.
  2. Установите фокус на это поле при открытии формы.
  3. Настройте ТСД так, чтобы он отправлял только сам ШК + Enter.
  4. В модуле формы используйте событие АвтоПодборТекста или ПриИзменении для обработки полученных данных.

Пример кода обработки события для обычных форм:


Процедура ПолеШтрихкодПриИзменении(Элемент)
    
    Штрихкод = СокрЛП(ПолеШтрихкод);
    
    Если Не ПустаяСтрока(Штрихкод) Тогда
        // Вызываем ту же логику, что и при внешнем событии
        ОбработатьШтрихкод(Штрихкод);
        
        // Очищаем поле для следующего сканирования
        ПолеШтрихкод = "";
    КонецЕсли;

КонецПроцедуры

Недостаток метода: Фокус всегда должен быть в этом поле. Если кладовщик ткнет стилусом в таблицу или другое поле, штрихкод "напечатается" туда. Решение: Использовать событие формы ОбновлениеОтображения или подключить обработчик ожидания, который принудительно возвращает фокус в поле сканирования. Для новых версий платформы также может помочь готовая форма подбора с установкой фокуса, решающая эту проблему.

Решение 4. Метод "Буфер обмена" (Clipboard)

Существует альтернативный способ передачи данных, который полностью исключает проблему скорости ввода и "битых" символов. RDP отлично синхронизирует буфер обмена между клиентом (Android) и сервером (Windows).

Настроим ТСД следующим образом:

  1. В настройках сканера (DataWedge и аналоги) найдите параметр вывода данных (Keystroke output).
  2. Смените его на "Clipboard" (Буфер обмена).
  3. Настройте сканер так, чтобы после помещения данных в буфер он эмулировал нажатие комбинации Ctrl + V (Вставить). Многие современные утилиты ТСД имеют такую опцию "Paste text via keystroke" или аналогичную.

Результат: Весь штрихкод вставляется в 1С мгновенно, как единый кусок текста. Это работает намного надежнее посимвольного ввода через нестабильную сеть. Такой подход особенно полезен при выполнении рутинных операций.

Резюме и рекомендации

Для стабильной работы связки Android ТСД + RDP + 1С Обычные формы рекомендуем придерживаться следующего плана:

  1. Не ищите специфические драйверы под Android для сервера. На сервере терминал выглядит как обычная клавиатура удаленного пользователя.
  2. Настройте задержки на ТСД. Параметр Inter-character delay (10-20 мс) решает 90% проблем с искажением данных.
  3. Настройте чувствительность драйвера в 1С. Увеличьте таймаут до 300-400 мс, чтобы компенсировать задержки ввода.
  4. Избегайте сложных префиксов (F7/F8). Если RDP-клиент их не передает, перенастройте драйвер на печатные символы или используйте метод "фокус в поле ввода".

Применяя эти настройки, вы сможете продлить жизнь текущей учетной системе на обычных формах, используя при этом современное оборудование.

← На главную