Как реализовать мобильную торговлю с поддержкой сложных маркетинговых акций в 1С

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

Автоматизация работы торговых представителей часто сталкивается с проблемой ограниченности коробочных решений. Типовые мобильные приложения сторонних разработчиков либо требуют дорогостоящих промежуточных серверов, либо не поддерживают весь спектр маркетинговых акций (подарки, кратные объемы, сегментные условия, динамические скидки), настроенных в учетной системе. Разберем практические архитектурные варианты создания и расширения мобильной торговли на базе экосистемы 1С.

Архитектурная концепция: серверный расчет акций

Главная сложность реализации промо-акций на мобильном устройстве — необходимость дублирования тяжелой логики автоматических скидок. В типовых конфигурациях (1С:Управление торговлей 11, 1С:Комплексная автоматизация, 1С:ERP) подсистема скидок и наценок использует сложные пакетные запросы с временными таблицами, проверку сегментов партнеров и номенклатуры, вытеснение и совместное действие условий.

Переносить данный алгоритм «как есть» в локальную базу мобильного приложения нерационально по двум причинам:

  1. Встроенная СУБД SQLite мобильной платформы медленно обрабатывает сложные многоуровневые пакетные запросы на больших справочниках.
  2. Любое изменение маркетинговой политики в центральной базе потребует постоянного обновления логики мобильных клиентов.

Оптимальным решением является онлайн-расчет корзины на стороне сервера через HTTP-сервисы. Проанализируем, как строится этот процесс:

  1. Торговый представитель в мобильном интерфейсе формирует предварительный состав заказа (выбирает клиента, соглашение и список товаров с базовыми ценами).
  2. Мобильное приложение отправляет структуру данных корзины через HTTPСоединение на опубликованный HTTP-сервис центральной базы 1С.
  3. На сервере вызываются штатные методы типовой подсистемы расчета автоматических скидок (например, процедуры расчета цен и условий документа ЗаказКлиента).
  4. Сервер возвращает JSON-структуру с итоговыми ценами, рассчитанными скидками, примененными акциями, подарками и бонусами.
  5. Мобильное приложение заполняет и отображает итоговые строки документа.

Посмотрим на пример структуры серверного обработчика HTTP-сервиса, выполняющего расчет переданной корзины:


Функция РассчитатьКорзину(ЗапросHTTP)
    
    СтрокаJSON = ЗапросHTTP.ПолучитьТелоКакСтроку("UTF-8");
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
    ДанныеКорзины = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();
    
    // Создаем временный документ в памяти для применения типового расчета
    ДокументОбъект = Документы.ЗаказКлиента.СоздатьДокумент();
    ДокументОбъект.Партнер = ДанныеКорзины.Партнер;
    ДокументОбъект.Соглашение = ДанныеКорзины.Соглашение;
    ДокументОбъект.Дата = ТекущаяДатаСеанса();
    
    Для Каждого СтрТовар Из ДанныеКорзины.Товары Цикл
        НоваяСтрока = ДокументОбъект.Товары.Добавить();
        НоваяСтрока.Номенклатура = СтрТовар.Номенклатура;
        НоваяСтрока.Количество = СтрТовар.Количество;
    КонецЦикла;
    
    // Вызов типового расчета автоматических скидок
    // (наименование процедур зависит от редакции конфигурации)
    СкидкиНаценкиСервер.РассчитатьСкидкиНаценки(ДокументОбъект);
    
    // Формируем результат для возврата в мобильное приложение
    Результат = Новый Структура("Товары, СуммаДокумента", Новый Массив, ДокументОбъект.СуммаДокумента);
    Для Каждого Стр Из ДокументОбъект.Товары Цикл
        Результат.Товары.Добавить(Новый Структура(
            "Номенклатура, Количество, Цена, ПроцентАвтоматическойСкидки, Сумма",
            Стр.Номенклатура, Стр.Количество, Стр.Цена, Стр.ПроцентАвтоматическойСкидки, Стр.Сумма
        ));
    КонецЦикла;
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, Результат);
    
    ОтветHTTP = Новый HTTPСервисОтвет(200);
    ОтветHTTP.УстановитьТелоИзСтроки(ЗаписьJSON.Закрыть(), "UTF-8");
    Возврат ОтветHTTP;
    
КонецФункции

Базовый шаблон: использование конфигурации «1С:Заказы»

Для разработки собственного мобильного решения с нуля требуются значительные трудозатраты. В качестве открытой основы можно использовать типовую мобильную конфигурацию 1С:Заказы от фирмы «1С».

Выясним преимущества такого подхода:

  1. Открытый исходный код: конфигурация доступна для доработки и модификации в среде «1С:Предприятие».
  2. Готовые интерфейсные механизмы: реализован каталог номенклатуры, работа с остатками, карточки клиентов, история заказов и базовый механизм обмена с 1С:Управление торговлей.
  3. Быстрый старт: достаточно доработать механизм отправки корзины на сервер для расчета скидок и дополнить структуру данных новыми полями акций, не переписывая базовую логику приложения.

Особенности офлайн-режима и комбинированный сценарий

Если торговые представители работают в точках с нестабильным доступом к сети интернет, прямое обращение к HTTP-сервису в момент редактирования строки может быть недоступно. В этом случае применяют комбинированный сценарий:

  1. В офлайн-режиме заказ оформляется по базовым ценам соглашения торговой точки без применения динамических серверных акций.
  2. Мобильное приложение информирует пользователя о том, что заказ сформирован в автономном режиме и расчетные акции применятся при выходе на связь.
  3. При появлении сети в процессе синхронизации документ передается в центральную базу, где пересчитывается автоматически, а обновленные суммы и предоставленные подарки возвращаются на устройство в статус заказа.

Альтернативные технологические варианты реализации

Помимо разработки автономного мобильного приложения на мобильной платформе 1С, рассмотрим другие варианты реализации мобильной торговли:

  1. Мобильный клиент 1С (Mobile Client): прямое подключение к центральной информационной базе через мобильный клиент платформы 8.3. Интерфейс адаптируется под экраны мобильных устройств. Все проверки, скидки и акции работают непосредственно в коде основной базы. Главное требование — постоянное интернет-соединение.
  2. Кроссплатформенное нативное приложение с REST API: разработка легковесного мобильного интерфейса на сторонних фреймворках (Flutter, React Native) с взаимодействием через опубликованные HTTP-сервисы 1С. Позволяет добиться максимальной скорости интерфейса при каталогах в десятки тысяч позиций, сохраняя всю бизнес-логику на стороне 1С.
← На главную