Как организовать получение оперативных остатков в 1С:Розница с помощью мобильного приложения?

Программист 1С v8.3 (Управляемые формы) 1С:Розница Управленческий учет Торговля и дистрибуция
← На главную

При работе в распределенных информационных базах (РИБ) многие торговые предприятия сталкиваются с проблемой актуальности данных. Консультанты в торговом зале не могут получить информацию об остатках товара по сети магазинов в режиме реального времени, так как обмен данными имеет задержку. Давайте разберем, как построить архитектуру системы, которая позволит сканировать штрихкоды и мгновенно получать данные из центральной базы.

Определение архитектурного подхода

Основная сложность заключается в том, что стандартный механизм РИБ не предназначен для моментального обмена. Чтобы решить задачу, нам нужно уйти от зависимости от локальных узлов и обращаться напрямую к центральной базе (ЦБД) или выделенному серверу данных. Рассмотрим основные способы реализации:

  1. Использование HTTP-сервисов: Это самый надежный способ. Мы создаем в 1С HTTP-сервис, который принимает запрос от мобильного устройства, выполняет поиск товара по штрихкоду и возвращает JSON-ответ с остатками и ценами.
  2. Веб-приложение или PWA: Вместо разработки тяжелого нативного приложения, мы создаем веб-интерфейс. Он работает через браузер, сканирует штрихкоды с помощью камеры телефона и отправляет запросы к нашему HTTP-сервису. Это избавляет от необходимости установки ПО на каждое устройство.
  3. Мобильная платформа 1С: Если требуется полноценное мобильное приложение, мы используем штатную платформу 1С, которая позволяет работать с аппаратными сканерами ТСД и формировать запросы к серверу.

Реализация через HTTP-сервис

Давайте разберем процесс взаимодействия по шагам:

  1. Публикация сервиса: В конфигураторе 1С создаем объект HTTP-сервис. Назначаем ему корневой URL и определяем метод (например, GET), который будет обрабатывать запрос.
  2. Обработка запроса: В модуле сервиса мы пишем код, который принимает параметр — штрихкод. Используя СправочникСсылка.Штрихкоды или РегистрСведений.ШтрихкодыНоменклатуры, мы находим соответствующую номенклатуру и характеристику.
  3. Запрос остатков: После того как номенклатура определена, мы обращаемся к РегистрНакопления.ТоварыНаСкладах или РегистрНакопления.ТоварыОрганизаций, чтобы получить текущие остатки в разрезе магазинов.
  4. Формирование ответа: Формируем структуру данных и сериализуем её в JSON, который вернется мобильному приложению.

Рассмотрим пример того, как может выглядеть логика обработки GET-запроса в 1С:


Функция ПолучитьОстаткиПоШтрихкоду(Запрос)
    Штрихкод = Запрос.ПараметрыУРЛ.Получить("barcode");
    
    // Поиск товара по штрихкоду
    НайденнаяСсылка = Справочники.Штрихкоды.НайтиПоРеквизиту("Штрихкод", Штрихкод);
    
    // Получение остатков
    ЗапросОстатков = Новый Запрос;
    ЗапросОстатков.Текст = 
        "ВЫБРАТЬ
        |   Остатки.Склад КАК Склад,
        |   Остатки.КоличествоОстаток КАК Количество
        |ИЗ
        |   РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК Остатки";
    
    ЗапросОстатков.УстановитьПараметр("Номенклатура", НайденнаяСсылка.Владелец);
    Результат = ЗапросОстатков.Выполнить().Выгрузить();
    
    // Сериализация в JSON
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, Результат);
    Возврат ЗаписьJSON.Закрыть();
КонецФункции

Почему это лучше других вариантов?

Использование HTTP-сервисов дает нам следующие преимущества:

Технические рекомендации по доработке

При реализации системы помните о безопасности. Никогда не открывайте HTTP-сервис без аутентификации. Используйте БазовуюАутентификацию или передачу токенов в заголовках HTTP-запроса. Для консультантов в зале достаточно создать отдельного пользователя с ограниченными правами, у которого доступ есть только на чтение необходимых данных.

Также важно правильно настроить сканирование. Поскольку Характеристика — это подчиненный объект, при сканировании штрихкода, привязанного к характеристике, система должна уметь «подниматься» на уровень номенклатуры (Владелец), чтобы консультант видел информацию не только по конкретному размеру, но и по всей сетке размеров данного товара.

Работая вместе над такой задачей, вы обеспечите консультантов мощным инструментом продаж, который превратит «беготню к компьютеру» в эффективную работу с клиентом в торговом зале.

← На главную