Все статьи

10 сентября 2026 г.

Анализ графа зависимостей модулей 1С для нейросетей: как Grafon ускоряет ИИ-агентов в 10 раз

Почему нейросети «тонут» в модулях 1С

Типовая конфигурация 1С:ERP, УТ, ЗУП или КА — это гигабайты XML-метаданных и сотни тысяч строк BSL. Один общий модуль может занимать 30–50 тыс. строк, модуль формы — ещё 20–40 тыс., а цепочка вызовов уходит в десятки объектов. Если ИИ-агент получает задачу «исправь проведение реализации», он часто читает весь модуль объекта, формы, общие модули и подписки. Контекстное окно переполняется, стоимость токенов растёт в 10 раз, агент начинает путать методы и галлюцинировать.

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

Что такое граф зависимостей модулей 1С

Граф зависимостей — это формализованное представление конфигурации: узлы и рёбра. Grafon строит его локально по XML-выгрузке и BSL-коду.

| Тип узла | Пример | Тип рёбер |
|---|---|---|
| Объект метаданных | Документ.РеализацияТоваровУслуг | uses, extends |
| Модуль | ОбщийМодуль.УчетНДС | contains |
| Процедура/функция | СформироватьДвижения | calls, called_by |
| Форма | ФормаДокумента.РеализацияТоваровУслуг | handler, uses |
| Подписка | ПередЗаписью.РеализацияТоваровУслуг | subscribes |
| Запрос | Запрос.НДС_Движения | query_source |

Grafon не просто индексирует текст, а разбирает BSL в AST, извлекает вызовы, связи «объект — модуль — процедура — подписка — запрос» и хранит граф в локальном индексе. Это и есть основа для MCP-сервера.

Архитектура Grafon и MCP

Схема работы:

XML-выгрузка 1С → парсер метаданных → BSL AST → граф зависимостей → MCP-сервер → Claude Code / Cursor / Windsurf / Roo Code

Ключевые MCP-инструменты Grafon:

| Инструмент | Назначение |
|---|---|
| grafon.search_objects | Поиск объектов и символов по имени/синониму |
| grafon.get_context | Точный срез файлов и сигнатур для задачи |
| grafon.get_dependencies | Прямые зависимости объекта |
| grafon.get_call_graph | Кто вызывает процедуру и кого вызывает она |
| grafon.get_impact | Влияние изменения на конфигурацию |
| grafon.get_signatures | Только сигнатуры без тел модулей |

Пример MCP-запроса:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "grafon.get_context",
    "arguments": {
      "object": "Документ.РеализацияТоваровУслуг",
      "depth": 2,
      "include": ["modules", "subscriptions", "queries"]
    }
  }
}

В ответ агент получает не 300 КБ XML, а список релевантных файлов, сигнатур и рёбер. Дальше он читает только то, что нужно.

BSL-пример: от задачи к контексту

Допустим, в модуле объекта есть проведение:

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    ЗаписатьДвиженияПоРегистрам(Отказ);
    Если НЕ ПроверитьОстатки() Тогда
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

Grafon находит, что ЗаписатьДвиженияПоРегистрам определена в ОбщийМодуль.УчетНДС, ПроверитьОстатки — в ОбщийМодуль.ПроверкаОстатков, а на ПередЗаписью документа подписана процедура ПередЗаписьюРеализации. Запрос к графу вызовов:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "grafon.get_call_graph",
    "arguments": {
      "symbol": "ОбщийМодуль.УчетНДС.ЗаписатьДвиженияПоРегистрам",
      "direction": "callers",
      "depth": 3
    }
  }
}

Агент получает точный список: Документ.РеализацияТоваровУслуг.МодульОбъекта.ОбработкаПроведения, Подписка.ПередЗаписью.РеализацияТоваровУслуг, ещё 2–3 места. Без Grafon он бы открыл весь УчетНДС, весь модуль объекта и форму.

Сравнение: без Графона и с Графоном

| Сценарий | Без Графона | С Графоном | Экономия |
|---|---|---|---|
| Найти вызовы процедуры | grep + 5–10 модулей, ~120k токенов | get_call_graph, ~8k токенов | ~15x |
| Добавить реквизит и движения | ~250k токенов, 2–3 часа | ~15k токенов, 15–20 минут | ~10x |
| Рефакторинг общего модуля | ~1M токенов, день | ~60k токенов, 2 часа | ~10–15x |
| Code review изменений | ~400k токенов, 1–2 часа | ~25k токенов, 15 минут | ~16x |
| Онбординг в чужую конфигурацию | неделя | 1–2 дня | 3–5x |

Главное — не только токены. Агент перестаёт «додумывать» несуществующие методы, потому что видит реальные сигнатуры и связи.

Практические сценарии

1. Баг в проведении документа

Задача в Claude Code: «Почему не формируются движения по НДС в реализации?» Агент вызывает grafon.search_objects по НДС, затем grafon.get_context для документа с глубиной 2. Получает Документ.РеализацияТоваровУслуг, ОбщийМодуль.УчетНДС, РегистрНакопления.НДС. Дальше анализирует только эти файлы.

2. Добавление подписки на событие

Перед созданием новой подписки агент запрашивает grafon.get_dependencies для объекта и видит существующие ПередЗаписью, ПриЗаписи, ПередПроведением. Это исключает дублирование логики.

3. Безопасный рефакторинг

Перед переименованием процедуры агент вызывает grafon.get_impact. В ответ приходят все вызывающие модули, формы и подписки. Если в списке есть динамический вызов через Выполнить(), Grafon помечает риск.

Настройка в Claude Code, Cursor и Windsurf

Пример конфигурации MCP:

{
  "mcpServers": {
    "grafon": {
      "command": "grafon-mcp",
      "args": ["--config", "/path/to/1c-dump", "--mode", "stdio"]
    }
  }
}

Для Claude Code можно добавить сервер командой:

claude mcp add grafon -- grafon-mcp --config /path/to/1c-dump --mode stdio

Графон работает локально: исходники и граф не уходят в облако. Это важно для B2B-разработки и контуров с NDA.

Ограничения и best practices

  • Индексируйте актуальную XML-выгрузку после изменений.
  • Для задач используйте глубину 2–3, а не «всю конфигурацию».
  • Динамические вызовы через Выполнить() могут быть неполными — проверяйте вручную.
  • Граф не заменяет тесты и отладку, но убирает слепой поиск.
  • Храните MCP-конфиг в репозитории команды, чтобы поведение агентов было одинаковым.

Итог

Анализ графа зависимостей модулей 1С для нейросетей — это способ дать ИИ-агенту не весь проект, а точный контекст. Grafon строит локальный граф метаданных, BSL-процедур, подписок и запросов, отдаёт его через MCP в Claude Code, Cursor, Windsurf или Roo Code. В результате — до 10 раз меньше токенов, быстрее ответы и меньше галлюцинаций. Для команд, которые внедряют ИИ в разработку 1С, это становится базовой инфраструктурой.