Интеграция терминалов сбора данных (ТСД) с системой «1С:Предприятие» часто кажется магическим процессом, особенно если под рукой нет физического устройства для тестов. Рассмотрим подробно, как устроена механика прогрузки товаров в ТСД под управлением ПО RS:Mobile ACS (от компании RightScan) на примере конфигурации 1С:Розница 2.2. Мы разберем программные методы, структуру данных и способы отладки, которые помогут вам реализовать задачу «вслепую».
Прежде чем погружаться в код, проанализируем упрощенную схему обмена. Взаимодействие 1С и ТСД в режиме Offline (когда база товаров загружается в память устройства целиком) строится по следующему алгоритму:
Важно понимать, что 1С не «общается» с ТСД напрямую. Она всегда работает через драйвер подключаемого оборудования, который выступает переводчиком между языком 1С и протоколом устройства.
Основной инструмент программиста при работе с современными драйверами ТСД — это метод UploadTable. Рассмотрим подробнее, почему автор темы столкнулся с трудностями при его использовании. Согласно требованиям БПО (Библиотеки подключаемого оборудования), выгрузка должна происходить итерационно.
Проанализируем ситуацию: передать за один раз справочник из 50 000 товаров невозможно из-за ограничений оперативной памяти или таймаутов соединения. Поэтому используется механизм пакетов. Метод UploadTable вызывается в цикле, и ему передается специальный параметр статуса пакета:
first — сигнализирует драйверу, что нужно очистить старую таблицу на ТСД и подготовиться к приему новой порции данных.regular — обычный пакет данных, который добавляется в конец существующей таблицы.last — финальный пакет, после получения которого драйвер завершает сессию записи и фиксирует данные в памяти ТСД.Если при отладке вы видите пустую таблицу, скорее всего, типовой механизм 1С не прошел условия фильтрации (например, по складу нет остатков) или не сработал инициализирующий вызов с параметром first.
Для успешной прогрузки ТСД мы должны подготовить таблицу со строго определенными именами колонок. Драйвер RightScan ожидает следующие поля:
Barcode — Штрихкод (основной идентификатор для поиска на устройстве).Name — Наименование товара.Price — Цена (выводится на экран ТСД при сканировании).Quantity — Количество (текущий остаток для контроля).UnitOfMeasure — Единица измерения.Если ваша задача связана с инвентаризацией алкоголя, структура усложняется. Выясним причину: для корректной работы с ЕГАИС терминалу нужно знать дополнительные атрибуты. В таблицу добавляются:
AlcoholCode — Код алкогольной продукции.Capacity — Емкость тары.AlcoholContent — Крепость.MarkingType — Тип маркировки (для разделения крепкого алкоголя и пива).Посмотрим на пример того, как может выглядеть упрощенный фрагмент кода для выгрузки данных через драйвер. В типовых конфигурациях это реализовано внутри общих модулей интеграции с подключаемым оборудованием, но суть остается неизменной:
// Создаем таблицу товаров
ТаблицаТоваров = Новый ТаблицаЗначений;
ТаблицаТоваров.Колонки.Добавить("Barcode", Новый ОписаниеТипов("Строка"));
ТаблицаТоваров.Колонки.Добавить("Name", Новый ОписаниеТипов("Строка"));
ТаблицаТоваров.Колонки.Добавить("Quantity", Новый ОписаниеТипов("Число"));
// Заполняем данными (в реальной задаче здесь будет запрос)
НоваяСтрока = ТаблицаТоваров.Добавить();
НоваяСтрока.Barcode = "2000000000015";
НоваяСтрока.Name = "Водка Особая 0.5";
НоваяСтрока.Quantity = 10;
// Вызываем метод драйвера (условно)
// Параметры: ИдентификаторУстройства, ТаблицаДанных, СтатусПакета
Результат = ОбъектДрайвера.ВыгрузитьТаблицу(ИдентификаторУстройства, ТаблицаТоваров, "first");
Обратите внимание: если вы используете Розница 2.2, вам не нужно писать этот код с нуля. Достаточно использовать типовую обработку ВыгрузкаТоваровВТСД. Если она открывается пустой, проверьте настройки отбора в шапке обработки: организацию, склад и формат выгрузки.
Это самый важный вопрос для разработчика. Проанализируем инструменты, которые позволяют проверить работу кода без физического устройства:
%AppData%\Roaming\RightScan\. В этих логах можно увидеть XML-структуры, которые формирует компонент перед отправкой.Для инвентаризации алкоголя (акцизных марок) прогрузки просто справочника товаров недостаточно. Рассмотрим подробнее: если клиент хочет проверять марки на соответствие документу (например, при поступлении), в ТСД нужно выгружать таблицу ожидаемых марок. В RS:Mobile ACS это отдельный режим работы. В этом случае в метод UploadTable передаются штрихкоды PDF417 или DataMatrix, которые устройство должно «узнать» при сканировании.
Важный момент: Если вы дорабатываете обработку, убедитесь, что вы передаете признак маркируемой продукции. В противном случае ТСД может использовать обычный режим сканирования (EAN-13) и игнорировать сложные коды маркировки.
Для успешной настройки выгрузки в ТСД через RS:Mobile ACS выполните следующие шаги:
Barcode, Name и т.д.).AlcoholCode и Capacity.first, regular, last.Разработка под ТСД без устройства — задача выполнимая, если понимать, что 1С работает с абстрактной таблицей значений, а всю «магию» связи берет на себя драйвер, соответствующий стандартам 1С.