Интеграция терминалов сбора данных (ТСД) на базе операционной системы Windows CE 6.0 с современными версиями 1С:Предприятие 8.3 является нетривиальной задачей. Основная сложность заключается в том, что WinCE считается устаревшей платформой, для которой прекращена активная поддержка средств разработки, а современные мобильные приложения 1С требуют Android или iOS. В данной статье мы подробно разберем четыре основных стратегии реализации этой задачи, проанализируем их плюсы и минусы, а также выясним технические нюансы работы с оборудованием.
Это самый популярный и бюджетный способ превратить старый ТСД в полноценное рабочее место. Суть заключается в том, что на терминале запускается стандартный RDP-клиент, который подключается к терминальному серверу под управлением Windows Server. На сервере открывается сеанс 1С.
Рассмотрим особенности этого метода:
Преимущества: Минимум разработки на стороне WinCE, мгновенное обновление логики (достаточно изменить форму в 1С), отсутствие необходимости синхронизации данных.
Недостатки: Полная зависимость от стабильности Wi-Fi. Если связь прервется в «мертвой зоне» склада, работа остановится.
Если бюджет позволяет, лучшим решением будет использование специализированного ПО (middleware). Такие системы, как Клеверенс (Mobile SMARTS) или Data Mobile, уже имеют готовые клиенты под Windows CE и модули интеграции для 1С.
Проанализируем процесс интеграции:
Вы устанавливаете на ТСД готовое приложение-клиент, а в 1С — обработку или расширение. Обмен данными происходит через промежуточный сервер приложений. Логика работы (бизнес-процессы приемки, отгрузки, инвентаризации) настраивается в визуальном редакторе системы.
Важные моменты:
Для тех, кто предпочитает полный контроль над кодом, возможна разработка нативного приложения. Однако здесь мы сталкиваемся с главной проблемой: для Windows CE 6.0 требуется Visual Studio 2008.
Разберем технические шаги реализации:
Web-сервис (SOAP) или HTTP-сервис (REST). Приложение на ТСД отправляет запросы к этим сервисам. Рассмотрим пример структуры запроса к Web-сервису 1С из C#:
// Пример вызова веб-сервиса 1С из .NET Compact Framework
try {
WS_1C.NomenclatureService service = new WS_1C.NomenclatureService();
service.Credentials = new NetworkCredential("login", "password");
string productName = service.GetProductByBarcode("123456789");
lblResult.Text = productName;
} catch (Exception ex) {
MessageBox.Show("Ошибка связи: " + ex.Message);
}
Нюанс с бизнес-логикой: Не рекомендуется переносить сложную логику на ТСД. Лучше реализовать на устройстве только интерфейс и проверку ввода, а основные расчеты (движения регистров, поиск остатков) оставить на стороне 1С через Web-сервисы. Это сохранит трехзвенную архитектуру.
Если на складе стабильный Wi-Fi, можно использовать встроенный браузер ТСД. Однако стандартный Internet Explorer в WinCE 6.0 крайне примитивен. Для работы современных веб-форм 1С (Управляемое приложение) он не подойдет.
Выходом может стать:
Выясним, как заставить кнопку сканирования работать в вашем приложении. На Windows CE есть два пути:
1. Режим Keyboard Wedge (Эмуляция клавиатуры).
Самый простой вариант. Утилита DataWedge перехватывает данные со сканера и вставляет их в поле, где стоит фокус. В 1С или вашем приложении на C# достаточно обрабатывать событие OnKeyDown или TextChanged. Однако это ненадежно: если пользователь случайно уберет фокус с текстового поля, данные будут потеряны.
2. Использование SDK (Symbol/Motorola EMDK).
Проанализируем программный подход. Вы подключаете библиотеку Symbol.Barcode к вашему проекту. Это позволяет программно управлять лазером и получать данные напрямую в переменную, даже если приложение свернуто или фокус не на поле ввода.
// Пример инициализации сканера через Symbol SDK
private Symbol.Barcode.Reader myReader = null;
private Symbol.Barcode.ReaderData myReaderData = null;
myReader = new Symbol.Barcode.Reader();
myReaderData = new Symbol.Barcode.ReaderData(
Symbol.Barcode.ReaderDataTypes.Text,
Symbol.Barcode.ReaderDataLengths.MaximumLabel);
myReader.Actions.Enable();
myReader.OnStatus += (s, e) => { /* Обработка статуса */ };
myReader.OnRead += (s, e) => {
string barcode = myReaderData.Text; // Получили ШК напрямую
};
Проанализировав ситуацию, можно выделить несколько критических советов для разработчика:
Таким образом, несмотря на почтенный возраст Windows CE 6.0, она остается рабочей лошадкой для складских задач. Выбор способа связи с 1С 8.3 зависит от ваших навыков программирования и требований к автономности устройств. Рассмотрим вариант с RDP как наиболее быстрый старт, а разработку на C# — как путь создания максимально профессионального и отказоустойчивого решения.