Войти

Обмен в СМЭВ4 с использованием SQL запросов

Дата актуализации: 29.08.2025.

Существующие сценарии работы обменов через СМЭВ4 описаны в статье «Что такое СМЭВ4». Основным сценарием является такой обмен, когда Потребитель вызывает регламентированный запрос (РЗ) типа SQL и получает данные из Витрины Поставщика. Обработка таких запросов выполняется в режиме реального времени.

Реализация обмена

Для работы в СМЭВ Поставщиком и Потребителем должен быть предварительно выполнен ряд шагов, описанных в статье «Как стать Участником взаимодействия в СМЭВ».

Рассмотрим подробнее специфику обмена в СМЭВ4 с использованием SQL-запросов.

1.    Зарегистрированные в ЛК УВ информационные системы (ИС) Поставщика и Потребителя должны иметь соответствующие роли в СМЭВ4 (см. Рисунок 1).

SQL1.png

Рисунок 1. Карточка ИС в ЛК УВ с присвоенной ей ролью в СМЭВ4

2.    В контурах Поставщика и Потребителя должно быть установлено типовое ПО «Агент СМЭВ4» (далее – Агент), настроенное для обмена с использованием SQL-запросов.

Дистрибутивы и документация ПО «Агент СМЭВ4» доступны на портале ЕСКС в разделе «ПО для Участников СМЭВ».

3.    Поставщиком должны быть зарегистрированы в ЕИП НСУД информационный ресурс (ИР) и информационная система (ИС). Также должна быть зарегистрирована в ЕИП НСУД и отправлена в необходимую среду СМЭВ4 (тестовую или продуктивную) модель данных Витрины Поставщика.

О том, как зарегистрировать и согласовать необходимые объекты в ЕИП НСУД, читайте в «Инструкции по работе в ЕИП НСУД».

4.    На стороне Поставщика должна быть технически реализована Витрина данных.

Для запуска Витрины Поставщику необходимо установить и настроить ПО «Витрина данных», реализовать регулярную загрузку данных в Витрину и работу по обеспечению качества данных.

5.    Поставщиком должен быть зарегистрирован РЗ типа SQL.

6.    Потребителем должен быть получен доступ к РЗ типа SQL. О том, как это сделать, читайте в РП ЛК УВ (п. 5.8.1).

Примечание

При вызове РЗ запрещено использование надстроек, то есть дополнительных условий фильтрации и операций над получаемыми данными (order by, limit, where и пр.). Данные условия и операции должны быть предусмотрены внутри тела РЗ при его создании Поставщиком данных.

Вызов РЗ

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

Для вызова РЗ доступны два способа: через REST и через JDBC-драйвер. Работа по РЗ типа SQL может происходить в синхронном и асинхронном режимах. Описание и примеры вызовов РЗ в обоих режимах приведены в Методических рекомендациях СМЭВ4 (далее – МР СМЭВ4) (п. 2.3.1).

Сравнение двух режимов работы РЗ типа SQL с примерами вызовов приведено в таблице ниже (Таблица 1). На Рисунках 2 и 3 приведены скриншоты результатов выполнения РЗ.

Таблица 1. Сравнение режимов работы РЗ типа SQL

Параметр сравнения

Синхронный режим

Асинхронный режим

Когда использовать

Когда готовы ждать ответа в течение определенного времени (установленное соединение сохраняется в течение заданного таймаута)

Когда не готовы долго ждать (актуально для РЗ, выполнение которых заведомо требует длительного времени)

Как работает

Выполняется один запрос от ИС Потребителя к Агенту СМЭВ4.

В рамках HTTP-запроса (метод POST) передается SQL-запрос, в ответе возвращается результат выполнения SQL-запроса.

Подробнее – в МР.

Выполняются два запроса от ИС Потребителя к Агенту СМЭВ4:

1.     В рамках первого HTTP-запроса (метод POST) передается SQL-запрос, в ответе возвращается идентификатор запроса.

2.     В рамках второго HTTP-запроса (метод GET) передается ранее полученный идентификатор запроса, в ответе возвращается результат выполнения SQL-запроса.

Подробнее – в МР.

Нужны ли дополнительные настройки

Нет. Вся логика – на стороне транспорта.

Нет. Вся логика – на стороне транспорта.

Пример вызова на РЗ

it_organization.1.1.it_organization_where_ogrn

curl -X POST -H "Accept-Version:1" -H "Content-Type: application/json" -d '{"sql": {"sql": "Select * from it_organization.1.1.it_organization_where_ogrn('''1217800000000''')"}}' http://localhost:8192/query --silent -m 30

Подробнее о формировании РЗ – в МР.

Запрос 1:

curl --location --request POST 'http://localhost:8192/regulated-query/async'

--header 'Content-Type: application/x-www-form-urlencoded; charset=utf-8'

--header 'Accept-Version:1'

--header 'ClientRequestID:afd36c80-957e-11ed-87cd-0800200c9a66'

--data-urlencode 'priority=NORMAL'

--data-urlencode 'timeout=600'

--data-urlencode 'datamart=it_organization'

--data-urlencode 'mnemonic=it_organization_where_ogrn'

--data-urlencode 'majorVersion=1'

--data-urlencode 'minorVersion=1'

--data-urlencode 'params={"type": "STRING", "value": "1217800000000", "name": "organizations_OGRN"}

Ответ:

{

"id": "1efe2f25-b29a-6e36-a92f-4f7a064fc4f1",

"deadline": "2025-02-04T12:30:01Z"

}
Запрос 2:

curl --location --request GET 'http://localhost:8192/regulated-query/1efe2f25-b29a-6e36-a92f-4f7a064fc4f1'

--header 'Accept: application/vnd.ru.rtlabs.podd.agent+json; charset=utf-8'

--header 'Accept-Version: 1'

--header 'ClientRequestID: afd36c80-957e-11ed-87cd-0800200c9a66'

Подробнее о формировании – в МР.

Пример результата выполнения РЗ в синхронном режиме приведен на Рисунке 2:

SQL2.png

Рисунок 2. Вызов РЗ в синхронном режиме

Пример результата выполнения РЗ в асинхронном режиме приведен на Рисунке 3:

SQL3.png

Рисунок 3. Вызов РЗ в асинхронном режиме

РЗ типа SQL может быть распределенным. О создании распределенного РЗ читайте в статье "Создание распределенного SQL регламентированного запроса".

Также в обмене может участвовать вложение или печатная форма.

Другие типы обменов описаны в статьях "Обмен в СМЭВ4 c использованием REST-сервиса" и "Обмены в СМЭВ 4 с использованием подписок".

Дополнительные учебные материалы – ссылки на записи вебинаров и обучающие курсы – собраны в статье "Дополнительные обучающие материалы".


Авторизуйтесь, чтобы оставить комментарий к статье