Skip to content

Расширение для 1С и SKILL для запросов данных в базе 1С

License

Notifications You must be signed in to change notification settings

FSerg/1c-llm-requests

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

1С-запросы к базе для LLM-агентов

Это небольшое (буквально 20 строчек кода) расширение для 1С c HTTP-сервисом, который принимает на вход 1C-запрос и возвращает результат в виде таблицы с разделителями (TSV).

Изначально хотелось решить свою насущную проблему: как с LLM разбираться с задачами типа "Не проводится документ ... с ошибкой ...". Когда надо анализировать не только модуль проведения, а еще и с конкретными данными.

Получилось классно - пример разбора проблемы от GPT Codex


Побочным эффектом стало то, что теперь с помощью LLM агента можно получать любой анализ из базы. Особенно хорошо это работает с подключенным MCP по метаданным. В таком случае агент сначала читает метаданные и только потом генерирует запрос, что часто дает ваншотный результат. Строго говоря работает и без MCP, но дольше по времени и тратит сильно больше токенов. В 90% случаев первый запрос будет с ошибкой и следующим заходом LLMка пойдет вычитывать огромные xml'ки метаданных.

Демонстрация запуска и использования MCP сервера для разработки 1С

Пример отчета из видео

На Инфостарт можно купить MCP для метаданных.

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

Ключевое в успехе решения

  1. Подробный SKILL, который минимизирует галлюцинации LLM. Даже через GLM 4.7 получаются хорошие запросы, с GPT 5.2 или Claude - вообще проблем нет.
  2. Валидация синтаксиса запроса, которое подсмотрел в публикации на Инфостарте. Это дает тот самый "Feedback loop", который позволяет агенту самому прийти к решению.
  3. Не нужно заморачиваться сложной передачей параметров запроса - LLM'ка сама (через подсказку в SKILL) хардкодит условия прямо в текст запроса через примитивные типы данных.

Формат ответа сознательно сделан в TSV, чтобы минимизировать токены. Удобнее было бы в JSON, но объем ответов резко возрастает. Таблицы с разделителями LLM'ка хорошо понимаю (обучались на куче логов в том числе).

Быстрый старт

Разберем на примере демо-базы 1С УНФ, но работать должно на любой современной 1Ске.

  1. Подключаем расширение АПРО_ВнешниеЗапросы

  2. Публикуем 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
  3. Можно протестировать работу любым 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С). Для быстрого запуска используйте скрипты из .claude/skills/1c-queries/scripts/ — они читают .env автоматически.

  4. Самое главное - заполните .claude/skills/1c-queries/.env под свои данные:

    • ONEC_QUERY_URL
    • ONEC_QUERY_LOGIN
    • ONEC_QUERY_PASSWORD Значения в SKILL.md теперь читаются из .env.
  5. В каталоге своего проекта копируйте всю папку: .claude/skills/1c-queries/ (включая .env и scripts/)

Все! Можно общаться с данными 1С через LLM агента!

Классные альтернативные решения:

About

Расширение для 1С и SKILL для запросов данных в базе 1С

Resources

License

Stars

Watchers

Forks

Packages

No packages published