Свойства узла процесса интеграции вида «Sql»
Узел, в котором выполняются запросы к внешней базе данных (далее — БД) с использованием JDBC-драйвера. Узел не является источником или назначением. В этом узле сообщение может быть записано в БД или сформировано из данных, полученных из БД. Для периодического выполнения запроса следует поставить перед этим узлом таймер.
Узел может быть связан с группой участников. Реквизиты участников могут использоваться в среде разработки при формировании строки подключения в описании значений параметров.
Свойства узла
- Имя
- Имя узла, уникальное в рамках процесса интеграции. Используется для обращения к узлу из встроенного языка (УзелСхемы.Имя). Должно начинаться с буквы, за которой следуют буквы, цифры или символы '_' (нижнее подчеркивание). Минимальная длина — 2 символа
- Описание
- Произвольное описание узла для разработчика. Используется при редактировании схемы процесса интеграции. Недоступно из встроенного языка
- Строка подключения
-
Строка подключения к БД. Может использовать параметры процесса и реквизиты участников.
Пример:jdbc:oracle:thin:myUserName/myPassword@myHost:1521:orcl
- Игнорировать ошибки бд
- Если значение —
Истина
, то в случае, когда во время выполнения обработчикаОбработкаСообщения
произойдет ошибка при работе с БД, сообщение будет передано в исходящий маршрут (при наличии). При этом у сообщения будет установлено значение параметраDbErrorText
. - Перед подключением
-
Необязательный обработчик на встроенном языке, который будет вызван для формирования строки подключения. В параметр
СтрокаПодключения
приходит строка, вычисленная из свойства СтрокаПодключения.Если обработчик не задан, то строка подключения вычисляется из свойства СтрокаПодключения.
Пример:метод ПередПодключением(Контекст: ОбменSQL.КонтекстВызова, Сообщение: ОбменSQL.Сообщение, СтрокаПодключения: Строка): Строка пер Кодировка = Сообщение.ПолучитьПараметрИлиУмолчание("CharSet", "") если Кодировка == "" возврат СтрокаПодключения ; // Cтрока подключения должна иметь вид jdbc:sqlserver://host:port/database[?option1=value[&option2=value[&option3=value]]] если не СтрокаПодключения.Содержит("?") возврат СтрокаПодключения + "?CharSet=" + Кодировка ; если не СтрокаПодключения.Содержит("CharSet=") возврат СтрокаПодключения + "&CharSet=" + Кодировка ; пер Урл = СтрокаПодключения.Разделить("?") пер Опции = Урл[1] пер ПараметрыПодключения = Опции.Разделить("&") Опции = "?" для Параметр из ПараметрыПодключения если Опции != "?" Опции = Опции + "&" ; если Параметр.НачинаетсяС("CharSet=") Опции = Опции + "CharSet=" + Кодировка иначе Опции = Опции + Параметр ; ; возврат Урл[0] + Опции ;
- Обработка сообщения
-
Обязательный обработчик на встроенном языке, который будет вызван для взаимодействия с БД. Он позволяет создать сообщение из данных, прочитанных из БД.
Пример использования
Контекст: Офис периодически осуществляет запрос к базе данных и получает от базы данных ответ. Процесс обмена выглядит следующим образом: из системы «1С» в базу данных отправляется JSON с параметрами запроса, после чего в базе данных осуществляется запрос. Из результата запроса формируется другой JSON, который затем поступает обратно в систему «1С».
Задача: Отправить параметры запроса из системы «1С» в интеграционную шину, в базе данных инициировать запрос с полученными параметрами, после чего вернуть результат запроса обратно в систему «1С».
Решение: Для того чтобы отправлять параметры запроса в виде JSON из Офиса в «1С:Шину», добавим на схему узел «Канал1СИсточник» («ИзОфиса»). В этом узле создается очередь, в которую информационная система, входящая в группу участников «Офис», отправляет сообщение с запросом. Чтобы подключиться к базе данных, добавим на схему узел «Sql» («БазаДанных»). Сообщение с параметрами запроса из очереди в узле «ИзОфиса» перемещается в узел «БазаДанных». В этом узле осуществляется запрос к базе данных и обработка полученного ответа. Результат выполнения запроса в виде JSON записывается в тело сообщения. Для этого в обработчике Обработка сообщения указывается соответствующий метод. Новый JSON попадает в узел «Канал1СНазначение» («ВОфис»), где снова сохраняется в новую очередь сообщений. Из этой очереди информационная система считывает сообщение с результатом запроса.
Обработка сообщения:// В параметрах сообщения содержатся параметры запроса к БД. Результаты выполнения запроса в виде JSON записываются в тело сообщения
метод ЗапроситьДанныеИзБазы(Контекст: МойПроцесс.КонтекстВызова, Сообщение: МойПроцесс.Сообщение, Подключение: СоединениеSql): МойПроцесс.Сообщение
пер Скрипт = Подключение.СоздатьЗапросСВыборкой("SELECT field1, field2 FROM Table WHERE field3=&v1 AND field4=&v2")
Скрипт.УстановитьЗначениеПараметра("v1", Сообщение.ПолучитьПараметр("Параметр1"), ТипДанныхSql.Integer)
Скрипт.УстановитьЗначениеПараметра("v2", Момент.Сейчас())
исп Результат = Скрипт.Выполнить()
исп Поток = новый ВременныйПотокЗаписи()
пер Писатель = новый ЗаписьJson(Поток)
Писатель.ЗаписатьНачалоМассива()
пока Результат.Следующий()
Писатель.ЗаписатьНачалоОбъекта()
пер Текущий = Результат.КакСоответствие()
для Поле из Текущий
Писатель.ЗаписатьИмяСвойства(Поле.Ключ)
Писатель.Записать(Поле.Значение.ВСтроку())
;
Писатель.ЗаписатьКонецОбъекта()
;
Писатель.ЗаписатьКонецМассива()
возврат Сообщение.УстановитьТелоИзПотока(Поток.ОткрытьПотокЧтения())
;