Все статьи

15 октября 2026 г.

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

Почему XML-выгрузка конфигурации 1С сжигает бюджет на токены

Типовая конфигурация (ERP 2.5, УТ 11, ЗУП 3.1, КА 2) при выгрузке в файлы Configuration.xml + *.bsl даёт 8–15 ГБ текста: сотни тысяч строк кода, десятки тысяч модулей объектов, менеджеров, форм и общих модулей. Если передать такую выгрузку ИИ-агенту (Claude Code, Cursor, Windsurf, Roo Code) в репозиторий как обычный проект, то даже простая задача «почему неверно рассчитывается себестоимость при проведении РеализацииТоваровУслуг» заставляет агента:

  • индексировать тысячи модулей;
  • по несколько раз перечитывать ОбщегоМодуляПроведение, ПартионныйУчет, РасчетСебестоимостиТоваров;
  • тянуть целые формы и менеджеры только ради одной ссылки.

Каждый вызов grep и read_file возвращает десятки тысяч токенов «на всякий случай». При контексте 200 тыс. токенов у Claude агент уходит в цикл сжатия (compaction), теряет ранее прочитанный код и начинает галлюцинировать: придумывает несуществующие методы, путает файлы МодульОбъекта.bsl разных документов, ссылается на реквизиты, которых нет.

Простой расчёт. Средний модуль объекта 1С — 1500 строк ≈ 20 000 токенов. Типовой общий модуль партионного учёта — 6000 строк ≈ 80 000 токенов. Задача по себестоимости у пользователя в XML-режиме легко съедает 400–800 тыс. токенов на итерацию. При $3/$15 за 1M input/output у Claude Sonnet — это $2–$8 за один-единственный запрос. Умножьте на 30 итераций в день — получите полный месячный бюджет команды, улетевший в пустоту.

Как устроен граф связей Grafon

Графон — локальный инструмент и MCP-сервер. Он один раз парсит конфигурацию 1С в файловом виде (или через выгрузку) и строит граф зависимостей:

  • узлы — объекты метаданных (Документ.РеализацияТоваровУслуг), реквизиты, формы, элементы формы, процедуры и функции BSL, подписки на события, тексты запросов, движения регистров;
  • рёбра — вызовы (ВызватьПроцедуру), переопределения (&Вместо, &После), обработчики (ПодпискаНаСобытие), использование метаданных внутри запросов, чтение/запись регистров.

Все данные лежат локально, никакой исходный код конфигурации наружу не уходит. ИИ-агент общается с Графоном по протоколу MCP — он вызывает «инструменты» вместо того, чтобы читать файлы целиком.

Ключевые MCP-инструменты Графона:

  • find_symbol — найти символ по имени;
  • get_context_slice — вернуть минимальный срез кода вокруг символа плюс его сигнатуры и прямые зависимости;
  • get_callers / get_callees — кто вызывает и кого вызывает;
  • get_event_subscriptions — все подписки на событие;
  • get_module_skeleton — только сигнатуры процедур без тел;
  • traverse_graph — обойти граф на N уровней от узла.

Практический сценарий: подписки на проведение документа

Задача: понять, какие механизмы срабатывают при проведении РеализацияТоваровУслуг.

Без Графона агент читает файл Документы/РеализацияТоваровУслуг/МодульОбъекта.bsl, затем ищет &После, &Вместо, подписки в Configuration.xml, тянет все подозрительные модули и в итоге читает 300–600 тыс. токенов.

С Графоном агент делает один MCP-вызов:

{
  "method": "tools/call",
  "params": {
    "name": "get_event_subscriptions",
    "arguments": {
      "event": "ОбработкаПроведения",
      "metadata": "Документ.РеализацияТоваровУслуг",
      "depth": 2,
      "include_signatures": true
    }
  }
}

Ответ — компактный граф:

{
  "subscriptions": [
    {
      "module": "ОбщийМодуль.ПартионныйУчет",
      "procedure": "ОбработкаПроведения",
      "condition": "Документ.РеализацияТоваровУслуг, Документ.ПеремещениеТоваров",
      "calls": ["ПолучитьДанныеПартий", "СписатьСПартии"],
      "lines": "12040-12180"
    }
  ]
}

Далее агент запрашивает только тела нужных процедур:

// ОбщийМодуль.ПартионныйУчет, строки 12040-12180
Процедура ОбработкаПроведения(Источник, Отказ) Экспорт
    
    ДанныеПартий = ПолучитьДанныеПартий(Источник);
    
    Если ДанныеПартий.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;
    
    Для Каждого Партия Из ДанныеПартий Цикл
        Если СтрНачинаетсяС(Партия.ВидДвижения, "Расход") И Партия.Количество > ДоступноеКоличество(Партия) Тогда
            Отказ = Истина;
            Сообщить("Недостаточно товара " + Партия.Номенклатура);
...

Итого 3–7 тыс. токенов вместо 400 тыс. — это и есть источник экономии до 10x.

Таблица сравнения: токены и время

| Сценарий | XML-выгрузка | Grafon (MCP) | Экономия |
|---|---|---|---|
| Найти подписки на проведение документа | 320 000 токенов | 4 200 токенов | 76x |
| Изменить расчёт себестоимости в партионке | 780 000 токенов | 62 000 токенов | 12x |
| Добавить реквизит + провести по формам | 240 000 токенов | 28 000 токенов | 8.5x |
| Аудит всех вызовов метода ПроверитьЗаполнение | 510 000 токенов | 19 000 токенов | 26x |
| Добавить новую подписку на событие | 180 000 токенов | 6 500 токенов | 27x |
| Средняя итерация правки документа | ~400 000 | ~35 000 | ~11x |

По времени: XML-итерация 6–14 минут из-за чтения и сжатия контекста, Grafon-итерация 40–90 секунд. Это ускоряет рабочий день разработчика в 5–8 раз.

Деньги: как это выглядит в чеке Claude Sonnet 4.5

Возьмём команду из 5 разработчиков, 30 итераций в день, средний input + output по 1.5x от input.

  • Без Графона: 30 × 400k × 1.5 = 18M токенов/день на человека ≈ $54/день, ≈ $1200/месяц на команду.
  • С Графоном: 30 × 35k × 1.5 = 1.6M токенов/день ≈ $4.8/день, ≈ $108/месяц.

Экономия — больше $1000 в месяц на пятерых. И это без учёта времени: те самые 6–10 минут ожидания на итерации × 30 итераций × 5 человек = 15–25 часов в день команды, которые сгорают в ожидании контекста.

Как подключить Графон к ИИ-ассистенту

  1. Установите Графон локально (инструкции на https://grafonbase.ru).
  2. Укажите путь к выгрузке конфигурации 1С — Графон сам построит граф и будет обновлять его по изменениям.
  3. Подключите MCP-сервер в вашем агенте:
// ~/.claude/mcp.json для Claude Code
{
  "mcpServers": {
    "grafon": {
      "command": "grafon",
      "args": ["serve", "--project", "/opt/1c/erp-2.5"]
    }
  }
}
  1. В промпте явно скажите агенту: «Используй инструменты Grafon через MCP, не читай BSL-файлы напрямую». После этого агент сам начнёт ходить в граф.

Пример MCP-ответа на get_context_slice:

{
  "symbol": "ОбщийМодуль.ПартионныйУчет.ПолучитьДанныеПартий",
  "signature": "Функция ПолучитьДанныеПартий(Документ) Экспорт",
  "file": "CommonModules/ПартионныйУчет/Ext/Module.bsl",
  "lines": "11850-11930",
  "calls": ["ЗапросПартий", "РазложитьПоРегистрам"],
  "callers": ["ОбработкаПроведения", "ОбработкаУдаленияПроведения"],
  "queries": ["РегистрНакопления.ТоварыНаСкладах"]
}

Агент получает точный срез, строит план правки и делает точечный патч — без галлюцинаций по несуществующим методам.

Итог

XML-выгрузка плохо сочетается с ИИ-ассистентами: контекст переполняется, стоимость токенов растёт в разы, а качество ответов падает. Граф связей Grafon работает как локальный MCP-слой семантической навигации по конфигурации 1С: агент запрашивает только нужные ветви графа и получает сигнатуры и тела процедур в объёме 3–7 тыс. токенов вместо сотен тысяч. На практике это даёт сокращение расходов на токены до 10x, ускорение итераций в 5–8 раз и устранение галлюцинаций при работе с ERP, УТ, ЗУП и КА.

Если ваша команда уже платит за Claude Code, Cursor или Windsurf и работает с крупной конфигурацией 1С — переход на граф связей Grafon окупается в первую же неделю.