При организации учета основных средств (ОС) часто возникает необходимость автоматизировать процесс инвентаризации с помощью терминалов сбора данных (ТСД). В платформе 1С 7.7 Комплексная отсутствует штатный универсальный механизм для интеграции с современными ТСД, а работа в режиме удаленного рабочего стола (RDP) на терминальном сервере накладывает дополнительные технические ограничения. Разберем возможные схемы подключения ТСД к 1С 7.7, их особенности и порядок реализации.
Выбор способа взаимодействия оборудования и платформы 1С 7.7 зависит от операционной системы терминала (DOS-подобная ОС, Windows Mobile/CE, Android) и условий работы сети Wi-Fi на объекте.
Если терминал работает под управлением Windows Mobile или Windows Embedded, можно запускать RDP-клиент непосредственно на самом ТСД. Пользователь подключается к серверу и открывает специально разработаную внешнюю обработку (файл .ert), экран которой оптимизирован под маленькое разрешение ТСД. Для ввода данных используется эмуляция клавиатуры или спец-софт, такой как DataWedge, который пересылает отсканированный штрихкод как нажатия клавиш прямо в активное поле 1С. В обработке предусматривается кнопка переноса данных в документ Инвентаризация ОС.
На ТСД загружается справочник инвентарных номеров и наименований ОС. В процессе проверки кладовщик или МОЛ сканирует имущество, а результаты сохраняются во внутренний файл терминала (TXT, CSV или XML). По завершении работы файл по Wi-Fi или через подставку (Cradle) передается на сервер в общую папку. В 1С 7.7 запускается внешняя обработка, которая считывает файл и формирует табличную часть документа инвентаризации.
Сканер ТСД настраивается в режиме эмуляции последовательного порта (COM). В свойствах RDP-клиента активируется перенаправление COM-портов. На сервере в сеансе 1С 7.7 подгружается 32-битная внешняя компонента (например, Scaner1C.dll), которая перехватывает событие ОбработкаВнешнегоСобытия при каждом сканировании.
Внешний сервис или база-буфер (например, на платформе 1С 8.3 или стороннем софте) принимает пакеты от ТСД по HTTP/JSON, после чего подключается к базе 1С 7.7 через COM-соединение (1C77.Application) и программно заполняет нужные документы.
Проанализируем ключевые моменты, которые необходимо учитывать при настройке интеграции:
1. Отсутствие поля «Штрихкод» у Основных Средств: В типовой конфигурации 1С 7.7 Комплексная у справочника ОсновныеСредства нет штатного реквизита для хранения штрихкода (в отличие от справочника номенклатуры). Потребуется либо добавить новый реквизит в справочник, либо использовать в качестве штрихкода сам инвентарный номер ОС.
2. 32-битная архитектура платформы: Платформа 1С 7.7 является 32-битным приложением (x86). Все драйверы оборудования и внешние компоненты (DLL), подключаемые через ЗагрузитьВнешнююКомпоненту(), должны быть строго 32-битными.
3. Проблема нестабильного Wi-Fi соединения: При прямой работе в RDP обрыв Wi-Fi связи при перемещении между помещениями приводит к заморозке сессии. Для предотвращения потери данных целесообразно использовать либо локальное накопление данных на ТСД с периодической отправкой, либо настроить автоматическое сохранение черновика документа в 1С при каждом сканировании.
4. Поштучный учет основных средств: В отличие от товаров, каждое основное средство имеет уникальный инвентарный номер и учитывается в количестве 1 штука. Алгоритм загрузки данных в документ ИнвентаризацияОС должен проверять дубли и предотвращать повторный ввод одного и того же объекта.
Рассмотрим пример внешней обработки для 1С 7.7, которая читает текстовый файл с ТСД и заполняет документ инвентаризации основных средств:
Процедура ЗагрузитьДанныеИзТСД(ИмяФайла, ДокИнвентаризация)
Текст = СоздатьОбъект("Текст");
Если Текст.Открыть(ИмяФайла) = 0 Тогда
Предупреждение("Не удалось открыть файл обмена!");
Возврат;
КонецЕсли;
СпрОС = СоздатьОбъект("Справочник.ОсновныеСредства");
Для Стр = 1 По Текст.КоличествоСтрок() Цикл
СтрДанных = Текст.ПолучитьСтроку(Стр);
// Предполагаем, что в строке записан инвентарный номер ОС
ИнвНомер = СокрЛП(СтрДанных);
Если СпрОС.НайтиПоРеквизиту("ИнвНомер", ИнвНомер, 1) = 1 Тогда
ДокИнвентаризация.НоваяСтрока();
ДокИнвентаризация.ОсновноеСредство = СпрОС.ТекущийЭлемент();
ДокИнвентаризация.Количество = 1;
Иначе
Сообщить("ОС с инвентарным номером " + ИнвНомер + " не найдено!");
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Для стабильной работы инвентаризации ОС рекомендуем следующее:
DataWedge для передачи скан-кода как ввода с клавиатуры с завершающим символом Enter или Tab.