Агентский бенчмарк для оценки навыков программирования на 1С:Предприятие

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

120 Агентских задач
2 Типа задач
7 Моделей в зачёте

О проекте

1C Agentic Bench — это агентская ветка нашего бенчмарка для оценки способностей больших языковых моделей решать задачи разработки на платформе 1С:Предприятие.

В предыдущей версии бенчмарка модель получала на вход полное описание задачи вместе с готовыми метаданными конфигурации (имена справочников, регистров, реквизитов и измерений) и должна была одним ходом сгенерировать корректный код. Это проверяло знание языка 1С и умение писать запросы, но не отражало того, как ИИ работает с реальной незнакомой конфигурацией.

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

В бенчмарке два типа задач:

  • Обычные задачи. На входе — текстовое описание задачи. На выходе — готовая внешняя обработка (.epf) с реализованной функцией.
  • Тикеты. На входе — уже готовая обработка с ошибкой и описание бага глазами пользователя. На выходе — исправленная функция.

Среда выполнения задач: Демонстрационная конфигурация «Управляемое приложение».

🛠️ 1c-mcp-toolkit

Агент сам исследует метаданные и данные базы и запускает код через MCP

🧩 Без подсказок

Описания метаданных на входе нет — конфигурацию нужно открыть самому

🔁 Обратная связь

Код можно прогнать в 1С и увидеть ошибки до сдачи решения

Примеры задач

Задача → Обработка

Обычная задача

Вход (только текст, без метаданных):

Создай функцию ЗаполнитьТабличнуюЧастьОстатками(ДокументОбъект), которая заполняет табличную часть документа «Заказ» «Товары» остатками из товарных запасов для склада и даты, заданных в документе. Отбирать только товары видом товара = Товар.

🛠️ Что делает агент через 1c-mcp-toolkit:

  • находит регистр накопления остатков и его измерения (Склад, Товар);
  • уточняет состав ТЧ «Товары» документа «Заказ»;
  • выясняет, что у товара есть реквизит Вид и перечисление ВидыТоваров;
  • прогоняет запрос в базе, чтобы проверить результат.

Решение (фрагмент сданной обработки):

Функция ЗаполнитьТабличнуюЧастьОстатками(ДокументОбъект)
    Запрос = Новый Запрос();
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Т.Товар КАК Товар,
    |    Т.КоличествоОстаток КАК Количество
    |ИЗ
    |    РегистрНакопления.ТоварныеЗапасы.Остатки(&Дата, Склад = &Склад) КАК Т
    |ГДЕ
    |    Т.Товар.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Товар)";

    Запрос.УстановитьПараметр("Дата",  ДокументОбъект.Дата);
    Запрос.УстановитьПараметр("Склад", ДокументОбъект.Склад);

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        СтрокаТЧ = ДокументОбъект.Товары.Добавить();
        ЗаполнитьЗначенияСвойств(СтрокаТЧ, Выборка);
    КонецЦикла;
КонецФункции

Обработка + баг → Фикс

Тикет

Вход — жалоба пользователя:

«Заполняю заказ остатками по складу „Большой", но в табличную часть попадает заметно больше товара, чем реально лежит на этом складе. Похоже, количество считается по всем складам сразу, а не только по выбранному.»

Плюс готовая обработка с ошибкой:

// ...
    |    РегистрНакопления.ТоварныеЗапасы.Остатки(&Дата, ) КАК Т
    |ГДЕ
    |    Т.Товар.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Товар)";

    Запрос.УстановитьПараметр("Дата", ДокументОбъект.Дата);
    // отбор по складу потерян

🛠️ Что делает агент через 1c-mcp-toolkit:

  • воспроизводит запрос на данных базы и видит завышенные остатки;
  • проверяет, что у регистра есть измерение Склад;
  • локализует баг: в Остатки(...) потерян отбор по складу.

Фикс:

    |    РегистрНакопления.ТоварныеЗапасы.Остатки(&Дата, Склад = &Склад) КАК Т
    |ГДЕ
    |    Т.Товар.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Товар)";

    Запрос.УстановитьПараметр("Дата",  ДокументОбъект.Дата);
    Запрос.УстановитьПараметр("Склад", ДокументОбъект.Склад);

Результаты

В агентском режиме у моделей есть обратная связь через MCP: код можно прогнать в 1С и увидеть ошибки до сдачи решения. Поэтому почти все модели хорошо справляются с синтаксисом — компиляция высокая практически у всех. Реальную разницу показывает корректность (Success rate), поэтому мы вынесли её первой колонкой.

Ранг Модель Корректность Компиляция
1 Claude Opus 4.8 81.03% 96.50%
2 Deepseek v4 Pro 75.08% 94.84%
3 GLM-5.2 68.97% 82.76%
4 Deepseek v4 flash 63.79% 87.93%
5 Qwen 3.6 35B 62.07% 87.93%
6 Gemini 3.5 Flash Lite 60.34% 96.50%
7 GLM4.5-air 31.03% 91.38%

Метрики оценки

Корректность (Success rate)

Результат выполнения сданного кода проходит процедуру валидации (тест). Считается как процент успешных кейсов к общему количеству.

Компиляция (Compile rate)

Сданный код компилируется и выполняется без ошибок. В агентском режиме высокий почти у всех — за счёт обратной связи через MCP.