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

16.09.13

Интеграция - Перенос данных 1C

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Файлы
.zip 15,90Kb
37
37 Скачать (1 SM) Купить за 1 850 руб.

Вот уже второй месяц я тружусь над логистическим решением, которое основано на взаимодействии мобильной платформы 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! 10%

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

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

50722 45650 руб.

04.08.2015    165037    383    275    

369

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 руб.

12.06.2017    140089    781    295    

408

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

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

28000 руб.

15.12.2021    23077    157    47    

116

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

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

84000 руб.

19.08.2020    24337    23    1    

25

SALE! 10%

Перенос данных 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 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

50722 45650 руб.

15.04.2019    71477    180    148    

120

SALE! 10%

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

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

50722 45650 руб.

24.04.2015    194115    148    242    

279

SALE! 10%

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

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

50722 45650 руб.

31.10.2014    235978    99    333    

304

SALE! 10%

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

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

48278 43450 руб.

03.12.2020    35990    90    62    

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

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