При автоматизации складских процессов и розничной торговли часто возникает задача перевода терминалов сбора данных (ТСД) в постоянный онлайн-режим. Это необходимо для мгновенного получения актуальных остатков, проверки цен, оперативной приемки товаров и предотвращения пересортицы. Однако при работе с устройствами под управлением Windows CE / Windows Mobile и крупными каталогами номенклатуры (от 30 000 позиций и выше) специалисты регулярно сталкиваются с зависаниями сессий RDP, нестабильным Wi-Fi и длительной выгрузкой справочников.
Разберем по шагам, как устранить эти ограничения, стабилизировать сетевое подключение и выбрать наиболее эффективную архитектуру взаимодействия ТСД с 1С.
Стандартный RDP-клиент Windows CE 5.0/6.0 имеет ряд критических ограничений: отсутствие сохранения паролей для автоматического входа, графические артефакты (черные прямоугольники) и зависание терминальных сессий на сервере Windows Server при кратковременной потере Wi-Fi связи. Когда связь обрывается, сервер помечает сессию как Disconnected, накапливает их и в конечном итоге блокирует новые подключения до перезагрузки служб терминалов.
Проанализируем шаги для стабилизации прямого терминального подключения:
CETerm от Naurtech или 2X Client). Они поддерживают автоматическую авторизацию, корректную отрисовку экранов и автоматическое переподключение без создания фантомных сессий.Перейдем по пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Ограничения по времени сеанса.
Включим параметры Задать ограничение по времени для отключенных сеансов (установим 1–2 минуты) и включим отправку пакетов проверки связи (Keep-Alive) с интервалом 1 минута.
Power Save Mode (PSP) в режим постоянной активности Constantly Awake Mode (CAM). Это устранит задержки в 10–15 секунд при выходе модуля связи из спящего режима.240x320 точек, отключив тяжелые панели и командные строки.Если база данных содержит более 30 000 наименований, полная выгрузка таблиц на устройство перед каждой операцией нерациональна из-за низкой производительности процессоров WinCE и ограниченной памяти. Наиболее отказоустойчивым решением является разделение данных на статические справочники и оперативные остатки.
Рассмотрим структуру гибридной работы:
Посмотрим на пример реализации простого HTTP-сервиса в 1С для мгновенного возврата остатка и цены по отсканированному штрихкоду:
Функция ПолучитьДанныеПоШтрихкоду(Запрос)
Штрихкод = Запрос.ПараметрыЗапроса.Получить("ШК");
Склад = Справочники.Склады.НайтиПоКоду(Запрос.ПараметрыЗапроса.Получить("СкладКод"));
ОтветJSON = Новый Структура;
ОтветJSON.Вставить("Найдено", Ложь);
ОтветJSON.Вставить("Номенклатура", "");
ОтветJSON.Вставить("Остаток", 0);
ОтветJSON.Вставить("Цена", 0);
Запрос1С = Новый Запрос;
Запрос1С.Текст =
"ВЫБРАТЬ
| РегШК.Номенклатура КАК Номенклатура,
| РегШК.ХарактеристикаНоменклатуры КАК Характеристика,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток
|ИЗ
| РегистрСведений.Штрихкоды КАК РегШК
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК ТоварыНаСкладахОстатки
| ПО РегШК.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
| И РегШК.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.Характеристика
|ГДЕ
| РегШК.Штрихкод = &Штрихкод";
Запрос1С.УстановитьПараметр("Штрихкод", Штрихкод);
Запрос1С.УстановитьПараметр("Склад", Склад);
Запрос1С.УстановитьПараметр("Период", ТекущаяДата());
Выборка = Запрос1С.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ОтветJSON.Найдено = Истина;
ОтветJSON.Номенклатура = Строка(Выборка.Номенклатура);
ОтветJSON.Остаток = Выборка.Остаток;
КонецЕсли;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ОтветJSON);
СтрокаОтвета = ЗаписьJSON.Закрыть();
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки(СтрокаОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Возврат Ответ;
КонецФункции
Если разработка собственной конфигурации для ТСД или доработка форм в 1С экономически нецелесообразна, оптимальным решением является внедрение специализированных платформ с готовыми модулями онлайн-интеграции:
В условиях, когда мобильный терминал используется исключительно в пределах одного торгового зала или небольшого склада для инвентаризации, альтернативой ТСД может служить беспроводной сканер штрихкодов с памятью (радиосканер или Bluetooth-сканер):
ИнвентаризацияТоваровНаСкладе или ПересчетТоваров) по событию ВнешнееСобытие.Таким образом, для надежной онлайн-работы ТСД на базе Windows CE необходимо обновить клиент RDP до версии 6.1 с настройкой политик таймаутов на сервере, либо перевести обмен на гибридную схему с точечными онлайн-запросами через HTTP-сервисы или специализированное ПО.