Автоматизация работы выездных торговых представителей — одна из классических задач при сопровождении 1С:Управление торговлей 10.3. Основная сложность заключается в архитектурных ограничениях конфигурации: она создавалась под обычное приложение и часто работает в режиме совместимости с платформой 8.2. Разберем ключевые подходы к реализации мобильного рабочего места, проанализируем сложности каждого варианта и выберем оптимальный путь.
На первый взгляд самым логичным кажется создание одной управляемой формы документа ЗаказПокупателя и публикация базы на веб-сервере для работы через браузер планшета. Однако на практике этот путь сопряжен с серьезными трудозатратами:
&НаСервере, &НаКлиенте) и изменения свойств общих модулей (установка флагов «Сервер», «Вызов сервера»).Данный вариант предполагает запуск обычного приложения через RDP-клиент на планшете со специально упрощенными формами документов:
Практика показывает, что наиболее надежный способ — разделение контура сбора заявок и основной учетной системы. На планшет устанавливается мобильное приложение, которое хранит локальный каталог товаров, остатки, цены и список контрагентов, позволяя агенту оформлять документы без доступа к сети.
Рассмотрим, как выстроить архитектуру такого решения:
Номенклатура, Контрагенты, ДоговорыКонтрагентов) и документ ЗаказКлиента. Мобильная платформа 1С предоставляет готовые адаптивные интерфейсы с удобной прокруткой и поддержкой сенсорного ввода.В конфигурациях с режимом совместимости 8.2 нативные HTTPСервисы недоступны. Для передачи данных между мобильным приложением и центральной базой применяются:
Проанализируем пример серверной функции центральной базы, принимающей данные заказа от мобильного устройства в формате структуры и создающей документ:
Функция ЗагрузитьЗаказИзМобильного(ДанныеЗаказа) Экспорт
НовыйЗаказ = Документы.ЗаказПокупателя.СоздатьДокумент();
НовыйЗаказ.Дата = ТекущаяДата();
НовыйЗаказ.Контрагент = ДанныеЗаказа.Контрагент;
НовыйЗаказ.ДоговорКонтрагента = ДанныеЗаказа.Договор;
НовыйЗаказ.Организация = ДанныеЗаказа.Организация;
НовыйЗаказ.СкладГруппа = ДанныеЗаказа.Склад;
Для Каждого СтрокаТЧ Из ДанныеЗаказа.Товары Цикл
НоваяСтрока = НовыйЗаказ.Товары.Добавить();
НоваяСтрока.Номенклатура = СтрокаТЧ.Номенклатура;
НоваяСтрока.Количество = СтрокаТЧ.Количество;
НоваяСтрока.Цена = СтрокаТЧ.Цена;
НоваяСтрока.Сумма = СтрокаТЧ.Количество * СтрокаТЧ.Цена;
КонецЦикла;
Попытка
НовыйЗаказ.Записать(РежимЗаписиДокумента.Запись);
Возврат Истина;
Исключение
ЗаписьЖурналаРегистрации("ОбменСМобильными", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
КонецФункции
Если разработка собственной мобильной конфигурации нецелесообразна по срокам, стоит рассмотреть готовые варианты: