Запросы 1С к базе для LLM-агентов
Это небольшое (буквально 20 строчек кода) расширение для 1С c HTTP-сервисом, который принимает на вход 1C-запрос и возвращает результат в виде таблицы с разделителями (TSV).
Изначально хотелось решить свою насущную проблему: как с LLM разбираться с задачами типа "Не проводится документ ... с ошибкой ...". Когда надо анализировать не только модуль проведения, а еще и с конкретными данными.
Получилось классно:

Побочным эффектом стало то, что теперь с помощью LLM агента можно получать любой анализ из базы. Особенно хорошо это работает с подключенным MCP по метаданным. В таком случае агент сначала читает метаданные и только потом генерирует запрос, что часто дает ваншотный результат. Строго говоря работает и без MCP, но дольше по времени и тратит сильно больше токенов. В 90% случаев первый запрос будет с ошибкой и следующим заходом LLMка пойдет вычитывать огромные xml'ки метаданных.
В состав приложенного архива входит:
1. Расширение АПРО_ВнешниеЗапросы.cfe c HTTP-сервисом, который принимает на вход 1C-запрос и возвращает результат в виде таблицы с разделителями
2. Файлы публикации базы - пример default.vrd для клиент-серверной базы и скрипт run-1с-web.ps1 с настройками publication.yaml для файловой базы
3. .claude - папка со скиллом LLM-агента для произвольных запросов к 1С через HTTP-сервис
Посмотрите приложенные слайды диалога в OpenCode с дешевой моделькой GLM 4.7. На них особенно хорошо видно, насколько эффективнее это работает с MCP по метаданным, чем без него! Все запросы с первого раза были синтаксически валидными. На обычном тарифе z.ai весь анализ выполняется за 1 минуту (на Сerebras - меньше 15 секунд :)) и всего 25к токенов (из них большая часть скил)!
На Инфостарт можно купить MCP для метаданных.
Предупреждение: Вы должны понимать, что этим инструментом LLM'ка "сломать" в базе ничего не может, но "прочитает" ваши данные, включая персональные. Проблемы конфиденциальности - ваша ответственность. Можно использовать обработки анонимизации данных от 1С или навайбкодить свои.
Ключевое в успехе решения
- Подробный SKILL, который минимизирует галлюцинации LLM. Даже через GLM 4.7 получаются хорошие запросы, с GPT 5.2 или Claude - вообще проблем нет.
- Анализ метаданных через MCP до генерации запроса.
- Валидация синтаксиса запроса, которую подсмотрел в публикации на Инфостарте. Это дает тот самый "Feedback loop", который позволяет агенту самому прийти к решению.
- Не нужно заморачиваться сложной передачей параметров запроса - LLM'ка сама (через подсказку в SKILL) хардкодит условия прямо в текст запроса через примитивные типы данных.
Формат ответа сознательно сделан в TSV, чтобы минимизировать токены. Удобнее было бы в JSON, но объем ответов резко возрастает. Таблицы с разделителями LLM'ка хорошо понимаю (обучались на большом объеме логов в том числе).
Быстрый старт
Разберем на примере демо-базы 1С УНФ, но работать должно на любой современной 1Ске.
-
Подключаем расширение АПРО_ВнешниеЗапросы
-
Публикуем HTTP-сервис
- Если база клиент-серверная, то в default.vrd добавляем блок:
<httpServices publishExtensionsByDefault="true"> <service name="АПРО_ВЗ_HTTPЗапросы" rootUrl="queries" enable="true" reuseSessions="autouse" sessionMaxAge="20" poolSize="10" poolTimeout="5"/> </httpServices>
- Если база файловая, то можно публиковать сервис через автономный сервер ibsrv. Например, такой командой в PowerShell:
& "C:\Program Files\1cv8\8.3.27.1786\bin\ibsrv.exe" --db-path="D:\1C_Bases\unf_demo_base" --config="D:\1C_Projects\unf_demo\publication.yaml" --http-address="any"
где
publication.yaml- файл публикации с таким содержимым:http: - base: / http-services: service: - name: АПРО_ВЗ_HTTPЗапросы root: queries publish: true
-
Можно протестировать работу любым HTTP-клиентом.
- Для клиент-серверного варианта:
# проверка что сервис работает curl --request GET \ --url http://20.10.10.201/unf_demo/hs/queries/health \ --header 'authorization: Basic YWRtaW46MTIz'
- Для файлового варианта:
# у автономного сервера 1С дефолтный порт 8314 curl --request GET \ --url http://localhost:8314/hs/queries/health \ --header 'authorization: Basic YWRtaW46MTIz'
- Пример полноценного запроса к базе:
curl --request POST \ --url http://20.10.10.201/unf_demo/hs/queries/query \ --header 'authorization: Basic YWRtaW46MTIz' \ --header 'content-type: application/json' \ --data '{ "query": "ВЫБРАТЬ ЧекККМ.Номер КАК Номер, ЧекККМ.Дата КАК Дата, ЧекККМ.Проведен КАК Проведен, ЧекККМ.Организация.Наименование КАК Организация ИЗ Документ.ЧекККМ КАК ЧекККМ ГДЕ ЧекККМ.Номер = \"ССНФ-000002\" И ЧекККМ.Дата >= ДАТАВРЕМЯ(2026, 1, 2) И ЧекККМ.Дата <= ДАТАВРЕМЯ(2026, 1, 3)" }'Не забывайте про Basic Auth в заголовках (под свое имя и пароль в базе 1С).
-
Самое главное - не забудьте подправить SKILL.md под свои данные:
- свой url
- свои логины/пароли
-
В каталоге своего проекта копируйте:
.claude/skills/1c-queries/SKILL.md
Все! Можно общаться с данными 1С через LLM агента!
Классные альтернативные решения:
Вступайте в нашу телеграмм-группу Инфостарт

