12 сентября 2026 г.
Как подружить Windsurf с 1С:ERP через MCP-сервер Графон
Почему Windsurf «захлёбывается» на 1С:ERP
Windsurf Cascade — мощный агентный редактор, но типовая 1С:ERP — это не один проект на 20 файлов. Это гигабайты XML-метаданных, сотни тысяч строк BSL, формы, модули объектов, менеджеров, общие модули, подписки на события и запросы. Если открыть такую конфигурацию как обычный репозиторий, ИИ начинает читать всё подряд: модуль документа, менеджер, формы, общие модули, связанные справочники. Контекстное окно переполняется, стоимость токенов растёт в 5–10 раз, а агент начинает путать методы и придумывать несуществующие процедуры.
Проблема не в Windsurf. Проблема в способе подачи конфигурации. Ему нужен не «весь ERP», а точный срез: конкретная процедура, её вызовы, подписки, источники данных и зависимости. Именно эту задачу решает локальный MCP-сервер Графон.
Архитектура связки: Windsurf + MCP + Графон
Графон индексирует исходники 1С:ERP и строит локальный граф зависимостей. В узлах — объекты метаданных, модули, процедуры, функции, формы, подписки, запросы и роли. В рёбрах — вызовы, использование, подписки, связи метаданных и обращения к запросам. Windsurf через протокол MCP запрашивает только нужный фрагмент графа.
1С:ERP (XML/EDT) → Индексатор Графон → Граф зависимостей
↓
Windsurf Cascade ← MCP-сервер Графон ← Локальный кэш
Ключевые MCP-инструменты, которые видит Windsurf:
grafon_find_object— найти объект метаданных по имени.grafon_get_slice— получить срез модуля по процедуре и глубине вызовов.grafon_call_graph— построить граф вызовов вверх и вниз.grafon_find_subscriptions— найти подписки на событие.grafon_query_usage— найти использование таблиц и полей в запросах.grafon_impact_analysis— оценить влияние изменения.
Настройка Windsurf и Графона за 15 минут
- Скачайте и установите Графон с https://grafonbase.ru.
- Проиндексируйте исходники ERP. Лучше указывать выгрузку в XML или проект EDT, а не
.cf.
grafon index \
--src ./src/erp \
--project erp \
--exclude ".git" \
--exclude "*.bin" \
--exclude "*.png"
- Добавьте MCP-сервер в настройки Windsurf. Пример конфигурации:
{
"mcpServers": {
"grafon": {
"command": "grafon",
"args": ["mcp", "--project", "erp", "--transport", "stdio"]
}
}
}
- Перезапустите Windsurf и проверьте, что в Cascade доступны инструменты
grafon_*. - После каждого merge или обновления конфигурации запускайте переиндексацию:
grafon index --project erp --update
Пример: доработка проведения документа
Задача: добавить списание бонусов при проведении Документ.РеализацияТоваровУслуг. Без Графона Windsurf начнёт читать объектный модуль, модуль менеджера, формы, общие модули. С Графоном агент делает MCP-запрос:
{
"jsonrpc": "2.0",
"id": 42,
"method": "tools/call",
"params": {
"name": "grafon_get_slice",
"arguments": {
"project": "erp",
"object": "Документ.РеализацияТоваровУслуг",
"entry": "ОбработкаПроведения",
"depth": 2
}
}
}
В ответ приходят точные сигнатуры, вызовы и фрагменты BSL. Windsurf сразу видит, куда встроить код, и не перечитывает ERP целиком.
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// Стандартная проверка заполнения
ПроверитьЗаполнение();
// Новый блок: списание бонусов
Если НужноСписатьБонусы() Тогда
СписатьБонусыПокупателя(Отказ);
КонецЕсли;
// Типовой алгоритм проведения
Движения.Товары.Записывать = Истина;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения.Товары.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
Движение.Количество = ТекСтрокаТовары.Количество;
Движение.Сумма = ТекСтрокаТовары.Сумма;
КонецЦикла;
КонецПроцедуры
Функция НужноСписатьБонусы()
Возврат Константы.ИспользоватьБонусныеПрограммы.Получить()
И Ссылка.Партнер <> Неопределено;
КонецФункции
Если изменить общий модуль БонусныеПрограммы, Графон покажет всех вызывающих и подписки. Windsurf не придётся угадывать.
// Пример запроса, который Графон связывает с таблицами и объектами
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Количество,
| Товары.Сумма
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК Товары
|ГДЕ
| Товары.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Поиск подписок и анализ влияния
Частая задача в ERP: понять, что сработает при записи документа. Запрос к Графону:
{
"jsonrpc": "2.0",
"id": 43,
"method": "tools/call",
"params": {
"name": "grafon_find_subscriptions",
"arguments": {
"project": "erp",
"event": "ПриЗаписи",
"source": "Документ.РеализацияТоваровУслуг"
}
}
}
Результат Windsurf получает в структурированном виде:
| Подписка | Обработчик | Модуль | Строка |
|---|---|---|---|
| Бонусы_ПриЗаписи | СписатьБонусы | ОбщийМодуль.БонусныеПрограммы | 215 |
| Взаиморасчёты_ПриЗаписи | ПересчитатьДолг | ОбщийМодуль.Взаиморасчёты | 88 |
| Права_ПриЗаписи | ПроверитьДоступ | ОбщийМодуль.ПраваПользователей | 341 |
Такой срез экономит десятки тысяч токенов и исключает ложные выводы.
Сценарии для команды разработки
- Онбординг: новый разработчик спрашивает Windsurf, как проходит проведение реализации, и получает ответ на основе графа, а не догадок.
- Code review: агент проверяет, что изменение не ломает вызовы из других подсистем.
- Рефакторинг: перенос логики из модуля объекта в общий модуль с поиском всех вызовов.
- Оптимизация запросов: Графон показывает, где используются таблицы и поля.
- Оценка изменений:
grafon_impact_analysisстроит цепочку «кто вызывает — что сломается».
Без Графона vs с Графоном
| Параметр | Windsurf + файлы 1С:ERP | Windsurf + MCP Графон |
|---|---|---|
| Контекст на задачу | 120 000–400 000 токенов | 12 000–35 000 токенов |
| Время ответа | 3–8 минут | 30–90 секунд |
| Стоимость запроса | $0,6–2,5 | $0,05–0,25 |
| Галлюцинации методов | высокий риск | низкий |
| Точность связей | ручной поиск | граф до 3–5 уровней |
| Обновление после merge | не автоматизировано | переиндексация проекта |
Best practices
- Индексируйте исходники XML или EDT, а не
.cf. - Исключайте
.git,bin, картинки и временные каталоги. - Запускайте
grafon index --updateпосле каждого merge. - Для анализа берите
depth: 2–3, чтобы не перегружать контекст. - Проверяйте BSL в Конфигураторе или EDT: ИИ не заменяет синтаксический контроль.
- Не давайте агенту право на commit без review.
- Используйте Графон локально: данные не уходят во внешние сервисы.
Вывод
Windsurf и 1С:ERP могут работать вместе, если между ними поставить правильный слой доступа к знаниям. Графон превращает гигабайты XML и BSL в локальный граф зависимостей. Windsurf через MCP получает только точные процедуры, вызовы, подписки и запросы. Это снижает расход токенов до 10 раз, ускоряет задачи и убирает галлюцинации. Начните с индексации одной подсистемы ERP, подключите MCP-сервер и сравните результат на первой же доработке.