Агентский бенчмарк для оценки навыков программирования на 1С:Предприятие
Оценка ИИ-агентов, которые сами исследуют конфигурацию через MCP, пишут и запускают код на платформе 1С:Предприятие — без готового описания метаданных на входе
О проекте
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.