После выхода версии платформы 8.3.6 у пользователей программы 1С появилась возможность использовать мобильный клиент и мобильное приложение, что значительно расширило функциональное применение программы 1С Предприятие.
Наша задача состояла в разработке решения, с помощью которого на мобильном телефоне можно вносить, просматривать информацию, необходимую для управления бизнесом по оказанию услуг хостинга. То есть пользователь должен иметь возможность работать с одной и той же информацией как с телефона так и с рабочего компьютера в зависимости от возможности и своего физического местоположения.

Задача была реализована на платформе 8.3.13.1644 для ОС Windows и на мобильной платформе 8.3.13.64 для ОС Android. Между десктопной базой данных и мобильным решением был настроен обмен по встроенной в платформу технологии WEB-сервис. Через Apache HTTP Server 2.2 был опубликован мобильный клиент и настроен обмен. Решение реализовано именно через мобильный клиент, так как нам показалось, что создавать полноценное мобильное приложение более проблематично и сложно, чем настроить опубликовать через веб-сервер мобильный клиент. К тому же мобильных приложений нужно разрабатывать минимум два (IOS, Android). А к мобильному клиенту могут подключится с любой ОС, с любого мобильного устройства.
Теперь подробнее как это все создавалось и как это работает.

НА СТОРОНЕ ПЛАТФОРМЫ 1С НА WINDOWS

Создана с нуля конфигурация 1С со свойством конфигурации "Назначение использования": приложение для платформы, приложение для мобильной платформы. В конфигурацию добавлены следующие объекты:

- справочники, документы
- Роль с полными правами на все объекты
- Web-сервис для обмена с мобильным клиентом
- План обмена "Мобильный обмен" для регистрации обменов
- Общая команда "Выполнить синхронизацию" для запуска обмена в мобильном клиенте

Наиболее интересные с точки зрения разработки Web-сервис и команда запускающая синхронизацию. На них остановимся подробнее.

WEB-СЕРВИС

В ветку Конфигурации на вкладке Общие находим Web-сервисы и добавляем новый - WebОбмен с такими параметрами:
- название: WebОбмен
- операции: добавляем данные с типом ValueStorage (http://v8.1c.ru/8.1/data/core)
- URL пространства имен: Data
- пакеты XDTO: http://v8.1c.ru/8.1/data/core
- имя файла публикации: WebОбмен.1cws

 

В модуль нашего веб-сервиса добавляем две функции:

Функция Синхронизация(Данные)
    ОтветКлиенту = ЗарегистрироватьВыгрузку  (Данные.Получить () ) ;
    Возврат Новый ХранилищеЗначения (ОтветКлиенту, Новый СжатиеДанных (9));

КонецФункции

Функция ЗарегистрироватьВыгрузку (СтрокаСообщения)
    
    ЧтениеХМЛ = Новый ЧтениеXML ;
    ЧтениеХМЛ.УстановитьСтроку(СтрокаСообщения);
    ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
    ЧтениеСообщения.НачатьЧтение(ЧтениеХМЛ);
    Отправитель = ЧтениеСообщения.Отправитель;
    ПланыОбмена.УдалитьРегистрациюИзменений(Отправитель, Отправитель.НомерПринятого);
    Пока ВозможностьЧтенияXML(ЧтениеХМЛ) Цикл
        Данные = ПрочитатьXML (чтениеСообщения.ЧтениеXML);
        Если НЕ Данные = неопределено Тогда
            Данные.ОбменДанными.Отправитель = Отправитель;
            Данные.ОбменДанными.Загрузка = Истина;
            Данные.Записать ();
        КонецЕсли;
    КонецЦикла;
    ЧтениеСообщения.ЗакончитьЧтение();
    
    ЗаписьХМЛ = Новый ЗаписьXML;
    ЗаписьХМЛ.УстановитьСтроку();
    ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
    ЗаписьСообщения.НачатьЗапись(ЗаписьХМЛ, Отправитель);
    ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(Отправитель, ЗаписьСообщения.НомерСообщения);
    
    Пока ВыборкаИзменений.Следующий() Цикл
        ОбъектОбмена = ВыборкаИзменений.Получить();
        ЗаписатьXML (ЗаписьХМЛ, ОбъектОбмена,)
    КонецЦикла;
    ЗаписьСообщения.ЗакончитьЗапись();
    Возврат ЗаписьХМЛ.Закрыть();
           
КонецФункции

КОМАНДА ВЫПОЛНИТЬ СИНХРОНИЗАЦИЮ

В ветку конфигурации на вкладке Общие находим Общие команды и добавляем команду ВыполнитьСинхронизациюСБД. В модуль команды помещаем следующий код:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

    Если ВыполнитьСинхронизациюНаСервере() Тогда
        Сообщить("Синхронизация прошла успешно!");
    Иначе
        Сообщить("При синхронизации были ошибки!");
    КонецЕсли;
    
КонецПроцедуры

&НаСервере

Функция ВыполнитьСинхронизациюНаСервере()  
    
    Попытка
        ВСОпределение = новый WSОпределения ("http://95.50.114.104:8460/InfoBase/ws/WebОбмен.1cws?wsdl" ); // InfoBase - это имя публикации Через меню Администрирование - Публикация ИБ    
        ВСервис = ВСОпределение.Сервисы.Получить("Data", "WebОбмен");
        ВТочкаВхода = ВСервис.ТочкиПодключения.Получить ("WebОбменSoap");
        ВОперация = ВТочкаВхода.Интерфейс.Операции.Получить ("Синхронизация");
        Данные = Новый ХранилищеЗначения (ЗарегестрироватьВыгрузку (), новый СжатиеДанных (9) );
        ДанныеXDTO = ВСОпределение.ФабрикаXDTO.Создать(ВОперация.Параметры.Получить ("Данные").Тип, Данные);
        ВСПрокси = новый WSПрокси (ВСОпределение, "Data", "WebОбмен", "WebОбменSoap");
        Ответ = ВСПрокси.Синхронизация (ДанныеXDTO);
        
        ПринятьИзмененияПоПлану (Ответ.Получить ());
        Возврат Истина
    Исключение
        Сообщить (ОписаниеОшибки ());
        Возврат Ложь;
        
    КонецПопытки;
           
КонецФункции

&НаСервере

Процедура ПринятьИзмененияПоПлану (СтрокаСообщения)
    
    ЧтениеХМЛ = Новый ЧтениеXML ;
    ЧтениеХМЛ.УстановитьСтроку(СтрокаСообщения);
    ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
    ЧтениеСообщения.НачатьЧтение(ЧтениеХМЛ);
    
    Пока ВозможностьЧтенияXML (ЧтениеХМЛ) Цикл
        Данные = ПрочитатьXML (ЧтениеСообщения.ЧтениеXML);
        
        Если НЕ Данные = неопределено Тогда
            Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
            Данные.ОбменДанными.Загрузка = Истина;
            
            Данные.Записать ();
            
        КонецЕсли;
    КонецЦикла;
    ЧтениеСообщения.ЗакончитьЧтение();
    
    
КонецПроцедуры

&НаСервере

Функция ЗарегестрироватьВыгрузку ()
    
    ЗаписьХМЛ = новый ЗаписьXML;
    ЗаписьХМЛ.УстановитьСтроку();
    ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
    
    Узел = ПланыОбмена.МобильныйОбмен.НайтиПоКоду("001");
    ЗаписьСообщения.НачатьЗапись(ЗаписьХМЛ, Узел);
    
    ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(Узел, ЗаписьСообщения.НомерСообщения);
    Пока ВыборкаИзменений.Следующий() Цикл
        ОбъектОбмена = ВыборкаИзменений.Получить();
        ЗаписатьXML (ЗаписьХМЛ, ОбъектОбмена);
    КонецЦикла;
    ЗаписьСообщения.ЗакончитьЗапись();
    
    Возврат ЗаписьХМЛ.Закрыть();
    
КонецФункции

В режиме 1С Предприятие создаете узлы Центральной базы и Мобильного клиента. Коды узлов прописываете в коде модуля общей команды.

Чтобы начать обмен с мобильным клиентом нам необходимо:

1. Опубликовать наш WEB-сервис на веб-сервере. Для этого в режиме Конфигуратор заходим в меню Администрирование - Публикация базы на веб-сервере. Если все сделали правильно в окошке публикации будет виден наш web-сервис с названием WebОбмен. Ставите напротив нашего WebОбмен галочку и нажимаете опубликовать. К моменту публикации Apache HTTP Server 2.2 должен быть настроен и находится в рабочем состоянии. Как запустить Apache, если что.

2. Опубликовать мобильный клиент. Для этого в режиме Конфигуратор заходим в меню Конфигурация - Мобильное приложение - Публиковать. Параметры, которые необходимо указать смотрите на скриншоте:

НА СТОРОНЕ МОБИЛЬНОГО КЛИЕНТА

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

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

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

Дальнейшая наша разработка будет направлена на синхронизацию созданой конфигурации с любой другой конфигурацией 1С через обмен данными. Метод обмена и его реализация будут опубликованы на нашем сайте в разделе Программирование.

Наши проекты | Купить 1С | Услуги по 1С | ПрограммированиеАренда сервера | FAQ 1C

Сопровождение, доработка, консультация, обучение, по программе 1С. Информационно-технический консалтинг, почасовая и сдельная оплата. Запуск новых проектов, реализация решений под ключ.

© 2021 1С ПРОЕКТЫ И РЕШЕНИЯ /1С СЕРВИС 24/7