При использовании терминалов сбора данных (ТСД) под управлением операционной системы Windows CE / Embedded в связке с 1С через RDP-подключение разработчики часто сталкиваются с неприятным поведением оборудования: при коротком простое (2–3 минуты) ТСД переходит в спящий режим. При этом автоматически гаснет экран, отключается модуль Wi-Fi и рвется RDP-сессия. Восстановление подключения занимает от 15 до 30 секунд, что сильно замедляет работу кладовщиков и сборщиков заказов.
Разберем подробно причины возникновения этой проблемы, способы настройки оборудования на базе Windows CE и альтернативные варианты архитектуры работы 1С с мобильными устройствами.
Выясним, почему стандартные механизмы 1С не всегда можно запустить на устаревших промышленных терминалах (например, CipherLab CPT-9700):
Рассмотрим, как настроить сам терминал сбора данных для предотвращения разрывов соединения.
1. Отключение спящего режима в интерфейсе ОС
Перейдем в настройки питания терминала (Start -> Settings -> Control Panel -> Power). На вкладке управления питанием (Power Schemes / Advanced) необходимо снять галочки с пунктов отключения питания при простое (Turn off device if not used for) или изменить таймаут на максимально возможный. На многих промышленных устройствах присутствует специальный профиль работы без ухода в сон.
2. Изменение настроек Wi-Fi адаптера (CAM Mode)
По умолчанию Wi-Fi адаптер переходит в режим энергосбережения (Power Save Mode). В настройках беспроводного модуля (утилита управления Wi-Fi от производителя, например, Summit или Fusion) переведем режим работы радиомодуля из Power Save в CAM (Continuous Aware Mode). В этом режиме Wi-Fi адаптер постоянно находится в активном состоянии и не отключает связь при снижении трафика.
3. Снятие ограничений через реестр Windows CE
Если штатный интерфейс позволяет задать таймаут не более 5 минут, отключим спящий режим напрямую через системный реестр WinCE. Откроем редактор реестра на ТСД и перейдем в ветку:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\Timeouts
Установим следующие параметры в значение 0 (что означает отключение таймаута):
BattPowerOff = 0ExtPowerOff = 0ScreenOff = 0Важно: В операционной системе Windows CE изменения в реестре хранятся в оперативной памяти и сбрасываются при перезагрузке устройства. Чтобы сохранить настройки энергонезависимо, после редактирования реестра необходимо запустить фирменную утилиту сохранения (например, RegFlush или FlashSave из раздела меню System Tools).
4. Фоновые утилиты удержания связи (Keep-Alive)
Если прошивка устройства все равно принудительно гасит экран, установим на ТСД небольшую фоновую утилиту, которая каждые 30–60 секунд эмулирует минимальное действие (например, посылает ping на сервер или сбрасывает счетчик простоя системы SystemIdleTimerReset). Это блокирует засыпание устройства на аппаратном уровне.
Работа через RDP требует идеально стабильного покрытия Wi-Fi на всем складе. Если сеть имеет «мертвые зоны», RDP-сессия будет регулярно зависать. Проанализируем более надежные подходы к автоматизации рабочих мест на ТСД.
1. Использование промежуточного RDP-прокси (Terminal Emulation / Session Persistence)
Для RDP-клиентов применяются специализированные промышленные прокси-серверы. Прокси-сервер держит открытую RDP-сессию на сервере 1С. Когда ТСД теряет сеть или засыпает, сессия 1С не рвется. При восстановлении сигнала Wi-Fi терминал моментально подключается к прокси и продолжает работу с той же формы и позиции без длительной переавторизации.
2. Разработка нативного легкого клиента + HTTP-сервисы 1С
Наиболее устойчивый к обрывам связи вариант — создание автономного или полуавтономного приложения для ТСД (например, на C# под .NET Compact Framework или с использованием стороннего специализированного софта), которое обменивается данными с 1С через HTTP-сервисы или WEB-сервисы.
Рассмотрим преимущества схемы на базе HTTP-сервисов:
Пример простейшего HTTP-сервиса в 1С для обработки сканированного штрихкода от ТСД:
Функция ОбработатьШтрихкодПОСТ(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
СтрокаJSON = Запрос.ПолучитьТелоКакСтроку();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
Данные = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Штрихкод = Данные.Штрихкод;
// Выполняем поиск номенклатуры по штрихкоду
НоменклатураСсылка = Справочники.Номенклатура.НайтиПоРеквизиту("Штрихкод", Штрихкод);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
СтруктураОтвета = Новый Структура;
Если ЗначениеЗаполнено(НоменклатураСсылка) Тогда
СтруктураОтвета.Вставить("Успех", Истина);
СтруктураОтвета.Вставить("Наименование", НоменклатураСсылка.Наименование);
СтруктураОтвета.Вставить("Код", НоменклатураСсылка.Код);
Иначе
СтруктураОтвета.Вставить("Успех", Ложь);
СтруктураОтвета.Вставить("Ошибка", "Товар не найден");
КонецЕсли;
ЗаписатьJSON(ЗаписьJSON, СтруктураОтвета);
Ответ.УстановитьТелоКакаСтроку(ЗаписьJSON.Закрыть());
Возврат Ответ;
КонецФункции
В процессе выбора аппаратной базы часто возникает идея зашиты RDP на обычные Android-смартфоны с Bluetooth-сканерами. Сравним эти подходы для задач складской логистики:
Таким образом, для небольших складов или локальных задач может подойти комбинированная схема (смартфон/планшет + сканер), но для полноценного складского учета с высокой интенсивностью оптимальным выбором остаются специализированные ТСД. При использовании RDP главным решением проблемы засыпания является корректная настройка параметров питания и режима Wi-Fi (CAM) в самой ОС WinCE, а для масштабных систем — переход на архитектуру HTTP-сервисов.