Claude Code и Cursor на задаче 1С: протокол сравнения и разбор ошибок агентов
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Для 1С-разработчика, который выбирает ИИ-инструмент: протокол сравнения Claude Code и Cursor на одной задаче, критерии прогона, проверка имён метаданных и виртуальных таблиц Остатки и Обороты, разбор типичных ошибок агентов в BSL. Прогона на стенде не было, числа в примерах условные.
- Задание с тремя ловушками - остатки и движения в разных таблицах, группировка по трём измерениям, условие без движений
- Семь критериев прогона - время, итерации, имена метаданных, методы BSL, виртуальные таблицы, вопросы, готовность к вставке
- Параметры виртуальных таблиц - у Остатки два параметра, у Обороты четыре, ресурсы получают суффиксы
- Границы метода - один прогон ничего не доказывает, инструмент и модель сравниваются по отдельности
- Ошибки в самом тесте - разные условия, оценка на глаз, проверка только синтаксисом
Инструмент выбирается по протоколу: одинаковое задание на копии базы, критерии записаны до старта, имена метаданных сверены с выгрузкой. Чем меньше выдуманных имён, тем меньше правок, а число итераций важнее скорости первого ответа.
Для кого: 1С-разработчики, которые выбирают ИИ-инструмент для работы с кодом и хотят сравнивать инструменты на своих задачах.
Выбор между терминальным агентом и редактором с ИИ редко решается по названию. Решает протокол проверки: одинаковое задание, одинаковая база, одинаковое время и список критериев, который фиксируется письменно. Ниже - такой протокол и разбор ошибок, которые всплывают в сгенерированном коде 1С.
🧱 Задача для сравнения
Задача должна быть короткой по формулировке и длинной по скрытым условиям. Запрос остатков подходит: в нём три ловушки, и на каждой видно, читает ли инструмент контекст конфигурации или подставляет имена по догадке.
Условный пример задания для прогона:
Напиши код на BSL для отчёта по остаткам товаров на складах. 1. Остатки по всем складам организации на текущую дату. 2. Группировка по номенклатуре, характеристике и серии. 3. В результат попадают только позиции, по которым не было движений за последние 30 дней. 4. Результат запроса вывести в таблицу значений с колонками: Номенклатура, Характеристика, Серия, Склад, Количество, Сумма. 5. Код должен вставляться в отчёт или обработку без доработок.
Три ловушки в этом задании:
- остатки и движения лежат в разных виртуальных таблицах, и агент должен выбрать их осознанно;
- группировка идёт по трём измерениям, а условие «нет движений» нельзя наложить на таблицу остатков;
- итоговый код должен собираться на платформе.
🧪 Что фиксировать в прогоне
Критерии записываются до старта, иначе сравнение превращается в спор о впечатлениях.
| Критерий | Как измеряется | Признак провала |
|---|---|---|
| Время до первого варианта | по секундомеру от отправки задания | вариант не проходит проверку синтаксиса |
| Число итераций до рабочего кода | сколько раз пришлось уточнять задание | правки возвращают ту же ошибку |
| Имена метаданных | сверка каждого имени со выгрузкой метаданных или синтакс-помощником | имя регистра, реквизита или документа придумано |
| Методы BSL | поиск каждого метода в синтакс-помощнике | в коде метод, которого в платформе нет |
| Виртуальные таблицы | проверка параметров и суффиксов ресурсов | перепутаны таблицы остатков и оборотов |
| Уточняющие вопросы | сколько вопросов задано до генерации | вопросы не заданы, допущения приняты молча |
| Готовность к вставке | запуск на копии базы | код требует ручной переписи логики |
Условия прогона должны совпадать полностью: одна и та же копия базы, один и тот же текст задания, одинаковое ограничение по времени, доступ к документации платформы у обоих инструментов. Разная модель или разный размер выгрузки метаданных обнуляют результат.
💻 Что проверять в сгенерированном запросе
Основные ошибки агентов в запросах к регистрам накопления повторяются из прогона в прогон, и почти все они ловятся чтением документации платформы.
Путаница таблиц остатков и оборотов. У регистра накопления с видом «Остатки» доступны виртуальные таблицы Остатки, Обороты и ОстаткиИОбороты, а у регистра с видом «Обороты» - только Обороты. В типовой конфигурации регистр остатков товаров на складах и регистр движений продаж - разные объекты, и условие «не было движений за период» берётся из оборотной таблицы. Агент, который подставит таблицу остатков вместо оборотов, получит запрос, синтаксически верный и логически бессмысленный.
Параметры виртуальных таблиц. У таблицы остатков их два, у оборотов - четыре:
РегистрНакопления.<ИмяРегистра>.Остатки(<Период>, <Условие>) РегистрНакопления.<ИмяРегистра>.Обороты(<НачалоПериода>, <КонецПериода>, <Периодичность>, <Условие>)
Суффиксы ресурсов. В таблице Остатки ресурсы получают суффикс Остаток (Количество превращается в КоличествоОстаток), в таблице Обороты - суффикс Оборот. Обращение к несуществующему полю платформа отклонит на этапе разбора запроса, поэтому ошибку видно сразу.
Несуществующие методы. В сгенерированном коде встречаются вызовы методов, которых в BSL нет, и названия, похожие на методы из другого языка. Проверяется это поиском в синтакс-помощнике: имя метода либо есть в справке платформы, либо его нет.
Условный пример сводного запроса с соединением остатков и оборотов за период:
ВЫБРАТЬ
ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,
ТоварыНаСкладахОстатки.Серия КАК Серия,
ТоварыНаСкладахОстатки.Склад КАК Склад,
ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
ТоварыНаСкладахОстатки.СуммаОстаток КАК Сумма
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Движения
ПО ТоварыНаСкладахОстатки.Номенклатура = Движения.Номенклатура
И ТоварыНаСкладахОстатки.Характеристика = Движения.Характеристика
И ТоварыНаСкладахОстатки.Серия = Движения.Серия
ГДЕ
Движения.КоличествоОборот ЕСТЬ NULL
И ТоварыНаСкладахОстатки.КоличествоОстаток <> 0
Имена регистров в примере взяты из типовой конфигурации и проверяются на своей базе: набор регистров зависит от конфигурации и её редакции. Фрагмент не прогнан на платформе и требует локальной проверки - в облаке нет 1С.
🧰 Протокол прогона
- Копия базы. Работа идёт только на копии: агент с доступом на запись в рабочую базу меняет данные быстрее, чем вы успеваете прочитать диф.
- Выгрузка метаданных. Инструменту даётся выгрузка конфигурации в файлы. Без неё он угадывает имена по общим шаблонам.
- Текст задания. Один и тот же файл для обоих инструментов, без подсказок и без примеров кода.
- Фиксация времени. Секундомер от отправки задания до первого варианта, который проходит проверку синтаксиса.
- Проверка имён. Каждое имя метаданных и каждый метод сверяются с выгрузкой и синтакс-помощником. Список расхождений пишется построчно.
- Прогон. Только после проверки имён - запуск на копии базы. Ошибки платформы записываются с текстом сообщения.
- Разбор. Критерии из таблицы заполняются по каждому инструменту, результат подписывается датой и версиями.
Протокол прогоняется на двух-трёх разных задачах: на одной задаче разница между инструментами часто укладывается в случайность.
🧮 Как считать результат
Каждый критерий получает оценку, и итог считается по сумме баллов. Условный пример таблицы результатов: числа выдуманы для формата, замера не было.
| Критерий | Инструмент A | Инструмент B |
|---|---|---|
| Время до первого варианта, мин | 4 | 2 |
| Итераций до рабочего кода | 1 | 2 |
| Выдуманных имён метаданных | 0 | 3 |
| Несуществующих методов BSL | 0 | 1 |
| Верных виртуальных таблиц | да | нет |
| Уточняющих вопросов до генерации | 3 | 0 |
| Код прошёл проверку на копии | да | после правки |
При равной скорости выигрывает тот инструмент, у которого меньше выдуманных имён: каждая выдуманная ссылка - это отдельный поиск в метаданных и отдельная правка. Скорость первого ответа важна меньше, чем число итераций до рабочего кода, потому что итерации съедают время разработчика.
🚧 Границы метода
- Один прогон ничего не доказывает. Результат зависит от версии модели, размера выгрузки метаданных, от того, попала ли нужная конфигурация в контекст, и от формулировки задания.
- Инструмент и модель - разные вещи. Один и тот же редактор может работать с разными моделями, и сравнение редакторов без фиксации модели бессмысленно.
- Первый запуск и рабочая сессия - разные режимы. Терминальный агент тратит время на чтение выгрузки при старте, редактор держит индекс между сессиями. Сравнивать нужно оба режима отдельно.
- Документация инструментов меняется. Возможности, о которых идёт речь, - неинтерактивный режим запуска, правила проекта, подключение внешних серверов через MCP - описаны в документации Claude Code и Cursor; перед тестом сверьтесь с актуальной версией справки.
🪤 Ошибки в самом тесте
Разные условия на входе. Разные модели, разный размер выгрузки, разное время - всё это делает результат несравнимым.
Оценка «на глаз». «Код выглядит чище» нельзя предъявить коллеге. Критерии записываются до прогона и проверяются по списку.
Проверка только синтаксисом. Запрос может собраться и вернуть пустой результат из-за неверного соединения. Проверка идёт на данных: сверка суммы остатков с отчётом типовой конфигурации на той же дате.
Работа в рабочей базе. Любой прогон с записью - только на копии. Это относится и к агентам, которые умеют выполнять команды самостоятельно.
Один инструмент вместо процесса. Сравнение нужно для выбора инструмента под задачу: у терминального агента и редактора разные сильные места, и в работе они часто дополняют друг друга.
🏁 Итог
Сравнение ИИ-инструментов на задаче 1С даёт результат, когда задание, база и время совпадают, а критерии записаны до старта. Проверяются имена метаданных, методы BSL, параметры виртуальных таблиц и число итераций до рабочего кода. Запрос к регистрам накопления удобен как пробная задача: в нём сразу видно, читает инструмент контекст конфигурации или подставляет имена по догадке.
Соберите протокол на своей базе и прогоните его на двух задачах. Расскажите в комментариях, какие ошибки в BSL-коде своих агентов вы ловите чаще всего.
📦 Файл к статье
Архив к статье (05.2-companion.zip) лежит в блоке «Файлы» под текстом публикации. Что внутри:
protokol-sravneniya.md- протокол прогона из семи шагов и таблица критериев для заполнения;chek-list-proverki-zaprosa.md- что проверить в сгенерированном запросе до запуска на платформе;zapros-ostatki-s-dvizheniyami.bsl- сводный запрос из статьи отдельным файлом;tablica-rezultatov.csv- таблица результатов прогона с условными числами для образца.
Числа в примерах условные, замера не было: результат зависит от версии модели, конфигурации и размера выгрузки метаданных. Код не прогнан на платформе, нужна локальная проверка.
- Cursor + MCP для 1С: работающая инструкция с картинками
- Cursor + MCP: собираем идеальное рабочее место 1С-разработчика за 15 минут
- Синтакс-помощник 1С как MCP-инструмент: индекс из справки платформы и сервер на Python SDK
- vrunner 3.0: база из исходников, проверка синтаксиса и выгрузка dt командами консоли
Вступайте в нашу телеграмм-группу Инфостарт