REST-интерфейс 1С: отладка в SoapUI, Mock-сервер и автотесты в «Тестирование 3.0»

30.09.26

Интеграция - WEB-интеграция

Пошагово: REST-запросы к HTTP-сервисам 1С и заглушка WMS в SoapUI, Assertions, регистрация в «Тестирование 3.0» и headless TestRunner. За 10–15 минут собирается повторяемый стенд без контура партнёра.

За 10–15 минут на бесплатном SoapUI можно собрать стенд для отдельного прогона REST, в том числе с заглушкой контрагента, и закрепить проверки в конфигурации «Тестирование 3.0» с отчётом по регламенту. РЕСТ-интерфейс 1С удобно отлаживать в SoapUI: Моск-сервер подменяет контур WMS. Когда сценарий перестаёт «плавать», тот же проект подключают к «Тестирование 3.0» и прогоняют через TestRunner. Семь шагов ниже - для разработчика интеграций на ERP, УТ или КА: проверить исходящие НТТР-запросы и воспроизводить входящие вызовы с телом команды от WMS (callback), без стенда партнёра и без повторения одних и тех же запросов вручную после каждой сборки.

 

Подготовка окружения для РЕСТ-тестов

Чтобы гонять тесты отдельно от продуктивного контура партнёра, понадобятся опубликованная на IIS или Apache информационная база 1С, SoapUI Open Source (SmartBear) и при автоматизации - конфигурация «Тестирование 3.0» в отдельной базе или рядом с регламентными заданиями.

Со стороны 1С нужны НТТР-сервисы: объект «НТТР-сервис», шаблоны URL, методы GET и POST, обработчики в модуле сервиса. Исходящие вызовы к WMS обычно лежат в общем модуле интеграции через НТТРСоединение и НТТРЗапрос; входящие callback принимает опубликованный НТТР-сервис. В учебном контуре вместо живой WMS поднимают REST Mock Service в SoapUI - заглушку с фиксированным телом по методу и пути.

Публикация: конфигуратор, «Администрирование», «Публикация на веб-сервере» (или оснастка кластера). Отмечают сервисы, задают виртуальный каталог; root URL согласуют с шаблоном в метаданных. Адрес базы обычно «сервер/имя_базы/hs/ИмяСервиса/…» - хвост задаёт шаблон URL.

SoapUI на машине разработчика лучше ставить в каталог без пробелов: TestRunner на сервере часто падает изR09;за пробелов и прав. Перед ночным прогоном проверьте учётную запись регламентного задания, права на bin\testrunner.bat, каталог отчётов, файл проекта (.xml) и путь к SoapUI в «Настройках работы пользователя на рабочем месте» в «Тестирование 3.0».

 

РЕСТ-запросы к 1С и внешним сервисам в SoapUI

РЕСТ-проект создают через File → New REST Project. В URI можно указать учебный тиме-сервис, например , или сразу endpoint опубликованного НТТР-сервиса 1С. SoapUI развернёт Resource и Method; нестандартный путь Resource добавляют вручную.

 

Контекст: РЕСТ-запросы к 1С и внешним сервисам в SoapUI

 

Контекст: РЕСТ-запросы к 1С и внешним сервисам в SoapUI

Для 1С собирают полный путь: корень публикации плюс сегменты шаблона. Шаблон «/orders/{id}» в Resource даёт «/orders/1», Method - GET. Accept: application/json или text/xml. Для POST в теле запроса выберите Media Type (application/json) и введите JSON - так же, как Content-Type ожидает модуль НТТР-сервиса.

Submit отправляет запрос; на Raw видны статус, заголовки и тело. У тиме-сервиса в ответе ищут фрагмент вроде «datetime» или «time» - его потом зафиксируют в Assertion. Postman и Insomnia тоже подходят; шаги здесь под SoapUI, потому что «Тестирование 3.0» уже знает шаблон «Тест веб-сервисов (Soap UI)».

Типичные сбои при вызове 1С:

  • 404 - лишний или пропущенный сегмент пути, сервис не опубликован, другая база в переопределении URL задания;
  • 405 - метод в SoapUI не совпадает с объявленным в НТТР-сервисе (POST не добавлен к шаблону, хотя GET уже ходит);
  • 401 - схема Auth в SoapUI не совпадает с аутентификацией сайта IIS (разберём в последнем разделе).

Для POST в Request кладут JSON, который WMS прислала бы на endpoint: номер заказа, статус, штрихкод. Content-Type должен совпадать с разбором Запрос.ПолучитьТелоКакСтроку в модуле сервиса.

Несколько НТТР-сервисов не смешивают: у каждого свой сегмент после hs в умолчанию.vrd и в IIS. «Метод не найден» в метаданных часто значит, что POST для шаблона просто не объявлен.

 

Mock РЕСТ-сервер как заглушка контрагента

REST Mock Service отвечает на заранее описанные запросы так, как ответила бы WMS. В проекте: New REST Mock Service, внутри MockAction с Method GET или POST и Path «/hello-world» (без хоста), к действию - MockResponse.

 

Контекст: Mock РЕСТ-сервер как заглушка контрагента

 

Контекст: Mock РЕСТ-сервер как заглушка контрагента

В ответе: HTTP 200, Media Type text/xml для ХМЛ-контракта или application/json, если интеграция на JSON (REST 1С чаще на JSON). В Custom Headers - Content-Type выбранного типа. Тело XML:

<response>
  <status>OK</status>
  <message>hello-world</message>
</response>

 

Фрагмент XML тела MockResponse для REST Mock

Теги в Mock должны совпадать с тем, что парсит код 1С - DOM, XPath или Contains в тесте. Для JSON - объект с полями после ПрочитатьJSON. Groovy в Mock возможен; для автотестов статический ответ надёжнее.

Mock Service Editor → Settings → Port (часто 8080; при конфликте 8088 или 9090). Запуск - зелёная кнопка. Проверка: браузер на localhost:порт/hello-world, затем в 1С временно подменяют базовый URL WMS на localhost и вызывают метод из обработки обмена.

Функция ВыполнитьЗапросКWMS(АдресРесурса, ТелоJSON) Экспорт
    Соединение = Новый HTTPСоединение("localhost", 8088,,,, 30);
    Запрос = Новый HTTPЗапрос(АдресРесурса);
    Запрос.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
    Если ЗначениеЗаполнено(ТелоJSON) Тогда
        Запрос.УстановитьТелоИзСтроки(ТелоJSON, КодировкаТекста.UTF8);
    КонецЕсли;
    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    Если Ответ.КодСостояния <> 200 Тогда
        ВызватьИсключение "HTTP " + Формат(Ответ.КодСостояния, "ЧГ=0");
    КонецЕсли;
    Возврат Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
КонецФункции

Порт 8088 совпадает с Mock в примере; на боевом контуре меняют только хост и порт. Для HTTPS у Mock или сервиса укажите защищённое соединение (ЗащищённоеСоединениеOpenSSL) и порт 443 - в примере HTTP на localhost этого не требует. Точку останова ставят на разборе строки ответа.

Исходящий вызов на Mock настраивают как на боевой хост - меняются схема, хост и порт. Входящий callback моделируют РЕСТ-запросом из SoapUI на опубликованный НТТР-сервис 1С с телом, которое ждёт обработчик POST.

 

Отладка обработчиков HTTP в конфигураторе

Точки останова - в модуле НТТР-сервиса у процедур шаблонов URL. Исходящий REST отлаживают в общем модуле: формирование НТТРЗапрос, заголовки, ОтправитьДляОбработки, ПолучитьТелоКакСтроку, ПрочитатьJSON.

 

Контекст: Отладка обработчиков HTTP в конфигураторе

 

Контекст: Отладка обработчиков HTTP в конфигураторе

Конфигуратор запускают в режиме отладки на сервере приложений (или файловой базе с той же публикацией). Из SoapUI шлют GET на НТТР-сервис 1С или POST с телом callback; для исходящего сценария запускают обработку в 1С, которая бьёт в Mock. Сеанс должен попасть на сервер, где висит отладчик - на файловой базе это проще, на ragent/debug смотрите, что публикация на том же хосте.

Имя экспортной функции в НТТР-сервисе совпадает с метаданными: шаблон URL плюс НТТР-метод, например ordersPOST для шаблона orders и POST (регистр как в конфигураторе). Фрагмент входящего POST с JSON - имена у вас могут отличаться:

Функция ordersPOST(Запрос)
    Тело = Запрос.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
    Чтение = Новый ЧтениеJSON;
    Чтение.УстановитьСтроку(Тело);
    Данные = ПрочитатьJSON(Чтение);
    // здесь разбираем поля JSON
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, Новый Структура("status", "accepted"));
    Ответ.УстановитьТелоИзСтроки(Запись.Закрыть(), КодировкаТекста.UTF8);
    Возврат Ответ;
КонецФункции

После push результат смотрят в журнале регистрации или в регистре сведений, куда пишет ваш модуль обмена. Имена измерений и реквизитов - только из вашей конфигурации; выборкой перед отладкой убеждаются, что запись появилась:

ВЫБРАТЬ ПЕРВЫЕ 10
    ВашРегистр.Период КАК Период,
    ВашРегистр.Событие КАК Событие,
    ВашРегистр.Комментарий КАК Комментарий
ИЗ
    РегистрСведений.ВашРегистрОбмена КАК ВашРегистр
ГДЕ
    ВашРегистр.Период >= &НачалоПериода
УПОРЯДОЧИТЬ ПО
    Период УБЫВ

Параметр &НачалоПериода задают на начало суток теста. Если регистр периодический - отбор по периоду; у непериодического поля «Период» нет, отбирайте по дате записи или реквизиту из вашей схемы. В результате ищут строку приёма callback после вызова из SoapUI.

 

Запрос последних записей журнала обмена после push

Пустая выборка при HTTP 200 чаще всего значит неверное имя регистра в запросе или отбор «уехал» относительно момента теста.

 

Тестовые сценарии и Assertions в SoapUI

У успешного REST Request в контекстном меню - Add to TestCase. TestSuite «Проверка запроса данных», TestCase «Получить текущее time» или «GET НТТР-сервис статуса». В Steps остаётся копия запроса с тем же endpoint.

 

Контекст: Тестовые сценарии и Assertions в SoapUI

 

Контекст: Тестовые сценарии и Assertions в SoapUI

На шаге запроса: вкладка Assertions → Add Assertion. Хватит двух проверок из базового сценария: Valid HTTP Status Codes (200) и Contains - подстрока «time» или «datetime» для тиме-сервиса, ожидаемое поле JSON для своего сервиса. Для XML подойдёт XPath Match. В OSS для JSON надёжнее Contains или Script Assertion; JsonPath Match - если доступен в вашей сборке SoapUI.

Зелёный play на TestCase прогоняет шаги; в логе - галочки на assertions. Отдельный TestCase «Mock hello-world» проверяет Content-Type и тело заглушки.

СОАР-веб-сервисы 1С заводят через СОАР-проект по WSDL; регистрация в «Тестирование 3.0» та же, но в статье фокус на REST.

 

Подключение к «Тестирование 3.0» и регламентный запуск

В базе «Тестирование 3.0» открывают подсистему «Тестирование», журнал «Тесты», создают элемент. Заполняют: наименование (например «проверка запроса данных»); тип «юнит-тест» - в значении конфигурации «Тестирование 3.0» это отдельная проверка НТТР-сервиса, а не процедура модуля в xUnit.V8; серьёзность дефекта по вашей шкале; вариант хранения GIT или общий каталог (на сервере задания - UNC или локальный путь для служебной учётной записи); путь к.xml проекта SoapUI. При хранении в GIT путь к.xml часто указывают относительно корня репозитория, если это поддерживает обработчик шаблона в вашей версии «Тестирование 3.0»; иначе - абсолютный путь на агенте.

В планировщике: журнал «Задания», конструктор, шаблон «Тест веб-сервисов (Soap UI)». В задании - ссылка на тест; переопределение URL базы 1С (строка «сервер/имя_базы» без протокола или полный адрес публикации - смотрите подсказку в форме задания и код обработки шаблона). Путь к SoapUI - в «Настройках работы пользователя на рабочем месте» у пользователя, под которым выполняется задание.

Как правило, переопределение подставляет базовый URL в custom properties проекта перед TestRunner - имена свойств смотрите в вашем.xml и в обработчике шаблона задания, чтобы один.xml гоняли против тестовой и предрелизной публикации без правок в GUI SoapUI.

После выполнения результат попадает в журнал тестов; отчёт TestRunner - в каталог из ключей командной строки (-f). Задание падает без GUI, если testrunner.bat не стартует (журнал Windows), нет прав на java, проект ссылается на localhost Mock, а Mock на сервере не поднят - для CI Mock выносят на стенд или отключают соответствующий case в suite.

Vanessa Automation проверяет формы и сценарии UI; здесь только НТТР-контракт и регламентный прогон SoapUI из 1С.

 

Авторизация, кодировка и запуск из CI

Auth в REST Request: при Wиндоwс-аутентификации IIS - NTLM, доменная учётная запись с правом на базу; при Basic - логин и пароль пользователя 1С по настройкам публикации. Несовпадение схемы даёт 401 до входа в код НТТР-сервиса.

Кириллица: в SoapUI-x.x.x.vmoptions в bin добавляют -Dfile.encoding=UTF-8 (или UTF8 по документации вашей JRE). Иначе Contains по русской подстроке в ответе 1С может ложно падать.

TestRunner - официальный неадлесс-запуск пакета SoapUI OSS (справка SmartBear по testrunner). Однострочный вызов из cmd:

  • -f - каталог HTML/JУнит-отчётов (создайте заранее, проверьте антивирус и место на диске);
  • -I - ignore ошибки: прогон продолжается после падения шага, но ненулевой exit code при упавших тестах может сохраниться - сверяйте с документацией и политикой CI;
  • -j - export JUnit (Allure, Jenkins); -r - сводка в консоль, удобно если stdout задания пишется в файл;
  • -e - имя Environment с подставляемым base URL.

Тот же bat можно вызвать из внешней CI, если отчёт не нужен в журнале 1С. На сервере без интерактивного сеанса первый прогон лучше выполнить вручную из cmd под учётной записью задания - так видна ошибка java или путь, а не только код возврата регламентного задания.

После отладки блока интеграции имеет смысл зафиксировать автотесты в проекте SoapUI и карточке «Тесты», а не ограничиться разовым прогоном из GUI - иначе регламент не поймает регрессию.

 

Команды для копирования

cd /d "C:\Program Files\SmartBear\SoapUI-5.7.2\bin"
testrunner.bat -f "D:\Reports\SoapUI" -I -j -r -e "Default" "D:\Tests\Integration-REST-soapui-project.xml"

Перед регламентом подставьте версию каталога SoapUI, путь к.xml и имя Environment. Mock-case на сервере либо поднимают на том же порту, либо исключают из suite, который вызывает планировщик.

Вступайте в нашу телеграмм-группу Инфостарт

1С 8.3 REST SoapUI HTTP-сервис интеграция автотестирование Mock-сервер 1С Тестирование 3.0 TestRunner интеграция WMS

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

WEB-интеграция Разработчик Аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

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

17568 руб.

20.12.2024    7323    33    4    

34

WEB-интеграция Анализ продаж Системный администратор Разработчик Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

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

60000 руб.

07.05.2019    44361    76    45    

32

Сайты и интернет-магазины WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

42700 руб.

03.08.2020    25385    41    26    

30

WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена по API между конфигурацией 1С:Альфа-Авто 6 и порталом LogicStar. Позволяет работать с несколькими обменами LogicStars разных брендов (CHERY, OMODA, JAECOO, EXEED, TENET) в одной информационной базе в ручном и автоматическом режиме. Поддерживается выгрузка заказ-нарядов, реализаций товаров и товарных остатков.

20740 руб.

13.05.2025    2825    4    0    

7

WEB-интеграция Сайты и интернет-магазины Системный администратор Разработчик Пользователь Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1C:ERP Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Расширение предназначено для более гибкой и быстрой выгрузки остатков и цен на сайты под управление 1С.Битрикс. Управление сайтом(БУС). Настраиваемое гибкое сопоставление складов в 1С и складов в БУС с возможностью обеспечить связь складов один-ко-многим. Настраиваемое сопоставление видов цен в 1С и типов цен в БУС. Отчеты по сравнение остатков и цен в 1С и БУС. Возможность точечной выгрузки остатков и цен.

2278 руб.

08.07.2025    2143    1    0    

2
Для отправки сообщения требуется регистрация/авторизация