Добрый день.
В связи с активным развитием вайб-кодинга внутри компании появилась потребность регулярно доставать какие-то сведения из 1С, чтобы интегрироваться с новыми появляющимися приложениями. Каждый раз писать отдельный сервис и заниматься публикацией было достаточно трудоемко. OData не подходит по своему замыслу, да и где строились такие запросы, это было достаточно медленно. В результате родился универсальный http-сервис в формате расширения. Весь необходимый функционал содержит внутри себя и специально не применяет типовые методы (в т.ч. БСП). В результате может устанавливаться на любую конфигурацию и публиковаться.
Первая версия содержала только справочник запросов (с перечнем параметров) и возможность эти сведения получать, после чего было решено сделать лазейку для создания новых запросов и правки имеющихся отдельным сервисом внутри. А для автоматического документирования построить swagger.
Решение уже несколько месяцев стабильно работает у нас, решил поделиться. Очень удобно для формирования различных выгрузок данных из 1С по запросам, которые мы можем легко администрировать и изменять.
В настоящий момент является одним из ключевых элементов полной ИИ-разработки, запросы от новых созданных приложений генерируются с помощью ИИ и далее встраиваются в рабочую базу, отдавая корректно необходимые данные - тем самым специалисты 1С не отвлекаются на постоянные мелкие задачи интеграции.
Расширение содержит совсем небольшой набор объектов:
- Отдельную подсистему
- Общий модуль с универсальными процедурами
- Роль для работы с расширением
- Константу, разрешающую запись новых настроек через сервис
- Справочник, хранящий настройки запросов с параметрами
- Набор http-сервисов

На справочнике и сервисах мы остановимся подробнее - это основные объекты для взаимодействия. Установка расширения в базу и публикация вебсервисов расширений стандартная, при публикации ставим флаг для расширений.
Авторизацию можно настроить как в рамках публикации сервиса, так и на стороне приложений, которые будут подключаться, для безопасности я бы выбрал второй вариант. При необходимости, возможна публикация https.
Справочник настроек
В справочнике хранятся настройки запросов: Наименование будет передаваться как параметр в POST запросе, лимит строк задаем на всякий случай, но если не требуется, то в тексте запроса не прописываем. На закладке Параметры прописываем набор параметров с именами и типами значений. Важный момент, что используются только примитивные типы, так как мы строим универсальный сервис, работающий с прямой обработкой входящего JSON
Сервис получения данных
При публикации получает адрес /hs/UniversalRequestService/urs
Для получения данных по конкретной настройке, в структуру JSON передаем имя и набор параметров. Например для такой настройки

вот такой JSON
{
"setting": "BARCODE_BY_ITEM",
"parameters": {
"КодНоменклатуры": "12345"
}
}
Swagger
В рамках сервисов так же публикуется и динамически собираемый Swagger: /hs/UniversalRequestAPI/swagger - доступ к нему можно получить через браузер, все активные настройки из справочника будут выведены с описанием входных параметров и примерами выходных - активные настройки видны в списке.
Сервис формирования новых настроек запросов
При установке константы Разрешить создание сервисов внешним запросом в значение Истина, начинает работать сервис /hs/UniversalRequestAPI/UpdateService
На входе принимается JSON с указанием:
- имени создаваемой или изменяемой настройки (name),
- родительской группы (parentName),
- описания (description),
- признака активности (active),
- лимита строк (rowLimit),
- текста запроса (queryText)
- массива параметров с указанием имени, типа (Строка, Число, Дата, Булево) и обязательности применения
{
"name": "Номенклатура",
"parentName": "Интеграции",
"description": "Поиск номенклатуры по фрагменту наименования",
"active": true,
"rowLimit": 100,
"queryText": "ВЫБРАТЬ ПЕРВЫЕ &ЛимитСтрок ...",
"parameters": [
{
"name": "ФрагментНаименования",
"valueType": "Строка",
"required": true
}
]
}
Данный сервис генерирует или перезаписывает настройку с указанным именем. Это позволяет управлять активными настройками, менять и совершенствовать их не затрагивая код 1С
Помощь сервиса в преобразовании процесса разработки
Хочу отдельно описать как в нашем случае изменился подход к задачам интеграции с 1С при необходимости получить какие-то сведения.
Исходно процесс строился следующим образом:
- Появляется задача на разработку внешнего (за рамками основной рабочей ERP) приложения
- Обсуждается архитектура интеграции
- Разрабатывается новый http-сервис или строится обмен с основной системой
- Процесс тестирования разной длительности и сложности (в цикле этапы 2-3-4)
- Запуск в эксплуатацию
- Поддержка (в случае любых изменений сброс на этап 2)
Теперь, с учетом ИИ-разработки, наш процесс строится следующим образом:
- Появляется задача на разработку приложения
- ИИ с помощью MCP либо специалисты 1С готовят запрос для получения данных
- Строится интеграция и автоматизированное тестирование
- Запуск в эксплуатацию
- Поддержка (в случае любых изменений ИИ достраивает запрос, обновляет настройку в базе и прогоняет тесты, проверкой занимается непосредственно разработчик или пользователь внешнего приложения, ресурсы отдела автоматизации 1С не задействуются)
Дополнительно
Код приложения открыт полностью. На 99% сгенерирован с помощью ИИ и немного по мелочам доведен и донастроен.
Спасибо.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.22.186, 2.5.18.64
- Управление нашей фирмой, редакция 3.0, релизы 3.0.13.363
Вступайте в нашу телеграмм-группу Инфостарт