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

Рисунок 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"
} 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:

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

Рисунок 3. Вызов РЗ в асинхронном режиме
РЗ типа SQL может быть распределенным. О создании распределенного РЗ читайте в статье "Создание распределенного SQL регламентированного запроса".
Также в обмене может участвовать вложение или печатная форма.
Другие типы обменов описаны в статьях "Обмен в СМЭВ4 c использованием REST-сервиса" и "Обмены в СМЭВ 4 с использованием подписок".
Дополнительные учебные материалы – ссылки на записи вебинаров и обучающие курсы – собраны в статье "Дополнительные обучающие материалы".