Создание проекта в среде разработки
Создание нового проекта
На данном этапе вы создадите новое приложение из нового пустого проекта «1С:Шины».
- Откройте панель управления.
- Нажмите ;
- Убедитесь, что выбраны варианты Из проекта и Новый проект;
- Задайте имя проекта — ОбменСМаршрутизацией. «1С:Шина» заполнит остальные поля и включит режим разработки для создаваемого приложения;
- Выберите тип СУБД и нажмите Создать;
- Новое приложение появится в списке со статусом Создается. Через некоторое время статус приложения изменится на Работает;
Добавление элемента проекта вида «Процесс Интеграции»
На данном этапе вы откроете приложение в среде разработки и добавите в него элемент проекта — «Процесс Интеграции».
- Чтобы открыть проект в среде разработки, нажмите Разработать... в конце строки;
- «1С:Шина» откроет новую вкладку браузера для среды разработки и запросит пароль. Введите пароль администратора, который вы создали при установке сервера, и нажмите Войти;
- «1С:Шина» подготовит рабочую область, построит проект и откроет его в среде разработки;
- Добавьте новый элемент проекта — процесс интеграции. Для этого в представлении НАВИГАТОР ПРОЕКТА нажмите правой кнопкой мыши Основной, затем в контекстном меню выберите ;
- Выберите вид добавляемого элемента проекта — Процесс Интеграции;
- Задайте имя элемента — МаршрутизацияСообщений — и нажмите Ввод;
- «1С:Шина» создаст в проекте новый процесс интеграции и откроет редактор для создания его схемы;
Схема процесса интеграции
Схема интеграции в данном примере будет выглядеть следующим образом:
Чтобы сообщения из информационной базы поступали в «1С:Шину», на схему добавлена группа участников «ИБ». В эту группу (уже после публикации проекта, в панели управления приложения) будет включена информационная система «1С», из которой будут отправляться сообщения. Группа участников соединена с каналом вида Канал1СИсточник «ИзБазы». После публикации проекта, когда в группу участников будет добавлена информационная система, «1С:Шина» создаст для нее индивидуальную очередь, к которой информационная система сможет подключиться и в которую сможет отправлять сообщения.
Затем сообщения будут поступать в узел вида МаршрутизаторПоСодержимому «ВыборСпособаДоставки». Данный узел предназначен для того, чтобы определять, в какие узлы из тех, что идут непосредственно за ним, должны попасть сообщения. Для этого у узла есть событие ОбработчикОпределенияПолучателей, в котором вы пропишете специальный метод. Внутри данного метода вы будете находить нужного получателя в справочнике InformationSystems и, в зависимости от значения реквизита получателя «СпособДоставки», направлять сообщение в один из следующих узлов.
На следующем этапе сообщение попадет в один из узлов вида Транслятор: «Xml2Json» либо «Xml2Zip». Если необходимо выполнить отправку по протоколу HTTP, то в узле «Xml2Json» тело сообщения будет сконвертировано из XML в JSON. Если необходимо выполнить отправку по протоколу FTP, то в узле «Xml2Zip» тело сообщения будет архивировано в ZIP.
После того как тело сообщения было приведено к соответствующему формату, оно попадает в узел вида Http «ВHttp» либо узел вида FtpНазначение «НаFtp». В узле «ВHttp» тело сообщения будет отправлено POST-запросом в HTTP-сервис партнера. В узле «НаFtp» тело сообщения будет размещено на FTP-сервере в индивидуальном каталоге партнера, из которого он впоследствии сможет забрать файл.
Также на схему добавлена группа участников «Партнеры». Она соединена с узлами «ВHttp» и «НаFtp». В эту группу (уже после публикации проекта, в панели управления приложения) будут включены все информационные системы партнеров. Запись о каждом партнере будет содержать индивидуальный код получателя и дополнительные реквизиты (такие как способ доставки, адрес HTTP-сервиса или FTP-сервера).
Создание схемы процесса интеграции
На данном этапе вы создадите схему процесса интеграции, которая описывает взаимодействие информационных систем.Чтобы создать схему интеграции, выполните следующие шаги:
- Добавьте на схему группу участников. Для этого прокрутите палитру узлов, выберите ГруппаУчастников и кликните в верхней части схемы, чтобы разместить там группу;
- Выделите группу и в представлении СВОЙСТВА задайте ее имя — ИБ;
- Добавьте на схему узел Канал1СИсточник и задайте имя — ИзБазы;
- Добавьте на схему узел МаршрутизаторПоСодержимому и задайте имя — ВыборСпособаДоставки:
- Аналогичным образом добавьте на схему узлы:
- Транслятор — задайте имя «Xml2Json»
- Транслятор — задайте имя «Xml2Zip»
- Http — задайте имя «ВHttp»
- FtpНазначение — задайте имя «НаFtp»
- ГруппаУчастников — задайте имя «Партнеры»
Расположите узлы на схеме следующим образом:
Следующим шагом следует обозначить на схеме маршруты и связи.
- Выберите в палитре узлов элемент Связь и соедините группу участников «ИБ» с узлом «ИзБазы». Для этого последовательно кликните на группу участников «ИБ» и на узел «ИзБазы». Затем снова выберите элемент Связь и соедините каждый из узлов «ВHttp» и «НаFtp» с группой участников «Партнеры»:
- Затем с помощью элемента Маршрут соедините:
- Узел «ИзБазы» с узлом «ВыборСпособаДоставки»;
- Узел «ВыборСпособаДоставки» с узлом «Xml2Json»;
- Узел «ВыборСпособаДоставки» с узлом «Xml2Zip»;
- Узел «Xml2Json» с узлом «ВHttp»;
- Узел «Xml2Zip» с узлом «НаFtp».
Создание перечисления для выбора способа доставки
Для того, чтобы на следующем шаге у вас была возможность указать в качестве типа реквизита «СпособДоставки» тип Перечисление, данное перечисление следует создать.
- Добавьте элемент проекта «Перечисление». Задайте имя СпособДоставки
- Добавьте перечислению два элемента: HTTP и
FTP:
ВидЭлемента: Перечисление Ид: 73520a6b-a8ca-4cdc-b3b4-0bbf8604f8c6 Имя: СпособДоставки ОбластьВидимости: ВПодсистеме Элементы: - Ид: a1b02dcd-8b92-4e5e-b040-0620a405322d Имя: HTTP - Ид: 44a05b0f-f4ea-445e-b234-01524fc7d57a Имя: FTP
Создание расширения справочника «InformationSystems»
- Кликните правой кнопкой мыши на процесс интеграции в навигаторе проекта, выберите :
- В проекте будет создано расширение справочника InformationSystems:
- Чтобы добавить новый реквизит, правой кнопкой мыши клините на справочник InformationSystems, выберите :
- Задайте имя — «URL», и нажмите Ввод:
- Во вкладке Реквизиты отобразится новый реквизит:
- В свойствах реквизита задайте тип — Строка:
- Аналогичным образом добавьте реквизиты «Каталог» и «СпособДоставки». Задайте реквизиту «Каталог» тип Строка, а реквизиту «СпособДоставки» — тип СпособДоставки | Неопределено:
Создание параметров процесса интеграции
В среде разработки «1С:Шины» у процесса интеграции можно создать один или несколько параметров. Каждый из них имеет имя. Это имя можно использовать в выражениях, использующихся для вычисления значений свойств узлов процесса интеграции. Значения параметров можно задать в панели управления приложением во время исполнения.
- ИмяПользователяFtp
- ПарольFtp
- ХостFtp
- Во вкладке процесса интеграции «МаршрутизацияСообщений» правой кнопкой мыши кликните на Параметры, выберите :
- Задайте параметру имя ИмяПользователяFtp и нажмите Ввод:
- Аналогичным образом создайте оставшиеся два параметра: ПарольFtp и ХостFtp. Созданные параметры отобразятся во вкладке Параметры:
Задание свойств узлов схемы
- Свойства узла «ВыборСпособаДоставки»
- Для узла «ВыборСпособаДоставки» следует задать обработчик события
ВыборПолучателей:
- Нажмите на лупу в поле ВыборПолучателей:
- Откроется модуль процесса интеграции. «1С:Шина» автоматически создаст нужную сигнатуру метода и назначит его в качестве обработчика:
В этом модуле будет обрабатываться событие выбора получателей. Чтобы определить следующий узел, следует обратиться к справочнику InformationSystems и получить значение реквизита «СпособДоставки» той информационной системы, которая была выбрана в качестве получателя. После этого, в зависимости от значения реквизита «СпособДоставки», следует вернуть один из двух узлов, стоящих после маршрутизатора.
- В методе обработчика напишите следующий
код:
метод ВыборПолучателей(Контекст: КонтекстВызова, Сообщение: МаршрутизацияСообщений.Сообщение): Коллекция<УзелСхемы> // Предполагается, что каждое сообщение обязательно содержит код одного получателя. // Сообщения без указанного получателя будут отправлены в канал недоставленных сообщений. выбор Сообщение.Получатели.ЕдинственныйИлиУмолчание()?.СпособДоставки когда FTP возврат[Схема.Узлы.Xml2Zip] когда HTTP возврат[Схема.Узлы.Xml2Json] иначе возврат [] ; ;
- Свойства узла «Xml2Json»
- Перед отправкой сообщения партнерам в HTTP-сервис, по условию примера
необходимо преобразовать его тело из XML в JSON. Исходное сообщение выглядит
следующим
образом:
<items> <item id="1"> <name>Война и мир</name> <author>Лев Толстой</author> <year>2022</year> <price>550</price> <retail>770</retail> <currency>RUB</currency> </item> <item id="2"> <name>1984</name> <author>Джордж Оруэлл</author> <year>2020</year> <price>350</price> <retail>540</retail> <currency>RUB</currency> </item> <item id="3"> <name>Обломов</name> <author>Иван Гончаров</author> <year>2022</year> <price>600</price> <retail>800</retail> <currency>RUB</currency> </item> </items>
Ожидается сообщение JSON следующего вида:{ "items" : [ { "id" : "1", "name" : "Война и мир", "author" : "Лев Толстой", "year" : "2022", "price" : "550", "retail" : "770", "currency" : "RUB" }, { "id" : "2", "name" : "1984", "author" : "Джордж Оруэлл", "year" : "2020", "price" : "350", "retail" : "540", "currency" : "RUB" }, { "id" : "3", "name" : "Обломов", "author" : "Иван Гончаров", "year" : "2022", "price" : "600", "retail" : "800", "currency" : "RUB" } ] }
- Свойства узла «Xml2Zip»
- Прежде чем разместить сообщение на FTP-сервере в узле «НаFtp», по условию
примера необходимо преобразовать тело сообщения в ZIP формат. Для того, чтобы
сделать такое преобразование, предназначен узел вида
Транслятор «Xml2Zip». Трансформация сообщения
будет происходить в обработчике Преобразование.
- В поле Преобразование впишите название метода — ПреобразованиеZip. Затем нажмите на лупу:
- «1С:Шина» автоматически создаст нужную сигнатуру метода:
- Напишите следующий
код:
метод ПреобразованиеZip(Контекст: КонтекстВызова, Сообщение: МаршрутизацияСообщений.Сообщение): СообщениеИнтеграции исп Поток = новый ВременныйПотокЗаписи() пер ЗаписьZip = новый ЗаписьZip(Поток) ЗаписьZip.Добавить(Сообщение.ПолучитьТелоКакПоток(), "Сообщение") ЗаписьZip.Записать() исп НовоеТело = Поток.ОткрытьПотокЧтения() возврат Сообщение.УстановитьТелоИзПотока(НовоеТело) ;
- Свойства узла «ВHttp»
-
Когда сообщение попадет в узел «ВHttp», оно будет отправлено POST-запросом на HTTP-сервис партнера. Для данного узла следует задать следующие свойства: Uri и Метод.Примечание: Если для отправки запроса требует авторизация, необходимо также задать свойства ИмяПользователя и Пароль. Их можно задать как непосредственно в среде разработки, так и использовать для вычисления значений данных свойств реквизиты участников либо параметры процесса интеграции.У каждого партнера есть свой собственный адрес HTTP-сервиса. Этот адрес будет находиться в реквизите URL справочника InformationSystems. Таким образом, для того чтобы этот адрес автоматически использовался в качестве Uri узла «ВHttp», для заполнения свойства Uri следует использовать соответствующий реквизит.
В свойствах узла «ВHttp», в поле Uri кликните на символ fx. В выпадающем меню выберите свойство участника URL:
В свойстве Метод кликните на символ выпадающего списка и выберите POST:
- Свойства узла «НаFtp»
-
Для узла «НаFtp» следует задать следующие свойства:
- ИмяПользователя
- Пароль
- Хост
- Каталог
- ДействиеНадСуществующимФайлом
- ВыборИмени
Для того чтобы иметь возможность задавать и менять ИмяПользователя, Пароль и Хост в панели управления приложения, данные свойства следует заполнить параметрами. Так как у каждого партнера, использующего FTP-сервер для получения прайс-листов, на сервере создан индивидуальный каталог, указанный в реквизите Каталог справочника InformationSystems, свойство Каталог следует заполнить реквизитом Каталог.
Задайте свойства узла следующим образом. Укажите:- Параметр ИмяПользователяFtp в свойстве ИмяПользователя;
- Параметр ПарольFtp в свойстве Пароль;
- Параметр ХостFtp в свойстве Хост;
- Свойство участника Каталог в свойстве Каталог.
Следующим шагом задайте свойство ДействиеНадСуществующимФайлом. Кликните на символ выпадающего списка и выберите опцию Перезаписывать:
Теперь задайте обработчик ВыборИмени. Этот обработчик предназначен для того, чтобы вы могли переопределить значение свойства Имя файла — имя файла, в которое будет записано сообщение. Кликните на лупу в поле ВыборИмени:
Откроется модуль процесса интеграции. «1С:Шина» автоматически создаст нужную сигнатуру метода и назначит его в качестве обработчика:
В методе обработчика напишите следующий код:метод ВыборИмени(Контекст: МаршрутизацияСообщений.КонтекстВызова, Сообщение: МаршрутизацияСообщений.Сообщение): Строка возврат "Price_list_%{ДатаВремя.Сейчас().Представление("гггг_ММ_дд_ЧЧ_мм_сс")}.zip" ;
Данный обработчик будет возвращать имя файла, состоящее из строки «Price_list» и времени его публикации на FTP-сервере.
Таким образом, для каждого сообщения, которое попадет в узел «НаFtp», будет формироваться файл с названием, включающим в себя текущую дату и время с точностью до миллисекунд. Если вдруг случится так, что два сообщения придут в одну и ту же миллисекунду в один и тот же каталог, то предыдущее сообщение будет удалено, а на его место будет записано новое. Такая механика реализуется благодаря тому, что ранее в свойстве ДействиеНадСуществующимФайлом вы установили опцию Перезаписывать.
После того как схема процесса интеграции готова и заданы все необходимые свойства узлов, проект следует опубликовать.