Обработчики

При получении сообщения извне (входящая точка) система запускает механизм установки типа сообщения.

  1. При получении сообщения (до выполнения кода обработчика). 1с коннектор поддерживает получение сообщения со свойствами DataType или SystemDataType:
    • Если параметр DataType заполнен, то тип сообщения устанавливается на основе заполненного.

    • Если параметр SystemDataType заполнен, то тип сообщения устанавливается в OriginalSystemDataType и SystemDataType заполняется из метаданных.

    • Если параметры DataType и SystemDataType пустые, то тип сообщения заполняется из вкладки В Platform Обработчика соответствующим типом.

    • Если параметр DataType или SystemDataType заполнен, то система выполняет сравнение с типом переменной на вкладке В Platform, если тип переменной отличается от типа сообщения, и у переменной установлен флаг Обязательное, система возвращает ошибку и сообщение перемещается в архив.

  2. Инициализация переменных для выполнения кода обработчика.
    • Если коннектор поддерживает использование кода и код заполнен, то переменная создается со вкладки В Platform Обработчика.

    • Если тип определен в пункте 1, и он отличается от типа переменной из вкладки В Platform, то переменная принимает значение null (если установлен параметр разрешить null) или создается пустой объект.

Обработчики 1С

Вкладка Основные

Для настройки обработчика 1С необходимо выбрать нужный тип из выпадающего списка:

../../_images/image107.png

Далее указать необходимое направление интеграции:

В зависимости от выбранного направления изменится вкладка В Platform / Из Platform.

Обработчики В Platform вызываются на стороне 1С при добавлении/изменении записей. Из добавленных записей создается пакет и отправляется на входящую точку адаптера системы.

Также для обработчиков с направлением В Platform есть возможность установить параметр Порядок обработки.

Этот параметр отвечает за приоритетность выгрузки объектов из 1С:

../../_images/image110.png

Возможные значения от 0 до 9, где 0 - самое приоритетное.

Обработчики Из Platform выполняются, когда в 1С из Платформы приходит пакет. Данные для выполнения обработчика берутся из тела сообщения.

Вкладка Переменные

Указываются переменные, к которым будет доступ на вкладке Код:

../../_images/image111.png

Вкладка Код

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

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

../../_images/image112.png

Также на вкладке присутствует режим отладки (при выборе направления Из Platform) :

../../_images/image113.png

При необходимости режим отладки можно развернуть на весь экран.

Вкладка В Platform

Содержит данные, которые будут передаваться в Платформу при соответствующем направлении интеграции, выбранном на вкладке Основные:

../../_images/image114.png

На этой вкладке определяется тип данных, который будет присвоен сообщению при выполнении данного обработчика.

Вкладка Из Platform

Содержит данные, которые будут передаваться из Платформы при соответствующем направлении интеграции, выбранном на вкладке Основные. На вкладках В Platform и Из Platform определяется - с каким типом данных будут обрабатываться сообщения данным обработчиком. Если из Платформы пришло сообщение с типом, указанным на данной вкладке, то этот обработчик будет выбран для этого сообщения, затем выполняется код обработчика (при наличии).

Вкладка Системы

../../_images/image115.png

на вкладке отображаются системы, к которым будет добавлен обработчик:

Функции 1С

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

Вкладка Основные

Здесь заполняется имя функции 1С, которое будет использоваться в дальнейшем вызове в коде обработчика 1С, и выбирается тип обработчика - Функция 1С:

../../_images/image116.png

Вкладка Переменные

На этой вкладке добавляются параметры функции, которые будут доступны при ее вызове.

Вкладка Код

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

../../_images/image117.png

В этих случаях надо тело сообщения передать в переменную Результат:

../../_images/image118.png

Вкладка Системы

Вкладка содержит шаблоны типа Функции 1С, которые прикрепляются к адаптеру системы 1С вместе с обработчиком 1С.

Обработчики СУБД

Вкладка Основные

Для настройки обработчика СУБД необходимо выбрать нужный тип из выпадающего списка:

  • обработчик MSSQL;

  • обработчик Oracle;

  • обработчик PostgreSQL.

../../_images/image119.png

Далее следует указать необходимое направление интеграции:

../../_images/image120.png

В поле Имя таблицы нужно указать таблицу базы данных, которая будет выступать как источник, если указано направление В Platform. Если указано направление ИЗ Platform, таблица выступает как приемник.

Вкладка Переменные

Здесь можно создать локальные переменные обработчика. К локальным переменным с одной стороны есть доступ из бизнес-процессов при отправке объектов во внешнюю систему; локальные переменные также доступны для использования в SQL-коде обработчика на вкладке Код. Вызов переменной в SQL коде: @Идентификатор.

../../_images/image121.png
../../_images/image122.png

Для выгрузки массива из СУБД в формате JSON (направление Из Platform) добавьте переменную FORJSON типа Int со значением 0. При этом в конце SQL-кода запроса следует добавить строку FOR JSON PATH.

Вкладка Код

Содержит SQL-код, который будет выполняться при вызове обработчика:

../../_images/image123.png

Писать и проверять код удобно в СУБД на вкладке выполнения запроса:

../../_images/image91.png

Настройка Из Platform и В Platform

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

  • Пользовательский запрос - будет выполняться SQL запрос с вкладки Код.

  • Вставка - добавление объектов в таблицу.

  • Обновление - обновление полей объектов.

  • Удаление - удаление объектов из таблицы.

  • Выборка - получение объектов из таблицы.

../../_images/image124.png

Если задано направление В Platform, доступны следующие виды операций:

  • Пользовательский запрос.

  • Выборка.

../../_images/image125.png

Для операции Выборка, Вставка, Обновление существует возможность настройки полей, участвующих в операции с помощью инструмента Маппер. Для настройки нужно в Маппере добавить поля таблицы которые будут участвовать в операции и настроить маппинг полей в переменную с вкладки В Platform или Из Platform в зависимости от направления интеграции. Если в Маппере настроены поля таблицы, то в операции будут участвовать только эти поля таблицы.

Для настройки маппинга нужно нажать на кнопку Маппер:

../../_images/image126.png

Вкладка В Platform

Содержит данные, которые будут передаваться в Платформу при соответствующем направлении интеграции:

../../_images/image114.png

Вкладка Из Platform

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

К данным можно обращаться на вкладке Код, значения передаются в теле сообщения Формат файла сообщения, получаемого процессом для успешного маппинга, должен быть UTF-8 без BOM Маппинг в формате json вида:

{
        "MediaTypeId": 4,
        "Name": "example"
}

Вкладка Системы

На вкладке можно выбрать Внешние системы, с которыми будет работать обработчик:

../../_images/image93.png

Веб-обработчики

Веб-обработчик относится к системе, имеющей коннектор типа Расширенное REST API.

Внутри обработчика происходит настройка метода:

  • Наименование.

  • Комментарий.

  • Тип (Веб-обработчик).

  • Тип метода (GET, POST, PUT, DELETE).

  • Шаблон пути. В поле Шаблон пути можно использовать параметры:
    • {path} путь к методу со всей иерархией папок;

    • {method} имя метода;

    • {folder} имя текущей папки метода.

  • Таймаут вызова.

  • Параметры запроса.

  • вPlatform (для методов POST, PUT).

  • изPlatform (для методов POST, PUT).

  • Системы (список систем для данного обработчика).

  • Настройка флагов: требуется авторизация авторизация, ожидание ответа.

При парсинге ответа в веб-сервис, если в Ответе настроен Немассив, а в теле сообщения от процесса приходит массив, то проверяется количество элементов в массиве:

../../_images/image127.png
  • если элементов 0, то это интерпретируется как пустое тело, выводится значение соответствующего типа данных с пустыми значениями полей;

  • если 1, то интерпретируется первый элемент массива как тело сообщения и выводится соответствующее значение;

  • в других случаях регистрируется ошибка, что получен массив.

Код обработчика

Код обработчика пишется на языке C#.

В коде обработчика c направлением В Platform доступна переменная RunMessage. В этой переменной содержится сообщение, полученное из внешней системы.

Содержимое переменной RunMessage можно модифицировать с помощью методов для работы с сообщениями. После завершения работы обработчика содержимое переменной RunMessage отправляется в Платформу.

RunMessage.SetBody(Object); - установить новое тело сообщения.

Особенности формирования шаблона пути

Имена переменных регистрозависимые; если регистр переменной и маски в пути совпадает, то в запрос передается значение параметра из swagger веб-сервиса:

../../_images/image128.png

Если регистр не совпадает, то в запросе остается имя параметра в скобках:

../../_images/image129.png

Помимо этого, при формировании шаблона пути можно использовать стандартные маски, такие как {path}, {method} и {folder}. Если в параметрах обработчика будут заданы пользовательские параметры с этими именами, то они считаются приоритетными и подставляются в шаблон пути: иначе эти параметры будут определены автоматически от расположения обработчика в иерархии папок:

../../_images/image130.png

Файловый обработчик

Для файлового коннектора возможно использование обработчиков с направлением интеграции В Platform и Из Platform.

В Platform

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

../../_images/image131.png

Алгоритм выбора и выполнения файлового обработчика

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

  • Если такой обработчик есть и значение по умолчанию переменной fileName совпадает с реальным названием файла, то исполняется этот обработчик. Разрешено использование не более одного обработчика (иначе возникает ошибка, сообщение помещается в архив).

  • Если обработчик из п.1 не найден, то ищутся обработчики с заполненным значением переменной fileNamePattern с пустой fileName. Проверяет, соответствует ли заданное в переменной fileNamePattern выражение имени файла. Поддерживаются следующие подстановочные знаки: ** и **?. Escape-символ обратной косой черты \.

  • Если не найден обработчик из п.2, то выбирается обработчик пустыми fileNamePattern и fileName.

  • Если не найден обработчик из п.3, сообщение обрабатывается без обработчика.

  • Если обработчик выбран и вкладка Код заполнена, то выполняется код обработчика.

С помощью обработчиков можно, например, задавать тип данных передаваемым сообщениям.

Например, в зависимости от имени файла или его расширения можно передавать сообщения с различными типами для дальнейшей маршрутизации.

Для этого нужно создать 2 обработчика.

На вкладке Переменные указывается переменная с наименованием fileNamePattern и типом String. В значении переменной указывается .json или .txt:

../../_images/image132.png
../../_images/image133.png

Таким образом для любого файла, имя которого заканчивается на .json или .txt, будет выбран соответствующий обработчик.

Далее в настройках соответствующих обработчиков на вкладке В Platform создается переменная нужного типа. Допустим, что файлам json будет присвоен тип Тест1, а файлам txt будет присвоен тип Тест2. (Эти типы нужно предварительно создать):

../../_images/image134.png
../../_images/image135.png

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

../../_images/image136.png

После применения конфигурации отправляем два сообщения с разными расширениями:

../../_images/image137.png

В журнале системы указываем уровень логирования Verbose. Отображаются следующие записи:

../../_images/image138.png

Для своего файла выбран свой обработчик.

Далее в событиях системы отображаются 2 события получения и в столбце Тип данных соответственно типы Тест1 и Тест2:

../../_images/image139.png

Если отправить сообщение из системы без обработчика, то оно без ошибок попадет в Платформу, но поскольку сообщение не будет иметь никаких свойств и типа данных, то его сложно будет маршрутизировать в дальнейшем.

Код обработчика В Platform

Код файлового обработчика пишется на языке C#.

В коде доступна переменная RunMessage. В этой переменной содержится сообщение, полученное из внешней системы.

Содержимое переменной RunMessage можно модифицировать с помощью методов для работы с сообщениями. После завершения работы обработчика содержимое переменной RunMessage отправляется в Платформу.

В коде доступны методы:

  • SetBody(Object) - модифицировать тело сообщения;

  • SetMessage(Message message) - установить message как формируемое сообщение;

  • SetCurrentParams(Message message) - в message установить параметры по умолчанию;

  • SetCurrentBody(Message message) - в message установить тело сообщения по умолчанию;

  • System.IO.FileInfo GetFileInfo() - получить информацию о прочитанном файле.

В коде обработчика доступно обращение к объявленным в обработчике переменным. Содержание файла можно получить с помощью системной переменной byte[] Data.

ИЗ Platform

При отправке сообщения Из Platform с помощью файлового коннектора выполняется подбор обработчика на основании типа сообщения. Если такой обработчик не найден, то это не является ошибкой - сообщение передается без обработчика.

Для обработчиков Из Platform доступны параметры fileName, fileNamePattern.

Задать их значения можно на вкладке Переменные, добавив новую переменную с соответствующим именем и типом String, в поле Значение можно указать - какое имя будут иметь файлы, приходящие в каталог в случае с переменной fileName:

../../_images/image140.png

В случае с переменной fileNamePattern следует указать правила формирования имени файла.

../../_images/image141.png

Перед выполнением кода переменная fileName инициализируется значением из свойства сообщения. Если значение пустое, задается значение по умолчанию (из обработчика). Если значение не задано, fileName считается на основании fileNamePattern из коннектора:

../../_images/image142.png

Так выглядит имя файла, для которого в обработчике не было задано никаких значений - в этом случае имя сформировалось на основе шаблона, указанного в настройках оннектора. Рядом файл, записанный в каталог с настройками обработчика, приведенными выше:

../../_images/image143.png

fileNamePattern для расчета fileName использует системные свойства сообщения:

  • /Message/Id.

  • /Message/CreationTime.

  • /Message/DataType.

  • /Message/Source.

  • /Message/Receivers.

  • /Message/Property/ИмяСвойства.

Код обработчика Из Platform

При выполнении кода разрешено изменение параметра fileName и/или тела сообщения (переменная RunMessage с типом Message).

На вкладке Код можно также задать значение используемых переменных или добавить что-то к существующему значению:

../../_images/image144.png

Сообщение создалось на основе fileNamePattern, указанного на вкладке Переменные (/Message/CreationTime - время создания), а также имеет добавленные числа в конце, прописанные в коде:

../../_images/image145.png

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

После выполнения кода, если fileName - пустая строка, будет зарегистрирована ошибка.

Логирование

Для вывода информации в лог в контексте кода обработчика доступна работа с Логгером:

Logger.Debug(…);

Без обработчика сообщение запишется в файл с именем, сформированным согласно шаблону, указанному в настройках коннектора. В файле будет такое тело сообщения, каким оно было передано в Платформу из другой системы.

Обработчики Веб-клиент и Веб-сервер

Веб-клиент и Веб-сервер относятся к системе, имеющей коннектор типа Веб-сервисы (протокол либо Rest, либо Soap).

Настройка обработчика тип Веб-клиент

Для создания обработчика:

  1. В ЦН перейдите в раздел Интеграция -> Обработчики.

  2. Нажмите на кнопку +. В рабочей области страницы отобразится интерфейс создания нового обработчика.

  3. На вкладке Основные в выпадающем меню Тип выберите вариант Веб-клиент:

../../_images/web_client.png
  1. На вкладка Основные произведите следующие настройки:

  • Поле Название: введите название обработчика, обязательно для заполнения.

  • Поле Имя: введите имя обработчика, необязательно для заполнения.

  • Поле Комментарий: введите описание обработчика, необязательно для заполнения.

  • Выпадающее меню Тип: в данном случае выбран вариант Веб-клиент.

  • Направление интеграции: выберите направления интеграции В Platform или Из Platform.

  • Поле Имя таблицы: введите имя таблицы обработчика.

  • Выпадающее меню Внешний тип данных: выберите тип внешнего типа данных.

  • Поле Шаблон пути: введите шаблон пути для обработчика.

  • Выпадающее меню Тип метода: выберите один из типов метода:

    • Get

    • Post

    • Put

    • Delete

    • Patch

  • Поле Таймаут вызова: введите значение таймаута вызова обработчика, значение по умолчанию - 10000.

  • Флажок Ожидание ответа: установите флажок, если ожидается получение ответных сообщений.

    • Флажок Тело ответа получать как байты: флажок отображается, если установлен флажок Ожидание ответа. Установите флажок, если тело ответного сообщения должно приниматься как байты.

  1. После внесения данных нажмите на кнопку Сохранить.

На вкладке Код доступны переменные из вкладки Параметры и Из Platform: система позволяет их изменять:

../../_images/image147.png

Код обработчика пишется на языке C#.

В коде обработчика c направлением В Platform доступна переменная RunMessage.

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

RunMessage.SetBody(Object); - установить новое тело сообщения.

На вкладках В Platform и Из Platform создаются переменные.

Для выполнения обработчика на системе необходимо присвоить обработчик системе. Для этого на вкладке Системы добавьте в список Системы обработчика обработчик из списка Доступные системы путем выбора строчки и нажатием на кнопку >. Обработчик может выполнятся на нескольких системах:

../../_images/image148.png

Настройка обработчика тип Веб-сервер

Выбрать в меню -> Интеграция -> Обработчики -> Кнопка +.

Вкладка Основные:

  • поле название;

  • поле имя;

  • список Тип - выбрать тип «Веб-сервер»;

  • список Направление интеграции ИзВ Platform;

  • таймаут вызова;

  • флажок ожидания ответа.

Для выполнения обработчика на системе необходимо присвоить обработчик системе. Для этого на вкладке Системы нужно добавить в список Системы обработчика обработчик из списка Доступные системы путем выбора строчки и нажатием на кнопку >:

../../_images/image149.png

Обработчики Email

Настройка обработчика

Для создания обработчика типа email:

  1. В ЦН перейдите в раздел Интеграция -> Обработчики.

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

../../_images/image150.png
  1. На вкладке Основная заполните следующие поля:

  • Название: произвольное название системы, обязательно для заполнения.

  • Имя: уникальное имя системы, обязательно для заполнения.

  • Комментарий: описание системы, необязательно для заполнения.

  1. В выпадающем меню Тип выберите тип Email.

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

../../_images/image151.png
  1. На вкладке Переменные выберите или создайте переменные для использования в обработчике, нажав на кнопку +:

../../_images/image152.png
  1. На вкладке Код внесите код обработчика, используя следующую информацию:

  • SetReceiver(«itest@email.ru»); Установка одного получателя.

  • Установка нескольких получателей:
    • var recs = new OwnList<string>();

    • recs.Add(«test1@email.ru»); recs.Add(«test2@email.ru»);

    • SetReceivers(recs);

  • ClearReceivers(); Очистка всех получателей.

  • SetFrom(«test@email.ru»); Установка отправителя сообщения.

  • SetSubject(«Тестовое письмо»); Установка темы сообщения.

  • GetMailMessage(); Получить объект MailMessage.
    • var mes = GetMailMessage();

    • mes.body = «Текст письма»;

Пример кода:

var recs = new OwnList<string>();
recs.Add("Adresat@datareon.ru");
SetReceivers(recs);

SetSubject("Тема сообщения письма");

var mes = GetMailMessage();
        mes.Body = "Test содержание письма";
  1. На вкладке, соответствующей направлению интеграции из Platform, добавьте переменные, используемые в этом направлении.

8. На вкладке Системы добавьте системы, для которых предназначен этот обработчик. При попытке добавить систему с недопустимым типом будет выдано предупреждение об ошибке:

Добавление системы Обработчик [email_test типа Email нельзя использовать для системы типа WebSimple].

  1. После внесения данных нажмите на кнопку Сохранить.

  2. Нажмите на кнопку Применить конфигурацию:

    ../../_images/config_apply1.png

Указанный обработчик появится у выбранной внешней системы на вкладке обработчики.