Автоматизация складского учета с использованием терминалов сбора данных (ТСД) — стандарт де-факто для современного бизнеса. Однако, если на предприятии до сих пор успешно функционирует надежная, но технологически устаревшая платформа «1С:Предприятие 7.7» (особенно если конфигурация полностью самописная), перед разработчиком встает непростой выбор. Как «подружить» современное мобильное железо под управлением Android или DOS-подобных операционных систем с платформой, созданной более двадцати лет назад?
В этой статье мы подробно разберем все существующие архитектурные варианты интеграции ТСД с 1С 7.7, проанализируем их сильные и слабые стороны, а также детально остановимся на разработке эргономичного интерфейса для мобильных экранов, включая настройку звука и специфические лайфхаки ввода данных.
---
Это один из самых популярных и экономически оправданных подходов для внедрения на самописных конфигурациях. Суть метода заключается в том, что ТСД выступает в роли «тонкого клиента». На терминале запускается RDP-клиент (например, Microsoft Remote Desktop на Android), который подключается к серверу терминалов Windows. Пользователь видит на экране ТСД запущенный сеанс 1С 7.7.
Рассмотрим ключевые преимущества этого подхода:
Тем не менее, у RDP-режима есть существенные недостатки. Прежде всего, это критическая зависимость от стабильности Wi-Fi покрытия на складе. При малейшем обрыве связи сессия «зависает» или сбрасывается. Кроме того, мелкие элементы стандартного интерфейса Windows крайне неудобно отображаются на небольших экранах терминалов, что требует тщательной переработки форм.
---
Классический, проверенный временем метод «забежать на минутку». В качестве оборудования используются простые и сверхнадежные терминалы, такие как легендарный CipherLab 8001 (или вся линейка CipherLab 8xxx) на инфракрасной подставке (кредле).
Проанализируем схему работы батч-обмена:
Этот способ идеален для небольших складов с простой логистикой, где нет необходимости контролировать остатки ежесекундно. Главный минус — отсутствие оперативного контроля в реальном времени. Кладовщик не узнает, что отсканировал пересортицу, пока не выгрузит данные в 1С.
---
Для создания полноценной профессиональной системы автоматизации используют специализированные программные комплексы, такие как Cleverence (Mobile SMARTS) или DataMobile.
С технической точки зрения интеграция с 1С 7.7 здесь выглядит следующим образом:
1cv7s.exe и общается с ним по COM), так и в батч-режиме посредством выгрузки текстовых/XML-файлов. Однако интеграция по OLE под 1С 7.7 часто вызывает сложности у администраторов. Служба сервера Mobile SMARTS работает под учетной записью Local System, из-за чего возникают проблемы с правами доступа к сетевым папкам базы данных и DCOM. Это требует кропотливой ручной настройки прав службы.---
Если вам требуется полноценный онлайн-режим на современных Android-устройствах (например, Urovo i6200), но вы хотите отказаться от RDP из-за дороговизны лицензий служб удаленных рабочих столов (RDS CAL) или нестабильности Wi-Fi, можно использовать гибридную схему.
Выясним структуру такого решения. Поскольку сама платформа 1С 7.7 не умеет нативно работать в качестве веб-сервера и публиковать HTTP-сервисы, перед ней выстраивается легкий прокси-сервер (написанный на Python, Node.js или ASP.NET). На самом ТСД запускается легкое нативное Android-приложение.
Мобильное приложение отправляет HTTP-запросы (в формате JSON) на прокси-сервер. Тот, в свою очередь, напрямую обращается к SQL-базе данных 1С 7.7 (или читает DBF-таблицы через OLE/ADO) и возвращает структурированный ответ на терминал. Этот способ гарантирует максимальное быстродействие, современный интерфейс и полную независимость от кратковременных разрывов связи — мобильное приложение просто повторит запрос при восстановлении сети.
---
Если вы остановили свой выбор на интеграции через RDP (Вариант 1), вы неизбежно столкнетесь со специфической проблемой передачи данных сканера. При сканировании штрихкода Android-терминал эмулирует нажатия клавиш клавиатуры и передает их по RDP-каналу на сервер. Из-за задержек сети или слишком высокой скорости эмуляции символы начинают «теряться» (например, штрихкод 4810438008884 считывается сервером как 481043800884 — дублирующиеся цифры «проглатываются»).
Разберем два эффективных пути решения этой проблемы:
Scaner1C.dll). Компонента перехватит сетевой пакет от ТСД и сгенерирует в 1С штатное предопределенное событие ОбработкаВнешнегоСобытия(). Этот метод полностью исключает эмуляцию клавиатуры и работает со 100% надежностью при любом качестве связи.---
Разработка интерфейса для терминала кардинально отличается от создания форм для обычных ПК. Здесь важен каждый пиксель, а скорость работы сотрудника напрямую зависит от читаемости информации.
Проанализируем основные правила дизайна экранов ТСД:
Arial.Arial Narrow или Web Serveroff. Это позволит уместить длинные наименования без переноса строк.Courier New. Он четко разделяет знаки и исключает путаницу при беглом взгляде.Наличие таблиц значений (ТЗ) или длинных списков на экране ТСД — это признак неоптимально спроектированного процесса. Избегайте вертикальных и горизонтальных полос прокрутки. Экран должен быть спроектирован так, чтобы пользователю не приходилось ничего пролистывать. Список допустим исключительно в качестве меню выбора режима работы.
Минимизируйте работу со стандартной клавиатурой ТСД. Если клавиатурный ввод неизбежен, используйте концепцию автоподстановки символов. Посмотрим на пример ввода габаритов товара (длина, ширина, высота). Вместо переключения между полями ввода предоставьте пользователю одну большую строку, куда он сможет ввести габариты триадой через пробел, например: 100 200 150. Нажатие клавиши пробела программно заменяйте на разделители.
Рассмотрим, как это можно реализовать на встроенном языке 1С 7.7:
// Функция разбирает строку ввода габаритов, разделенных пробелами
Процедура РазобратьГабариты(СтрокаВвода)
Стр = СокрЛП(СтрокаВвода);
// Заменяем множественные пробелы на одиночные
Пока Найти(Стр, " ") > 0 Цикл
Стр = СтрЗаменить(Стр, " ", " ");
КонецЦикла;
// Выделяем габариты
Поз1 = Найти(Стр, " ");
Если Поз1 > 0 Тогда
Длина = Лев(Стр, Поз1 - 1);
Остаток = Сред(Стр, Поз1 + 1);
Поз2 = Найти(Остаток, " ");
Если Поз2 > 0 Тогда
Ширина = Лев(Остаток, Поз2 - 1);
Высота = Сред(Остаток, Поз2 + 1);
Предупреждение("Успешно введено! Длина: " + Длина + ", Ширина: " + Ширина + ", Высота: " + Высота, 1);
Иначе
Предупреждение("Неверный формат! Введите три числа через пробел.");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Часто физические кнопки на ТСД затираются или ломаются в процессе жесткой эксплуатации на складе. Заложите в логику системы возможность выполнять ключевые команды (например, «ОК», «Отмена», «Закрыть документ», «Очистить») путем сканирования заранее распечатанных сервисных штрихкодов. Эти штрихкоды можно наклеить прямо на корпус терминала или на складскую тележку.
---
Работа кладовщика — это монотонный циклический процесс. Со временем у сотрудника «замыливается» взгляд, и он перестает смотреть на экран ТСД, сканируя товары на автомате. Без качественной звуковой индикации неизбежно возникнет лавина ошибок: кладовщик пропустит сообщение о неверном товаре или переходе к следующему шагу сборки.
Штатный системный писк самого сканера сообщает лишь о том, что штрихкод физически считан лазером. Но он ничего не знает о результатах обработки этого штрихкода в 1С. Поэтому крайне важно настроить воспроизведение звука из сеанса 1С на динамик ТСД.
Разберем по шагам, как пробросить звук в RDP-сессии:
gpedit.msc) и перейдите по пути:Сигнал() часто некорректно транслируется через RDP. Для гарантированного воспроизведения звуковых файлов формата .wav используйте внешние библиотеки (например, популярную компоненту FormEx или системные вызовы Windows API через объект WScript.Shell).
Посмотрим на пример кода для проигрывания системного звука ошибки:
// Пример проигрывания WAV-файла ошибки через командную строку Windows из 1С 7.7
Процедура ОзвучитьОшибку()
Попытка
Шелл = СоздатьОбъект("WScript.Shell");
// Запускаем скрытое проигрывание wav-файла штатными средствами ОС
ПутьКЗвуку = "C:\Windows\Media\chord.wav";
Шелл.Run("powershell -c (New-Object Media.SoundPlayer '" + ПутьКЗвуку + "').PlaySync()", 0, 0);
Исключение
// Альтернативный вариант, если PowerShell недоступен
Предупреждение("Ошибка! Неверный товар!", 1);
КонецПопытки;
КонецПроцедуры
Обязательно разделите звуковые сигналы на три типа: успешное действие (негромкий приятный клик), предупреждение/смена ячейки (двойной звуковой сигнал) и критическая ошибка/неверный товар (громкая протяжная сирена). Это позволит сократить ошибки пересортицы на складе практически до нуля.