EDT-MCP + v8std-MCP: учим ИИ-агента понимать ошибки EDT и писать код по стандартам 1С

02.09.26

Разработка - Рефакторинг и качество кода

Продолжение статьи «BSL Language Server внутри 1С:EDT: коннектор, которого не хватало». Там мы научили EDT видеть расширенную диагностику BSLLS, а здесь замкнем контур: научим ИИ-агентов автоматически исправлять эти ошибки строго по официальным стандартам разработки 1С.

Проблема: ИИ-агент видит код ошибки, но не знает стандартов 1С

Использование ИИ-ассистентов (Cursor, Claude Code, Cline, OpenCode, Antigravity) в 1С-разработке постепенно переходит из категории экспериментов в ежедневный рабочий инструмент. Если вы разрабатываете в 1С:EDT, для интеграции с агентами уже есть отличный мост - EDT-MCP. Он дает языковой модели доступ ко всей рабочей области EDT: дереву метаданных, структуре модулей, панели ошибок, запуску отладки и модификации исходников.

Но когда агент приступает к анализу проекта, он сталкивается с фундаментальным ограничением современных LLM.

Агент вызывает инструмент get_project_errors в EDT-MCP и получает список диагностик:

- CommonModules/КлиентскийМодуль.bsl:15  BSLLS:UsingModalWindows
- Documents/ЗаказПокупателя.bsl:42       bsl-variable-name-invalid
- CommonModules/ФоновыеВызовы.bsl:8      CommonModuleMissingAPI
- Catalogs/Номенклатура/Forms/Форма:12   module-structure-method-in-regions

Коды ошибок перед агентом есть, но что именно требует стандарт 1С, модель не знает.

В обучающих выборках открытых и закрытых LLM стандарты разработки 1С (ИТС / v8std) представлены крайне скудно или фрагментарно. Правила регулярно обновляются вендором: меняются требования к асинхронным вызовам, структуре общих модулей, именованию переменных, областям видимости и защите от SQL-инъекций в SDBL.

В итоге неподготовленная нейросеть начинает либо гадать по названию идентификатора ошибки, либо предлагать правки из мира JavaScript/Python, либо галлюцинировать несуществующие конструкции.


Как подружить агента со стандартами: 3 подхода

Существует три способа передать агенту знание стандартов 1С.

Способ 1. «Пусть модель выкручивается сама»

Агент опирается только на свои внутренние веса. Для очевидных вещей (вроде удаления неиспользуемой переменной) это может сработать. Но для структурных требований (правильное разделение на #Область ПрограммныйИнтерфейс и #Область СлужебныеПроцедурыИФункции, тонкости вызовов без модальности, формат комментариев методов по стандартам ИТС) модель неизбежно ошибается.

Способ 2. Папка с описаниями в EDT-MCP («Check descriptions folder»)

В EDT-MCP есть полезная встроенная функция: можно указать локальный каталог с markdown-файлами описаний проверок из репозитория v8std. При вызове get_project_errors сервер автоматически обогащает выдачу полным текстом описания каждой найденной ошибки.

У этого подхода есть пара существенных минусов в реальной работе:

  1. Перерасход контекста и токенов. Если проект выдает 50-100 замечаний статического анализа, плагин загрузит описания по всем 100 ошибкам прямо в контекстное окно агента. Это сотни килобайт текста, удорожание каждого запроса и риск вытеснения полезной истории диалога.
  2. Сложность актуализации. Markdown-каталог нужно клонировать, хранить рядом с проектом и вручную обновлять при каждом релизе стандартов.

Способ 3. Второй MCP-сервер стандартов рядом (архитектурный оптимум)

Мы поднимаем рядом с EDT-MCP второй специализированный сервер - v8std-MCP, который выступает динамической базой знаний.

Агенту дается компактное системное правило (всего 5 строк): «Получил коды ошибок из EDT -> запроси их точечную расшифровку через v8std -> прочитай стандарт -> исправь код».

Преимущества схемы:

  • Экономия контекста. Описания и тексты стандартов загружаются только по тем правилам, которые агент реально исправляет в текущей итерации.
  • Связи стандартов. v8std знает иерархию: как код проверки АПК, BSL LS или 1C:Code style V8 связан с конкретным пунктом официального стандарта 1С (например, std455, std454, std456).
  • Свежесть данных. Сервер содержит актуальный структурированный индекс базы v8std.ru.

Архитектура: разделение обязанностей двух MCP

В этой связке каждый инструмент делает то, для чего он спроектирован:

  1. EDT-MCP (http://localhost:8765/mcp): предоставляет агенту API для взаимодействия с проектом 1С.
  2. v8std-MCP (http://localhost:8766/mcp): предоставляет семантическую базу знаний стандартов 1С.

Доступные методы v8std-MCP

Инструмент Назначение
v8std_explain_diagnostics Пакетная расшифровка кодов ошибок (АПК, BSL LS, EDT v8-code-style) со ссылками на пункты стандартов
v8std_get_page Загрузка полного текста конкретного стандарта или описания диагностики
v8std_get_related Получение графа связей: от стандарта к проверкам анализаторов и наоборот
v8std_search Полнотекстовый и семантический поиск по базе стандартов по свободной фразе
v8std_explain_snippet Анализ фрагмента кода BSL/SDBL на соответствие стандартам разработки

Почему локальный Docker-контур критичен для 1С-разработки

У проекта v8std есть публичный сервер (https://ai.v8std.ru/mcp). Однако для реальной корпоративной разработки на 1С использование внешнего MCP несет риски:

  1. Конфиденциальность и NDA. Когда агент использует explain_snippet или анализирует контекст модуля, фрагменты исходного кода вашей конфигурации передаются на сервер MCP. В локальном Docker-контейнере весь код остается на вашей машине или в закрытой сети предприятия.
  2. Стабильность и скорость. Локальный контейнер на Alpine с готовым индексом отвечает за миллисекунды и не зависит от доступности внешних каналов связи.
  3. Безопасность сетевого контура. Сервер v8std поддерживает встроенную защиту от DNS-rebinding, предотвращая несанкционированный доступ из браузеров к локальным RPC-интерфейсам.

Быстрый старт: готовый легковесный Docker-образ

Раньше для локального запуска v8std требовалось клонировать весь репозиторий проекта, собирать образ локально и запускать сборку вместе с генератором статического сайта zensical.

Чтобы убрать этот барьер, я подготовил отдельную легковесную MCP-сборку на базе Alpine Linux (без зависимостей zensical и HTML-рендерера). База стандартов и предрассчитанный поисковый индекс уже упакованы внутрь образа.

Изменения предложены в upstream-репозиторий (zeegin/v8std#33), а готовый multi-arch образ опубликован в Docker Hub: malikovpro/v8std-mcp:latest (~305 МБ, архитектуры linux/amd64 и linux/arm64).

Вариант 1: Запуск одной командой

bash

docker run -d --name v8std-mcp -p 127.0.0.1:8766:8765 malikovpro/v8std-mcp:latest

Вариант 2: Запуск через docker-compose (для рабочих станций и командного сервера)

Создаем docker-compose.yml:

yaml

services:
  v8std-mcp:
    container_name: v8std-mcp
    image: malikovpro/v8std-mcp:latest
    restart: always
    ports:
      - "${V8STD_MCP_BIND:-127.0.0.1}:8766:8765"
    cap_drop:
      - ALL
    security_opt:
      - no-new-privileges:true
    environment:
      V8STD_MCP_PORT: "8765"
      V8STD_MCP_ALLOWED_HOSTS: "${V8STD_MCP_ALLOWED_HOSTS:-}"

Рядом размещаем файл .env:

ini

# Разрешенные хосты для защиты от DNS-rebinding:
# Указывается точный хост или префикс:* (например: 192.168.57.18:*, devserver.local:*)
V8STD_MCP_ALLOWED_HOSTS=192.168.57.18:*, localhost:*

# Интерфейс публикации: 127.0.0.1 (только локально) или 0.0.0.0 (для всей локальной сети)
V8STD_MCP_BIND=127.0.0.1

Запуск:

bash

docker compose up -d v8std-mcp

Важные нюансы настройки сети

  1. Разведение портов. EDT-MCP по умолчанию слушает порт 8765, и v8std внутри контейнера тоже настроен на 8765. Чтобы избежать конфликта, публикуем v8std наружу на порт 8766 (маппинг 8766:8765).
  2. Защита DNS-rebinding. Библиотека MCP SDK проверяет заголовок Host. Если вы разворачиваете v8std на выделенном сервере для команды 1С, обязательно добавьте IP/доменное имя сервера в переменную V8STD_MCP_ALLOWED_HOSTS. Записи вида 192.168.57.* SDK отклоняет - требуется формат 192.168.57.18:* или имя хоста.

Подключение связки EDT-MCP + v8std-MCP к агентам

1. Claude Code

Добавление двух серверов в CLI:

bash

claude mcp add --transport http EDT-MCP http://localhost:8765/mcp
claude mcp add --transport http v8std http://localhost:8766/mcp

2. Cursor (.cursor/mcp.json)

json

{
  "mcpServers": {
    "EDT-MCP": {
      "url": "http://localhost:8765/mcp"
    },
    "v8std": {
      "url": "http://localhost:8766/mcp"
    }
  }
}

3. Cline / OpenCode / Antigravity

В интерфейсе настроек MCP-серверов добавьте два SSE/HTTP endpoint:

  • Name: EDT-MCP, URL: http://localhost:8765/mcp
  • Name: v8std, URL: http://localhost:8766/mcp

Инструкция для агента: замыкаем контур анализа и правок

Чтобы агент понимал, как комбинировать возможности обоих MCP-серверов, добавьте в конфигурацию правил вашего ассистента (.cursorrules, .cursor/rules/1c.mdc, CLAUDE.md или системный промпт) следующий блок:

markdown

# Правило работы с кодом 1С и ошибками EDT

При анализе и исправлении ошибок из EDT-MCP (инструменты get_project_errors, get_problem_summary):

1. Извлеки коды диагностик из отчета EDT (префиксы BSLLS:xxx, v8cs:xxx, acc:NNNN, символические id EDT).
2. Вызови инструмент v8std_explain_diagnostics пакетом со всеми найденными кодами, чтобы получить их описания и ссылки на связанные стандарты.
3. Перед модификацией кода обязательно прочитай требования стандарта через v8std_get_page и следуй каноническому стилю 1С, а не догадкам.
4. Если код диагностики не расшифровался (вернулся в unknown_codes) - выполни поиск по ключевой фразе ошибки через v8std_search.
5. При внесении правок через write_module_source сохраняй структуру областей модуля и оформляй экспортные методы по канонам ИТС.
6. После правок вызови revalidate_objects или get_project_errors для подтверждения устранения замечаний.

Благодаря этому правилу агент перестает изобретать собственные стандарты и работает как квалифицированный 1С-разработчик, сверяясь с ИТС.


Реальный пример сквозного прохода: рефакторинг модуля

Посмотрим на работу связки в реальной сессии. В качестве подопытного выступает общий модуль ОбработкаСообщенийВФоне тестовой конфигурации 1С.

Шаг 1. EDT-MCP: сбор ошибок статического анализа

Агент запрашивает список проблем через get_project_errors(projectName='Информационная_база_1', objects=['ОбработкаСообщенийВФоне']):

text

Найдено 32 ошибки в модуле ОбщийМодуль.ОбработкаСообщенийВФоне:

| Описание проблемы                                       | Код проверки (Check ID)            |
|---------------------------------------------------------|------------------------------------|
| Метод "ОжиданиеИОбработкаСообщений" необходимо          | module-structure-method-in-regions |
|   разместить в одной из стандартных областей...         |                                    |
| Имя переменной мз введено некорректно                   | bsl-variable-name-invalid          |
| Неиспользуемая локальная переменная 'Ответ'             | module-unused-local-variable       |
| [BSL LS] Общий модуль должен иметь хотя бы один         | CommonModuleMissingAPI             |
|   экспортный метод в области ПрограммныйИнтерфейс       |                                    |
| [BSL LS] Используется прямое указание пути к файлу      | UsingHardcodePath                  |
| [BSL LS] Длина строки 128 превышает лимит 120 символов  | LineLength                         |
| [BSL LS] Несколько подряд идущих пустых строк           | ConsecutiveEmptyLines              |

В отчете одновременно присутствуют и нативные проверки 1C:Code style V8 из EDT, и проверки BSL Language Server с префиксом [BSL LS].

Шаг 2. v8std-MCP: пакетная расшифровка кодов

Агент берет список кодов и вызывает v8std_explain_diagnostics:

json

{
  "codes": [
    "v8cs:module-structure-method-in-regions",
    "bslls:CommonModuleMissingAPI",
    "bslls:LineLength",
    "bslls:UsingHardcodePath",
    "bslls:UnusedLocalVariable",
    "v8cs:variable-name-invalid"
  ]
}

Результат ответа v8std-MCP:

text

Расшифровано:
- v8cs:module-structure-method-in-regions -> Связанный стандарт: std455 «Структура модуля»
- bslls:CommonModuleMissingAPI            -> Связанный стандарт: std455 «Структура модуля»
- bslls:LineLength                        -> Связанный стандарт: std456 «Тексты модулей»
- bslls:UsingHardcodePath                 -> Описание: запрет литералов путей к файлам в коде
- bslls:UnusedLocalVariable               -> Описание: удаление мертвых переменных

В unknown_codes:
- v8cs:variable-name-invalid

За один запрос агент получил привязку к стандартам std455 и std456 и конкретные указания по оформлению.

Шаг 3. Обработка неизвестного кода через v8std_search

Код v8cs:variable-name-invalid не сопоставился напрямую. Срабатывает пункт 4 системного правила: агент выполняет поиск по тексту ошибки:

v8std_search(query='Имя переменной введено некорректно строчные буквы')

Поисковый индекс v8std выдает:

  • Диагностика: acc:248 («Имена переменных не должны начинаться с подчеркивания или строчных букв»)
  • Первоисточник: стандарт std454 «Правила образования имен переменных»

Шаг 4. Чтение стандарта и автоматический рефакторинг

Агент запрашивает полный текст v8std_get_page(id_or_alias_or_url='std455'), видит точный синтаксис канонических областей 1С и вносит исправления в модуль через write_module_source:

  1. Структура модуля (std455): Процедуры и функции распределены по областям #Область ПрограммныйИнтерфейс и #Область СлужебныеПроцедурыИФункции.
  2. Именование (std454): Переменная мз переименована в МассивЗадач, переменная no_ack заменена на CamelCase-идентификатор БезПодтверждения.
  3. Чистка кода: Удалена неиспользуемая переменная Ответ, убраны лишние пустые строки.
  4. Безопасность: Хардкод пути C:\temp\queue.json вынесен в параметр процедуры.

После перезапуска валидации в EDT количество ошибок в модуле становится равным 0.


Практические сценарии внедрения для команд 1С

  1. Автоматизация Code Review на раннем этапе. Агент в связке с EDT-MCP и v8std может автоматически проходить по измененным в Git ветках модулям, выдавать замечания с точными ссылками на пункты стандартов ИТС и формировать pull request с автоисправлениями.
  2. Обучение начинающих разработчиков. При разработке в паре с ИИ-ассистентом программист получает не просто исправленный код, но и пояснение, какому именно пункту стандарта 1С не соответствовал изначальный вариант.
  3. Миграция легаси-кода. Быстрое приведение старых конфигураций 1С (написанных без соблюдения областей, без стандартов именования и с синхронными вызовами) к современным требованиям стандартов платформы 8.3.

Резюме и ссылки

Связка EDT-MCP и v8std-MCP превращает ИИ-ассистента из генератора случайного кода в строгого 1С-линтера и архитектурного помощника, действующего строго в рамках стандартов ИТС. А готовый Docker-образ позволяет поднять этот контур за пару минут без сложной настройки окружения.

Полезные ссылки:

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

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

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

См. также

Нейросети Системный администратор Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)

Подключите ИИ к 1С и решайте рабочие задачи обычными словами. От работы с данными до доработки конфигурации через расширения, всё в привычном чате с ИИ-помощником. Теперь с поддержкой DeepSeek Harness, Kimi Code и Kimi Work, доступных в России без VPN.

15990 руб.

30.07.2026    19897    42    4    

40

SALE! %

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

Корректируйте банковские документы быстро и легко! Создайте правило обработки — и оно автоматически применится при загрузке выписки (отбор по любому реквизиту или регулярному выражению). Решение заполняет расшифровку платежа, комиссию эквайринга, подбирает ведомости на выплату зарплаты, помечает дубли из банка на удаление и многое другое. Доплачивать за алгоритмы не нужно — они включены в решение. Обработка работает при загрузке из файлов клиент-банка и через DirectBank. Новое — искусственный интеллект: модель приводит нестандартные назначения платежа к виду, понятному алгоритмам, а ИИ-ассистент прямо в 1С консультирует по решению и разбирает код правил и алгоритмов. Поддерживаются локальные и облачные OpenAI-совместимые модели — данные могут не покидать ваш контур.

17500 руб.

20.12.2024    21772    107    32    

90

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    77437    147    41    

154

SALE! 30%

Нейросети 1С 8.3 1С:Бухгалтерия 2.0 1С:Бухгалтерия 1.6 1С:Бухгалтерия 3.0 1С:Управление холдингом 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 10 1С:Управление торговлей 11 1С:Документооборот Россия Платные (руб)

Расширение добавляет в 1С чат с ИИ-агентом. Пользователь пишет вопрос обычными словами: «какие УПД не подписаны?», «какой НДС к уплате за квартал?», «что висит на согласовании дольше недели?», а агент сам строит запросы к базе с правами этого пользователя и отвечает цифрами, таблицей, диаграммой или файлом Excel. Плитки «Аналитик», «Бухгалтер» и «Руководитель» дают сводку по базе одной кнопкой. Агент разбирает ошибки по скриншоту, сверяет прайсы поставщиков и проверяет коды маркировки. С версии 1.0.21 спрашивать можно и с телефона: QR-код в окне агента, без установки приложения. Работает в УТ 11, КА 2, ERP 2, БП 3.0, УНФ 3.0, Документооборот 3.0 и Альфа-Авто 6, ставится одним расширением.

18300 руб.

05.10.2026    4054    15    9    

15

Распознавание документов и образов Нейросети 1С:Предприятие 8 1С 8.3 1С 8.5 1C:Бухгалтерия 1С:Зарплата и Управление Персоналом 3.x Беларусь Россия Казахстан Армения Платные (руб)

ИИ-сканер документов с REST API для интеграции с 1С и корпоративными системами. Извлекайте данные из счетов, паспортов, дипломов, патентов и трудовых книжек за секунды. Точность человека - скорость машины. Приложение поддерживает восемь типов документов, четырех провайдеров ИИ (имеется возможность использования локальных ИИ), локальный REST API и экспорт в JSON. Важно! модель должна поддерживать функцию Vision (распознавание файлов и картинок). Запускайте используя локальные ИИ, без подписок и ограничений

6100 руб.

24.08.2026    1523    3    0    

2

Инструментарий разработчика Нейросети Системный администратор Разработчик Руководитель проекта 1С 8.3 Платные (руб)

Обработка заменяет ФИО, организации, ИНН, ИИН, БИН, ОГРН, КПП, БИК, счета и IBAN, паспорта, СНИЛС, адреса, телефоны, почту и суммы на правдоподобные выдуманные перед отправкой данных в ChatGPT, Claude или YandexGPT, а потом расшифровывает ответ модели обратно, подставляя настоящие имена и настоящие числа. Возвращаются и те итоги, которые модель посчитала сама: суммы масштабируются одним коэффициентом, поэтому пропорции и доли переживают обезличивание. Словарь замен хранится в самой базе и подхватывается автоматически, даже если обработку закрывали. Реквизиты России и Казахстана, любая конфигурация от 8.3.24, без единой зависимости.

14640 руб.

07.08.2026    2261    3    0    

3

Инструментарий разработчика Нейросети Разработчик 1С 8.3 Бесплатно (free)

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

29.10.2026    5149    nt_app    12    

26

Нейросети Разработчик 1С:Предприятие 8 Россия Бесплатно (free)

За 2026 год MCP-инструменты для 1С прошли путь от «покажи метаданные» до «напиши код, загрузи в базу и проверь на живых данных». Собрали значимые публикации Инфостарта за год, описывающие MCP-серверы для подключения баз 1С к ИИ-агентам, и сравнили их по трём осям: зрелость, способ технической реализации подключения и требует ли инструмент изменения конфигурации базы 1С.

28.10.2026    9426    pfihr    12    

27
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. infosoft-v 1127 02.09.26 21:16 Сейчас в теме
Ссылки в статье не работают. Ошибка - страница не найдена
2. malikov_pro 1409 03.09.26 08:00 Сейчас в теме
(1) Благодарю, артефакт копирования из md, в дальнейшем учту. Исправил.
Для отправки сообщения требуется регистрация/авторизация