При внедрении штрихкодирования на производстве неизбежно встает вопрос выбора программного обеспечения для терминалов сбора данных (ТСД). В этой статье мы проанализируем ситуацию, когда необходимо автоматизировать складские операции (перемещение, инвентаризация) в самописной конфигурации на платформе 1С 8.3. Мы рассмотрим различные архитектурные пути, их преимущества и недостатки, а также разберем специфические вопросы складского учета жидкого сырья в емкостях.
Рассмотрим самый быстрый путь внедрения — работу через RDP-клиент. Этот метод не требует разработки отдельного мобильного приложения, так как сотрудники подключаются напрямую к серверу терминалов и работают в основной базе.
Проанализируем ключевые особенности этого подхода:
Если мы выбираем этот путь, важно адаптировать формы. Рассмотрим пример кода для программного открытия формы с фиксированным размером под экран ТСД:
ПараметрыФормы = Новый Структура("Высота, Ширина", 480, 320);
ОткрытьФорму("Обработка.РабочееМестоКладовщика.Форма.ФормаТСД", ПараметрыФормы);
Разберем современный подход — использование Мобильного клиента. Это тонкий клиент для мобильных устройств, который работает с базой через веб-сервер. В отличие от RDP, мобильный клиент умеет использовать нативные возможности Android (камеру, сканер штрихкодов).
Выясним, что нужно для реализации:
Посмотрим на пример обработки внешнего события от сканера штрихкодов в мобильном клиенте:
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Событие = "Barcode" Тогда
Штрихкод = СокрЛП(Данные);
ОбработатьСканирование(Штрихкод);
КонецЕсли;
КонецПроцедуры
Проанализируем ситуацию, когда на складе нестабильный Wi-Fi. В этом случае лучшим решением станет Мобильная платформа 1С. Это полноценное отдельное приложение со своей локальной базой данных на ТСД (SQLite).
Основные этапы реализации:
Рассмотрим пример простейшего GET-запроса из мобильного приложения к основной базе для получения остатка товара:
Соединение = Новый HTTPСоединение("192.168.1.10", , "Админ", "Пароль");
Запрос = Новый HTTPЗапрос("/Base/hs/Warehouse/GetBalance?Article=" + Артикул);
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
Данные = Ответ.ПолучитьТелоКакСтроку();
// Обработка JSON с остатками
КонецЕсли;
Разберем сложный вопрос автора: как вести учет кислоты, которая приходит в бочках, но списывается в килограммах. Выясним, как организовать это на ТСД:
Рекомендуемый подход: использование учета по грузовым местам (емкостям). Каждая бочка при поступлении должна получать уникальный идентификатор (серийный номер или LPN-код).
Для реализации такого учета необходимо добавить в конфигурацию регистр накопления ОстаткиПоЕмкостям с измерениями Номенклатура, Склад и Емкость (справочник или серийный номер).
Разберем важный момент для ТСД на Android (например, Sunmi или Zebra). Чтобы 1С корректно ловила штрихкоды, в настройках самого устройства (DataWedge или Scanner Settings) нужно настроить передачу данных через Broadcast Intent.
Это позволяет избежать проблем «клавиатурного» ввода (когда сканер просто «печатает» цифры в поле ввода) и дает возможность обрабатывать штрихкод в фоновом режиме. Мы настраиваем действие (Action) в настройках ТСД, например com.mycompany.scan, и прописываем его в коде 1С при инициализации библиотеки оборудования.
Проанализировав все варианты, можно сделать следующие выводы:
Помните, что для стабильной работы с файловой базой через веб-сервер желательно перейти на Client-Server вариант (например, с бесплатным PostgreSQL), чтобы избежать блокировок при одновременном обращении множества ТСД.