﻿# Настроить отправку запросов в Microsoft SQL Server

> [HTML Version](work-with-ms-sql.html)

При работе с модулем [MS SQL Gateway](ms-sql-gateway.md) запросы на сервер отправляются в ходе пользовательских бизнес-процессов с помощью графического элемента **Запрос в MS SQL**. Вы можете передавать любые запросы на языке SQL: для получения сведений, их записи в базу данных и т. д. 

Допустим, в вашей компании настроена интеграция Microsoft SQL Server со сторонней системой электронного документооборота. В СЭД содержатся все документы компании: контракты, акты, счета и т. д. Бизнес-процессы согласования этих документов настроены в ELMA365. С помощью SQL‑запроса можно импортировать новый документ из СЭД, а затем с помощью запроса получать его данные перед каждым новым этапом обработки. Это позволяет убедиться, что файл и сведения о документе в ELMA365 актуальны. Когда согласование в ELMA365 завершается, с помощью запроса можно обновить статус документа в СЭД.

## Настройка блока

Разместите блок **Запрос в MS SQL** на отрезке процесса, где необходимо отправить запрос во внешнюю систему, например, получить данные. 

Для работы блока нужен SQL-запрос, который отправится в Microsoft SQL Server. В ходе процесса его нужно записать в переменную типа [Строка](360009707032.md#string) и передать во входных атрибутах блока. Сформировать запрос можно с помощью сценария или вручную. Для этого перед блоком разместите графический элемент [Сценарий](360027203731.md) или [Задача](360012495611.md).

Дважды нажмите на блок **Запрос в MS SQL** на схеме процесса, чтобы перейти к его настройке.

### Вкладка «Основное»

Заполните поля:

**(work-with-ms-sql-1.png)**

- **Название** — введите название блока, которое будет отображаться на схеме процесса;

- **Описание** — по умолчанию в поле отображается краткая информация о назначении блока;

- **Название задачи** — блок **Запрос в MS SQL** выполняется автоматически без назначения задачи на пользователя. Поэтому настраивать формирование названия задачи не требуется, и поле можно оставить пустым;

- **Присвоить выходные атрибуты в** — укажите, в каком контексте создана переменная, в которую запишется результат работы блока. Вы укажете её в настройках на вкладке **Входные и выходные атрибуты**:

	- **контекст процесса** — отметьте эту опцию, если переменная создана в контексте процесса;

	- **приложение** — выберите опцию, а затем в поле **Переменная\*** укажите приложение, добавленное в контекст процесса. Результат работы блока запишется в поле этого приложения.

### Вкладка «Входные и выходные атрибуты»

На этой вкладке поля настроек блока сопоставляются с контекстными переменными.

**(work-with-ms-sql-2.png)**

- **Запрос** — укажите переменную типа [Строка](360009707032.md#string) из контекста бизнес-процесса, в которой хранится отправляемый запрос на языке SQL;

- **Результат** — выберите переменную типа **Строка** из контекста процесса или приложения, в которую запишется ответ с сервера в формате JSON. В нём будет содержаться результат запроса — сведения, полученные из другой системы, количество строк, обновлённых в базе данных и т. п. Подробнее об извлечении данных из JSON‑строки читайте в разделе [«Использовать результат запроса»](#use-result).

Если SQL-запрос некорректен, например, указана несуществующая таблица в базе данных, в ответе отобразится текст ошибки.

### Вкладка «Обработка ошибок»

На этой вкладке укажите, по какой ветке направится ход бизнес-процесса при ошибке в работе блока. Также вы можете настроить оповещение пользователей об ошибке.

**(work-with-ms-sql-3.png)**

- **Оповещение** — включите опцию, а затем укажите пользователей, которым будет отправляться оповещение об ошибке в процессе. Вы можете выбрать пользователя, [группу](360007146071.md) пользователей, [элемент оргструктуры](360003861992.md) или указать [контекстную переменную](process_context.md), например, инициатора процесса;

- **Прервать** — отметьте опцию, а затем в поле **Переход **укажите, по какой ветке направится процесс в случае возникновения ошибки. Выбранный переход будет отмечен на схеме процесса значком **(error-connector-icon.png).**

После завершения настройки нажмите кнопку **Сохранить**.

## Использовать результат запроса

При работе блока ответ от Microsoft SQL Server возвращается в виде JSON-строки. Чтобы применить полученный результат, извлеките информацию при помощи сценария, используя метод [parse()](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse). Затем запишите результат в переменные и обработайте его.

Допустим, в рамках процесса вы направляете SQL-запрос в СЭД, чтобы импортировать в ELMA365 сведения о новом договоре. Из JSON‑ответа получите данные документа и запишите их в переменные, затем с помощью сценария создайте на их основе элемент приложения **Договоры**. Подробнее о работе с элементами в сценариях читайте в [справке ELMA365 TS SDK](https://tssdk.elma365.com/ru/latest/interfaces/_01_items_.baseapplicationitem.html).