1C + ЭДО Мегафон



Тестируем модуль обмена 1С с ЭДО Мегафон (модуль прилагается пользователям ресурса ЭДО Мегафон бесплатно).

Пару недель назад получил приглашение от партнера ПАО Мегафон для участия в электронном документообороте, и хотел бы поделиться, что нового для себя открыл в этой системе. Начнем с регистрации, переходим на ссылку ресурса https://doc.megafon.ru/Account/Login вносим свой почтовый адрес и далее реквизиты компании, все достаточно просто и понятно, пару подтверждений и мы уже в личном кабинете. Для нас уже подготовлено заявление на присоединение к СЭД, и первым делом начнем с регистрации электронной подписи, для этого мы можем использовать уже имеющийся для сдачи отчетности ключ и сертификат. Как ни странно, на всю эту операцию понадобилось минуты две, и пока мы ждем подтверждение по СЭД, посмотрим раздел «Документы». В нем мы можем создать по шаблону формализованные документы, делаем сразу документ «Акт на работы»  и сохраним его, подписывать мы пока не можем. Второй вариант: сканируем наш акт и крепим через загрузку произвольных форм, третий вариант: можем загружать «xml» версию акта, но ее у нас пока готовой нет. Пока все это проделывали, уже пришло подтверждение заявления, и теперь можем подписать документы. Пробуем подписать, но «Chrome» ругается на поддержу NАPI, поэтому его закрываем и переходим в имеющийся встроенный «Explorer», в нем все спокойно подписываем и жмем «Получить/Отправить», документооборот с нашей стороны готов.  На тестирование ресурса дается 14 дней, и предлагает приобрести тарифы, которые на мой взгляд на текущий момент самые гибкие, меня устроит тариф 100 документов на год стоимостью 1000 рублей, его и выбираем. После окончания тестового периода автоматически переходим на тариф «0», который может только принимать входящие документы, т.к. они бесплатны.

Смотрим дальше интерфейс ресурса, в нем видим раздел «Модуль 1С», в котором находится сам модуль и инструкция к нему. Что хотим получить, естественно обмениваться с ресурсом документами из учетной системы в режиме клиента, для этого нам и понадобится настроить данную обработку. Пробуем открыть обработку под 8.3 платформой управляемый режим — ошибка, переходим в обычный режим толстого клиента и в нем видим окно входа, сразу предлагающее логин и пароль нашей регистрации. Проходим регистрацию и получаем интерфейс, по функционалу схожий с веб-ресурсом, т.е. можем уже документы отправлять прямо из 1С. Но всего этого будет мало для компании с оборотом документов более 500 листов в день, рассылать такое количество клиентам будет трудозатратно. Открываем конфигуратор и начинаем подготовку к разработке: 1. Обменника в управляемом режиме; 2. Настройке плана обмена для регистрации ЭДО, с возможностью автоматической рассылки проведенных документов.

Пока наши специалисты готовят задание, посмотрим, что же предлагает готового обработка. Модуль формы и модуль объекта говорит о том, что управляемый режим все же не предусмотрен. Поддерживаемые для интеграции конфигурации 1С:  некая «Универсальная интеграция», «Интеграция бухгалтерия», «УПП13», «КА», «УТ102», «УТ103» и зачемто выделена «Интеграция АльфаАвто41». Просматривая список всех модулей, имя самой обработки «UnicloudBusiness365», делаем вывод что за основу взят проект компании «ЮниКлауд Лабс» — эта компания создана в 2011 году, входит в группу компаний АйТи, является резидентом «Сколково» с сентября 2011 года. В январе 2012 года получила грант от фонда «Сколково» на развитие. Компания имеет офисы в Москве и УфеСистема «Unicloud Business 365» была анонсирована в середине 2012 года. Она представляет собой облачный сервис для совместной работы сотрудников небольшой компании, включающий управление поручениями, учет и ведение клиентов, проектную деятельность и работу с первичными документами. Система интегрирована с операторами электронного документооборота – «Калуга Астрал», «СКБ Контур», «Такском». Есть хороший видеоматериал,демонстрирующий функционал «UnicloudBusiness365» системы https://www.youtube.com/watch?v=Tky1HgCL-6g.

Продолжим дальше, теперь у нас есть информация, что основой ресурса является функционал интеграции с нашими почтовыми ящиками, все это хорошо, но интересует, как же происходит обмен с технической точки зрения. Модуль JSON наводит на мысль, что использован данный формат, но фактов пока нет, предполагалось, что все же в «xml» формате. Смотрим найденную команду выгрузки, она же оказалась и командой загрузки:

функция ВызовАпиБизнес365(АдресРесурса, Метод, ТелоЗапроса = неопределено, CАвторизацией = Истина, СОкномОшибки = истина) экспорт
ВывестиОкноАвторизации = ложь;
ВывестиОкноОшибки = ложь;
Попытка
НастройкиАпи = НастройкиАпиБизнес365();
Соединение = Новый HTTPСоединение(НастройкиАпи.host,НастройкиАпи.port , , , );
Заголовки = Новый Соответствие();
Заголовки.Вставить("host", НастройкиАпи.hostport);
Заголовки.Вставить("Content-Type", "application/json");
АдресРесурсаПолный = НастройкиАпи.apiversion + АдресРесурса;
Если CАвторизацией = Истина тогда
дата = ТекущаяДата();
данные = Строка(дата) + АдресРесурсаПолный;
ключ = Нрег(ОдинСАдаптер_НастройкиТекущегоПользователя_ПолучитьНастройку("Бизнес365КлючПользователя"));
hash = ПолучитьМодуль("Модуль_SHA1").ПолучитьSHA(ключ, данные);
hash64 = ПолучитьМодуль("Модуль_Base64").КодироватьМассивБайтовВСтроку6Бит(hash);
логинПользователя = ОдинСАдаптер_НастройкиТекущегоПользователя_ПолучитьНастройку("Бизнес365ЛогинПользователя");
Заголовки.Вставить("X-Authorization", ?(ЗначениеЗаполнено(логинПользователя),логинПользователя,"")  + ":" + hash64 + ":auth2");
Заголовки.Вставить("X-Date", дата);
КонецЕсли;
Если Метод = "POST" тогда
Запрос = Новый HTTPЗапрос(АдресРесурсаПолный, Заголовки);
Если ЗначениеЗаполнено(ТелоЗапроса)=Истина тогда
ТелоJson = ПолучитьМодуль("Модуль_JSON").ЗаписатьJSON(ТелоЗапроса, ИСТИНА);
Запрос.УстановитьТелоИзСтроки(ТелоJson);
КонецЕсли;
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
КонецЕсли;
Если Метод = "GET" тогда
Если ЗначениеЗаполнено(ТелоЗапроса)=Истина тогда
Первый = Истина;
Для Каждого Элемент Из ТелоЗапроса Цикл
Если Первый Тогда
АдресРесурсаПолный = АдресРесурсаПолный + "?";
Первый = Ложь;
Иначе
АдресРесурсаПолный = АдресРесурсаПолный + "&";
КонецЕсли;
АдресРесурсаПолный = АдресРесурсаПолный + Элемент.Ключ;
АдресРесурсаПолный = АдресРесурсаПолный + "=";
АдресРесурсаПолный = АдресРесурсаПолный + Элемент.Значение;
КонецЦикла;
КонецЕсли;
Запрос = Новый HTTPЗапрос(АдресРесурсаПолный, Заголовки);
Ответ = Соединение.Получить(Запрос);
КонецЕсли;
РезультатJson = Ответ.ПолучитьТелоКакСтроку();
Результат = ПолучитьМодуль("Модуль_JSON").ПрочитатьJSON(РезультатJson, ИСТИНА);
Data = Результат["Data"];
Если Ответ.КодСостояния = 401 Тогда
ВывестиОкноАвторизации = истина;
ИначеЕсли Результат["Status"]["Code"] <> "Ok" Тогда
ТекстИсключения = Результат["Status"]["Message"];
Если CАвторизацией И СОкномОшибки Тогда
ВывестиОкноОшибки = истина;
КонецЕсли;
КонецЕсли;
Исключение
ВызватьИсключение ("Ошибка при запросе к " + НастройкиИмяСистемы());
КонецПопытки;
Если ВывестиОкноАвторизации Тогда
РешениеОшибкиАвторизации();
Возврат ВызовАпиБизнес365(АдресРесурса, Метод, ТелоЗапроса, CАвторизацией)
КонецЕсли;
Если ВывестиОкноОшибки Тогда
РешениеОшибки(ТекстИсключения);
Возврат ВызовАпиБизнес365(АдресРесурса, Метод, ТелоЗапроса, CАвторизацией)
КонецЕсли;
Если ЗначениеЗаполнено(ТекстИсключения) Тогда
ВызватьИсключение (ТекстИсключения);
КонецЕсли;
Возврат Data;
конецФункции

…вот и нашлось «ТелоJSON»- значит, обмен с узлом в формате JSON, и недавно подготовленная публикация //infostart.ru/public/436405/ на данную тему пригодится, тем более, что планируем интегрироваться не только с 1С 8.3 платформой, но и с базами на различных СУБД. Код модуля достаточно «прозрачный», на подготовку задания для ускорения обмена, думаю, уйдет не так много времени, и результат нас устроит.

Продолжение следует…

4 Comments

  1. romanco

    Может быть что-то поменялось за последние полгода, но по ЭДО с клиентами они вроде бы не работают.

    ПАО Мегафон ваш клиент или поставщик услуг?

    Reply
  2. JetBrain

    (1) romanco, …и клиент и поставщик. ЭДО не только для внутренней работы с Мегафоном, список контрагентов любой можно создать. Удобство системы к примеру в том, что даже если у вашей компании почта не корпоративная, то контролировать обмен документами будет очень удобно и просто.

    Reply
  3. worker1c

    Через чей сервис производится обмен данными,см НастройкиАпиБизнес365(), Мегафон или оператора ЭДО?

    Возможно ли обмениваться счет-фактурами?

    Что такое интеграция с почтовыми ящиками?

    Reply
  4. JetBrain

    (3) worker1c, узлы обмена видимо меги:

    функция НастройкиАпиБизнес365() экспорт
    система = НастройкиСистемаБизнес365();
    Если система = «system.megafon» Тогда
    Возврат Новый Структура(
    «host, port, hostport, apiversion»,
    «system.megafon.ru», 8081, «system.megafon.ru:8081», «/api/1.0»);
    ИначеЕсли система = «system.system» Тогда
    Возврат Новый Структура(
    «host, port, hostport, apiversion»,
    «api.system.ru», , «api.system.ru», «/api/1.0»);
    ИначеЕсли система = «production» Тогда
    Возврат Новый Структура(
    «host, port, hostport, apiversion»,
    «doc.megafon.ru», «8081», «doc.megafon.ru:8088», «/api/1.0»);
    Иначе
    Возврат Новый Структура(
    «host, port, hostport, apiversion»,
    «developer.business365.ru», «8088», «developer.business365.ru:8088», «/api/1.0»);
    КонецЕсли;
    конецФункции
    

    Показать

    Документы делятся на два типа, формализованных и неформализованных (по ним лимит почти в 10 раз больше). Счет-фактура да есть.

    Интеграцию лучше посмотреть видео про Бизнес365 в паблике, для самого сервиса ЭДО нужен только адрес почты для регистрации и входа.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *