Интеграция типовой конфигурации с мобильным приложением

16.09.13

Интеграция - Обмен между базами 1C

В данной статье речь пойдет о том, как быстро наладить взаимодействие конфигурации УТ 11 из мобильной конфигурацией, написанной на 1С 8.3. В качестве примера мы вместе разработаем отчет «Валовая прибыль по месяцам», который сможем запускать из смартфона или планшета под управлением операционной системы Android 4.2. Взаимодействие между информационной базой и мобильным приложением будет осуществляется с помощью web-сервиса.

Скачать файлы

Наименование Файл Версия Размер
Файлы
.zip 15,90Kb
37
.zip 1 15,90Kb 37 Скачать

Вот уже второй месяц я тружусь над логистическим решением, которое основано на взаимодействии мобильной платформы Android и конфигурации УТ 11. Разработку под Android осуществляет подрядчик, но мне всегда тоже очень хотелось написать приложение для модного «гаджета». К счастью, компания 1С, в стремлении сделать свои продуты более мобильными и облачными, выпустила платформу 8.3, с которой мы и будем играть в «мобильное приложение».

Принцип работы приложения представлен на схеме.

Схема работы приложения

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

РАЗРАБОТКА WEB-СЕРВИСА

Для начала определимся с тем, что мы буде передавать и как нам упаковать нужные данные в формат XML. Для построения отчета на клиенте, на необходимо загрузить список организаций, а также выгрузить оборот по данных организациях.

Создадим XDTO-пакет из наименованием CrossProfit следующей структуры.

Пакет XDTO

Объект Organization используется для передачи элемента справочника «Организации». В нем мы передаем уникальный идентификатор ссылки на справочник, а также наименование, которое необходимо для представления справочника пользователю.

В объект OrganizationList мы записываем список организаций, другими словами он фактически является массивом организаций.

Объект Item содержит информацию о валовой прибыли организации за месяц. Соответственно GUID – это уникальный идентификатор элемента справочника, Period – дата, на которую мы получаем оборот, а Revenue и Cost – значения итогов.

Создадим веб-сервис в конфигурации (под таким же именем, как и пакет XDTO). В нашем сервисе будет всего два

  1. GetOrganizationList – метод, который возвращает список организаций. Тип возвращаемого значения OrganizationList.
  2. GetData – метод возвращает информацию по оборотам организаций. Тип возвращаемого значения Items.

При работе с веб-сервисами не забывайте указывать пространство имен и следите за тем, чтобы оно не изменялось во время разработки.

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

Функция GetOrganizationList()

   
OrganizationList = СоздатьФабрикуXDTOПоИмени("OrganizationList");

   
Запрос = Новый Запрос("ВЫБРАТЬ
                          | Ссылка          КАК Ссылка,
                          | Наименование    КАК Наименование
                          |ИЗ
                          | Справочник.Организации
                          |ГДЕ
                          | Не ПометкаУдаления"
);

   
Выборка = Запрос.Выполнить().Выбрать();

    Пока
Выборка.Следующий() Цикл
       
Organization      = СоздатьФабрикуXDTOПоИмени("Organization");
       
Organization.GUID = Строка(Выборка.Ссылка.УникальныйИдентификатор());
       
Organization.Name = Выборка.Наименование;
       
OrganizationList.Organization.Добавить(Organization);
    КонецЦикла;

    Возврат
OrganizationList;

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

Функция
GetData()

   
Items = СоздатьФабрикуXDTOПоИмени("Items");

   
Запрос = Новый Запрос("ВЫБРАТЬ
                |   ВыручкаИСебестоимостьПродажОбороты.Период КАК Период,
                |   АналитикаУчета.Организация КАК Организация,
                |   СУММА(ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот) КАК Выручка,
                |   СУММА(ВыручкаИСебестоимостьПродажОбороты.СебестоимостьОборот) КАК Себестоимость
                |ИЗ
                |   РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(, , Месяц, ) КАК ВыручкаИСебестоимостьПродажОбороты
                |       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаУчета
                |       ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам = АналитикаУчета.КлючАналитики

                |СГРУППИРОВАТЬ ПО
                |   ВыручкаИСебестоимостьПродажОбороты.Период,
                |   АналитикаУчета.Организация
                |
                |УПОРЯДОЧИТЬ ПО
                |   ВыручкаИСебестоимостьПродажОбороты.Период,
                |   АналитикаУчета.Организация.Наименование"
);

   
Выборка = Запрос.Выполнить().Выбрать();

    Пока
Выборка.Следующий() Цикл
       
Item = СоздатьФабрикуXDTOПоИмени("Item");
       
Item.GUID       = Строка(Выборка.Организация.УникальныйИдентификатор());
       
Item.Period     = Выборка.Период;
       
Item.Revenue    = Выборка.Выручка;
       
Item.Cost       = Выборка.Себестоимость;
       
Items.Item.Добавить(Item);
    КонецЦикла;

    Возврат
Items;

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


Функция
СоздатьФабрикуXDTOПоИмени(Имя)

   
ТипФабрики = ФабрикаXDTO.Тип("http://www.avtomat.biz/crossprofit", Имя);
    Возврат
ФабрикаXDTO.Создать(ТипФабрики);

КонецФункции
// СоздатьФабрикуXDTOПоИмени()
 

В примере с веб-сервисом будет работать пользователь из полными правами, однако целесообразно создать дополнительное право, на использование операций веб сервиса.

Осталось только осталось провести публикацию на веб-сервере. Я использую Apache 2.2.

Публикация веб-сервиса на веб-сервере

В случае успешной публикации мы сможем получить WSDL описание нашего веб-сервиса с помощью браузера, по ссылке http://127.0.0.1/yt/ws/CrossProfit?wsdl

WSDL описание веб-сервиса

Все наш веб-сервис готов, переходим к разработки клиентского приложения.

РАЗРАБОТКА КЛИЕНТСКОГО ПРИЛОЖЕНИЯ

Как создавать и собирать приложения для Android с помощью 1С 8.3, я не стану, в интернете есть много статей на эту тему, например вот здесь.

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

WS ссылка

После чего платформа самостоятельно загрузит все необходимые данные. Мы должны получить примерно следующий результат.

Модель данных веб-сервиса

Теперь все готово для работы с сервисом. Создадим справочник Организации и регистр, где будем сохранять данные. Ниже приведу код общего модуля, для работы с веб-сервисом.


Процедура ЗагрузитьДанныеВРегистр() Экспорт

   
ВебСервис = ПодключитьВебСервис();

   
СписокОрганизаций = ВебСервис.GetOrganizationList().ПолучитьСписок("Organization");

    Для каждого
Организация Из СписокОрганизаций Цикл

       
ИдентификаторОрганизации = Новый УникальныйИдентификатор(Организация.GUID);
       
ОрганизацияСсылка        = Справочники.Организации.ПолучитьСсылку(ИдентификаторОрганизации);

        Если
ПустаяСтрока(ОрганизацияСсылка.ВерсияДанных) Тогда
           
СоздатьЭлементСправочникаОрганизации(ОрганизацияСсылка, Организация.Name);
        КонецЕсли;

    КонецЦикла;

   
Данные       = ВебСервис.GetData().ПолучитьСписок("Item");
   
НаборЗаписей = РегистрыСведений.ВаловаяПрибыль.СоздатьНаборЗаписей();
   
НаборЗаписей.Записать();

    Для каждого
ДанныеЗапись ИЗ Данные Цикл
       
ИдентификаторОрганизации = Новый УникальныйИдентификатор(ДанныеЗапись.GUID);
       
ОрганизацияСсылка        = Справочники.Организации.ПолучитьСсылку(ИдентификаторОрганизации);
        Если
ПустаяСтрока(ОрганизацияСсылка.ВерсияДанных) Тогда
            Продолжить;
        КонецЕсли;
       
НаборЗаписей = РегистрыСведений.ВаловаяПрибыль.СоздатьНаборЗаписей();
       
НаборЗаписей.Отбор.Период.Установить(ДанныеЗапись.Period);
       
НаборЗаписей.Отбор.Организация.Установить(ОрганизацияСсылка);
       
Запись                  = НаборЗаписей.Добавить();
       
Запись.Период           = ДанныеЗапись.Period;
       
Запись.Организация      = ОрганизацияСсылка;
       
Запись.Выручка          = ДанныеЗапись.Revenue;
       
Запись.Себестоимость    = ДанныеЗапись.Cost;
       
НаборЗаписей.Записать();
    КонецЦикла;

КонецПроцедуры




// Служебные процедуры и функции

Функция ПодключитьВебСервис()
   
Прокси              = WSСсылки.CrossProfit.СоздатьWSПрокси("http://www.avtomat.biz/crossprofit","CrossProfit", "CrossProfitSoap12");
   
Прокси.Пользователь = Константы.Пользователь.Получить();
   
Прокси.Пароль       = Константы.Пароль.Получить();
    Возврат
Прокси;
КонецФункции

Процедура
СоздатьЭлементСправочникаОрганизации(ОрганизацияСсылка, Наименование)

   
ЭлементСправочник              = Справочники.Организации.СоздатьЭлемент();
   
ЭлементСправочник.Наименование = Наименование;

   
ЭлементСправочник.УстановитьСсылкуНового(ОрганизацияСсылка);
   
ЭлементСправочник.Записать();

КонецПроцедуры

Функцию ПодключитьВебСервис используем для создания объекта WSПрокси, заполняются данные для регистрации из соответствующих констант. Процедура ЗагрузитьДанныеВРегистр анализирует полученные данные и записывает их в нужные справочники и регистры.

В конфигурации есть еще три общих формы.

Форма меню, она размещается в рабочей области начальной страницы.

Форма меню программы

Форма настройки, используется для сохранения настроек пользователя.

Форма настроек авторизации

Ну и сама форма отчета.

Форма отчета мобильного приложения

Приведу пример кода, который строит отчет в мобильном приложении.

&НаКлиенте
Процедура СформироватьОтчет(Команда)
    Если
ПустаяСтрока(Месяц) Тогда
       
Сообщение = Новый СообщениеПользователю;
       
Сообщение.Текст = НСтр("ru='Необходимо указать месяц'");
       
Сообщение.Поле = "Месяц";
       
Сообщение.Сообщить();
        Возврат;
    КонецЕсли;
    Если
Год < 1 Тогда
       
Сообщение = Новый СообщениеПользователю;
       
Сообщение.Текст = НСтр("ru='Необходимо указать год'");
       
Сообщение.Поле = "Год";
       
Сообщение.Сообщить();
        Возврат;
    КонецЕсли;
   
СформироватьОтчетНаСервере();
КонецПроцедуры


&НаСервере
Процедура СформироватьОтчетНаСервере()

   
Макет            = ПолучитьОбщийМакет("МакетОтчета");
   
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   
ОбластьСтроки    = Макет.ПолучитьОбласть("Строки");

   
Период = Дата(Формат(Год, "ЧГ=0") + ПолучитьНомерМесяца() + "01000000");

   
НаборЗаписей = РегистрыСведений.ВаловаяПрибыль.СоздатьНаборЗаписей();
   
НаборЗаписей.Отбор.Период.Установить(Период);

   
НаборЗаписей.Прочитать();

   
Результат.Вывести(ОбластьЗаголовок);

    Для каждого
Запись ИЗ НаборЗаписей Цикл
       
ОбластьСтроки.Параметры.Заполнить(Запись);
       
ОбластьСтроки.Параметры.Прибыль = Запись.Выручка - Запись.Себестоимость;
       
Результат.Вывести(ОбластьСтроки);
    КонецЦикла;

КонецПроцедуры
// СформироватьОтчетНаСервере()

&НаСервере
Функция ПолучитьНомерМесяца()

    Если
Месяц = "Январь" Тогда
        Возврат
"01";
    КонецЕсли;

    Если
Месяц = "Февраль" Тогда
        Возврат
"02";
    КонецЕсли;

    Если
Месяц = "Март" Тогда
        Возврат
"03";
    КонецЕсли;

    Если
Месяц = "Апрель" Тогда
        Возврат
"04";
    КонецЕсли;

    Если
Месяц = "Май" Тогда
        Возврат
"05";
    КонецЕсли;

    Если
Месяц = "Июнь" Тогда
        Возврат
"06";
    КонецЕсли;

    Если
Месяц = "Июль" Тогда
        Возврат
"07";
    КонецЕсли;

    Если
Месяц = "Август" Тогда
        Возврат
"08";
    КонецЕсли;

    Если
Месяц = "Сентябрь" Тогда
        Возврат
"09";
    КонецЕсли;

    Если
Месяц = "Октябрь" Тогда
        Возврат
"10";
    КонецЕсли;

    Если
Месяц = "Ноябрь" Тогда
        Возврат
"11";
    КонецЕсли;

    Если
Месяц = "Декабрь" Тогда
        Возврат
"12";
    КонецЕсли;

    Возврат
"00";

КонецФункции
// ПолучитьНомерМесяца()

Как видите, основным неудобством мобильной платформы является отсутствие запросов и СКД, с которыми так удобно работать. Скомпилируем базу и посмотрим что у нас получилось.

Форма меню основного окна программы и настроек авторизации.

Основное меню программы Форма авторизации

Форма отчета из данными.

Форма отчета Форма отчета

В файле к статье прикреплены файл конфигурации и XML схема пакета XDTO.

Статья написана по материалам сайта avtomat.biz

Мобильное приложение веб-сервис веб-сервер 8.3

См. также

SALE! 20%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

45650 36520 руб.

04.08.2015    159711    364    267    

345

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 22572 руб.

12.06.2017    134959    721    291    

388

SALE! 20%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 27720 руб.

15.04.2019    68428    179    138    

111

SALE! 20%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 34760 руб.

03.12.2020    34174    80    58    

78

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 25200 руб.

23.07.2020    46311    196    64    

158

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9217    9    8    

10

SALE! 10%

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 25200 руб.

15.12.2021    20259    132    38    

90

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    231431    124    327    

296
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. DitriX 2091 16.09.13 11:55 Сейчас в теме
"Хорошо что месяцев 12" (с)
НаименованиеМесяца = Формат(НовДата, "ДФ=MMMM");

Та и вообще - слишком уж вы усложнили все.
При передачи данных с 1С в 1С - используется минимум кода.
Ваш подход не совсем верный, если вы использовали такие сложные механизмы для примера, то я не увидел этот пример.
Если по не знанию более легкого пути решения, то рекомендую помыслить креативно, тут вся ваша зада уложится в десяток строк кода и пустой веб сервис.
3. awk 741 18.09.13 22:51 Сейчас в теме
(1) DitriX, Если он покреативит, то для таких вещей и 1С на андроиде не нужно будет. Достаточно синхронизации отчетов (exel на андроиде есть) почта, фтп, облака. Фот если бы данные в андроиде вводить, а потом передавать в 1С - это куда более интересно.
4. DitriX 2091 18.09.13 23:12 Сейчас в теме
(3) это была шутка?
Это основная цель веб сервисов - отправка и получение данных.
Выбирая организацю - вы же должны как то ее передать в 1с что бы отбор по ней сделать.
И то, что вы этого не поняли - еще один камень в огород этой статьи :)
5. awk 741 18.09.13 23:26 Сейчас в теме
(4) DitriX,
1. Шутка, но грустная... Так как если сесть и подумать, не абстрактно, а применительно к ситуации и людям, то смысл в таких отчетах через 1С мобильное приложение?
2.Посмотри функции веб сервисов (GetOrganizationList, Getdata). 1С уже умеет угадывать параметры? ;)
6. DitriX 2091 19.09.13 09:54 Сейчас в теме
(5)1. При чем тут отчеты? Вы таким образом можете гонять произвольные данные.
2. А этим вы пытались подтвердить сказанное мною выше?
2. detro 46 16.09.13 16:30 Сейчас в теме
"WSСсылки.CrossProfit.СоздатьWSПрокси("http://www.avtomat.biz"
пароль будет передан "в открытую"
7. BenderOstap 16.11.13 15:07 Сейчас в теме
"Интеграция типовой конфигурации из мобильным приложением". Может хватит уже над языком издеваться?
Прикрепленные файлы:
8. akomar 454 16.11.13 15:48 Сейчас в теме
Оставьте свое сообщение