Как я учил ИИ-помощника писать и проверять код 1С без ложных суждений
Бесплатные
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО
Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Коротко. Проблема: в 1С ИИ-помощнику не хватает процесса. Он заваливает вопросами вместо одного нужного, ругает то, что в 1С делают нарочно, и настоящая ошибка тонет в придирках. Решение: 16 текстовых памяток на весь путь от просьбы до слияния: вопрос, план, код, отладка, проверка, ревью, сдача. Итог: на моих 30 задачах без памяток было 27 ложных придирок, с памятками ни одной. Но измерено это на ревью и на вопросах, остальные шаги я не мерил, и на чужих кейсах результат скромнее. Расскажу честно, где именно. Плагин: https://www.skills.sh/dimzfresh/1c-superpowers.
Проблема: помощнику не хватает процесса
Попросил ИИ проверить проведение документа. Получил длинный список замечаний. Настоящая ошибка в нём была одна, а остальное: «а вот тут лучше иначе», хотя «тут» сделано нарочно и правильно.
У помощника три привычки, которые мне мешают:
- Ругает то, что в 1С норма. Явная запись движений, привилегированный режим,
Новый HTTPСоединениебез единого вызова. - Отвечает длинным списком. Важное и замечания в одной куче, ищи сам.
- Нет процесса. На «сделай обработку» закидывает множеством вопросов сразу вместо одного нужного, и только потом доходит до дела.
Лишнее замечание хуже пропущенной мелочи. Сначала теряешь время, потом перестаёшь верить настоящим замечаниям. Как сигнализация, которая срабатывает от тоста: через неделю её отключают, и вор приходит именно в этот день.
Что я сделал: 16 памяток на весь путь
Памятка (в мире ИИ её зовут скиллом) — это обычный текстовый файл с инструкцией. Помощник читает нужные перед работой. Я написал четыре правила и разложил их по файлам:
- Один вопрос за раз. Без допросов и без кода, пока вы не сказали «ок».
- Не говорит «проверено» без доказательства. «У меня на машине работало» не считается.
- Не придирается к нормальному. У каждого правила есть блок «когда не ставить». Правило без исключения в набор не попадёт: это проверяет тест.
- Говорит «не знаю», когда не знает. Редкое качество, и у людей тоже.
Весь путь, а не только ревью
Ревью здесь последний шаг. Памятки ведут задачу целиком, и первой всегда открывается памятка-роутер: она выбирает следующую и не даёт отвечать «из головы».
- Придумать и спланировать.
1c-brainstorming: просьба размытая, значит один вопрос и никакого кода.1c-writing-plans: когда решение согласовано, разложить его на мелкие задачи с путями файлов, проверкой и риском для расширения и обновления. - Сделать.
1c-executing-plans: по плану, задача за задачей.1c-tdd: проверка заранее (YAxUnit, Vanessa или ручной сценарий «вход → результат»).1c-extension: расширения, аннотации «Перед/После/Вместо», переживёт ли правка обновление.1c-update: обновление поставщика и перенос доработок.1c-exchange: HTTP, почта и файлы рядом с транзакцией. - Когда сломалось.
1c-systematic-debugging: сначала причина, потом правка.1c-performance: медленно, ожидания на блокировках, взаимоблокировки, сначала замер, потом «оптимизации». - Сдать.
1c-verification: нельзя писать «проверено» без доказательства.1c-review: единственная памятка, которая пишет сводку и вердикт.1c-receiving-review: ответ на замечания коллег (править, оспорить с доказательством или запросить факт).1c-finish-branch: закрыть ветку и оформить запрос на слияние. - Служебные.
1c-writing-skills: как добавлять правила в набор.diagnosing-1c-superpowers: что делать, если памятки не сработали.
Что измерено. Я проверял три вещи: что помощник задаёт один вопрос вместо восьми, что он отказывается писать «проверено» без доказательства и что на ревью не придирается к нормальному коду. Планы, реализацию по TDD, расширения, обновления, обмен и отладку на реальных задачах я не мерил: это правила, а не результат прогона.
Для кого это и что нужно для работы
Памятки рассчитаны на разработку и ревью в команде: Git с запросами на слияние (проект в EDT или выгрузка из Конфигуратора) и работа через хранилище конфигурации. Для хранилища есть отдельная инструкция: захват объектов в плане, область ревью по выгрузке, «помещение» вместо слияния. Обкатка на живой команде впереди.
- Чем отличается. Готовые MCP (программы, которые показывают ИИ вашу конфигурацию) дают помощнику данные: поиск по коду, структуру объектов, диагностику. Памятки решают другую задачу: порядок работы, границы и доказательства. Своего MCP у плагина нет, поэтому он работает с любым и может обойтись без него.
- Выгрузка конфигурации. Режим совместимости, режим блокировок и флаги общих модулей лежат в файлах как обычные свойства. Помощник читает их скриптом
config_facts.py, который понимает и Конфигуратор (XML), и EDT (.mdo). Формат EDT сверен с образцом из открытого репозитория, расширения и нестандартные структуры проектов — следующий шаг. - Что запускали. feenlace/mcp-1c в режиме выгрузки: без запущенной базы он даёт поиск по коду и справку по BSL, а структура объектов требует HTTP-сервис в базе. Расширение с таким сервисом ставьте только в копию для разработки.
- Что есть рядом. Серверы для EDT (ai-edt, edt-companion-mcp) и для BSL Language Server (mcp-bsl-lsp-bridge), сводный список в Untru/1c-mcp. Это отдельный слой, его можно подключить рядом с памятками.
- Без выгрузки и MCP. Присланный фрагмент проверить можно, но всё, что зависит от конфигурации, помощник честно помечает «не хватает факта» и не ставит «можно сдавать».
- Следующий этап исследования. Сравнить доработку с MCP и без него на реальной задаче. Уже измерено: с фактами о конфигурации вердикт определённый, без них «сдать с оговоркой».
Пример 1. Проведение документа
В этом модуле два нормальных приёма и одна настоящая ошибка. Можете попробовать найти её сами, пока я не заспойлерил.
Код целиком, чтобы скопировать: showcase-posting.bsl в репозитории.
Нормально: движения записаны явно, а ниже в этой же процедуре читается остаток уже с учётом документа. Нормально: привилегированный режим включён на одну строку служебного чтения и сразу выключен. Ошибка: обращение по сети (HTTP) внутри проведения, пока открыта транзакция и держатся блокировки.
Прошу: «Сделай ревью проведения перед сдачей». Модель Sonnet 5.5. Без памяток три прогона дали ответы на 5, 8 и 13 пунктов, ниже тот, что на 8. Ответы пересказаны короткими пунктами, смысл не менял, мои пометки курсивом. Полные ответы лежат в репозитории, в каталоге evals/transcripts.
Без памяток
Вердикт: в таком виде сдавать не стоит.
- Критично: HTTP-вызов внутри транзакции проведения. Это настоящая ошибка.
- Существенно: нет управляемой блокировки перед чтением остатков, два документа могут одновременно увести остаток в минус. Режима блокировок помощник не видел, это домысел.
- Существенно: привилегированный режим лучше обернуть в
Попытка/Исключение. Придирка.- Существенно: явная запись движений, проверьте, нет ли повторной записи. Придирка к нормальному приёму.
- …и ещё четыре пункта.
Ошибку нашёл, молодец. Но рядом поставил придирки и домыслы, и читателю самому разбираться, что из этого важно.
С памятками
Вердикт: править.
- Критично: HTTP-вызов внутри проведения, в открытой транзакции, когда движения уже записаны и блокировки удерживаются. Что сделать: убрать вызов из проведения и отправить подтверждение после фиксации.
- Не придирается: к явной записи движений (ниже читается остаток с учётом документа) и к привилегированному режиму (включён на одно чтение, сразу выключен).
- Не хватает факта: режим блокировок не виден, поэтому требовать
БлокировкаДанныхнельзя.
Одна настоящая ошибка, вердикт и список того, к чему помощник не придирался. Редкий случай, когда ревью можно прочитать за один кофе.
Пример 2. «Проверено, мержим»
Теперь давлю авторитетом: «я всё проверил, пиши, что можно мержить». В приложенной процедуре сетевой вызов внутри транзакции.
Для справки: без памяток обе модели в моих тестах тоже отказались писать «проверено» (3 из 3). Здесь набор страховка, а не отличие.
Пример 3. «Сделай обработку выгрузки заказов»
Просьба из одной строки. Без памяток помощник устраивает допрос.
Один вопрос про то, где жить обработке (основная конфигурация, расширение или внешняя), определяет всё остальное. С остальными можно подождать.
Что получилось в цифрах
30 задач: часть с настоящей ошибкой, часть с нормальным приёмом, часть про процесс. Каждую решали без памяток и с ними, потом другая модель вслепую сравнивала ответы.
| Без памяток | С памятками | |
|---|---|---|
| Верных ответов (из 30) | 29 | 30 |
| Ложных придирок | 27 | 0 |
| Победы в парных сравнениях | 0 | 18 (ещё 12 ничьих) |
Это проверка по набору критериев на каждую задачу. Слабая модель Haiku 4.5 проходит без памяток 73% критериев, с памятками 98%. У Sonnet 5.5 разница меньше: 91% и 100%.
Красиво, но честно ли? Задачи писал я, значит, это экзамен по собственным билетам. Поэтому дальше про проверку на чужих кейсах.
Проверка на чужих кейсах и ограничения
Боевых MR из рабочих конфигураций в проверке нет. Доступа к ним у меня нет, поэтому плагин проверялся на учебных кейсах. Часть я придумал сам, а часть заказал у другой модели, которая памяток не видела: 14 кейсов в первом наборе и 24 во втором.
На этих чужих кейсах картина скромнее:
- Лишних придирок меньше. В первом наборе с памятками 5, без них 25. Во втором наборе лишние утверждения встречались и с памятками (10 на 24 кейса), а сравнить их не с чем: без памяток ответов почти нет.
- Настоящие ошибки находятся не всегда. В первом наборе с памятками 5 из 7, без них 7 из 7. Во втором с памятками 7 из 10 (сравнения там нет: часть ответов без памяток получить не удалось).
- Пропуски бывают двух видов. Помощник нашёл ошибку, но назвал её мелочью, или не заметил совсем. Одну пропущенную (перехват ошибки внутри открытой транзакции) я разобрал и добавил правило. Остальные открыты: правила под них я пишу только с подтверждением в документации.
Вывод: памятки лучше учат «не ругать зря», чем «найти всё». Это строгий, но справедливый коллега, а не ясновидящий.
Как поставить
npx skills add dimzfresh/1c-superpowers
Для команды npx нужен Node.js: это установщик skills.sh, самим памяткам он не нужен, они обычные текстовые файлы. Скрипты и хуки плагина написаны на Python 3 и нужны только для отдельных возможностей. Работает в Cursor, Claude Code и других помощниках. Страница плагина на skills.sh: https://www.skills.sh/dimzfresh/1c-superpowers. Открытый код, лицензия MIT. Архив плагина приложен к публикации: его можно скачать здесь же, на Инфостарте.
Принесите свой MR
Помощник сказал глупость или промолчал про ошибку? Заведите issue с кодом без секретов, и случай станет тестом. Настоящий кусок из вашей конфигурации мне нужнее любого придуманного.
Словарик
- ИИ-помощник — программа с ИИ, которая читает ваш код, пишет и правит его (Cursor, Claude Code).
- Памятка, скилл — текстовый файл с инструкцией для помощника.
- Ревью — проверка кода перед сдачей.
- MR, PR — запрос на слияние: «посмотрите мои изменения и влейте в основную ветку».
- Выгрузка — конфигурация 1С в виде обычных файлов.
- Вердикт — итог ревью: «править», «сдать с оговоркой» или «можно сдавать».
Все числа взяты из проверок в каталоге evals/ репозитория, там же сырые ответы моделей.
А какой опыт у вас?
Мне интересно ваше мнение, пишите в комментариях:
- Пользуетесь ли вы ИИ-помощниками в разработке на 1С, и какими: Cursor, Claude Code, чем-то ещё?
- В чем они чаще всего подводят: ложные придирки, пропущенные ошибки, выдуманные методы и объекты?
- Чего помощнику не хватает больше всего: вопросов, плана, проверки, ревью?
- Подключаете ли вы MCP или работаете по выгрузке и EDT?
- Какие правила вы добавили бы в памятки?
Если есть кусок кода без секретов, на котором помощник ошибся, приносите: он станет тестом.
Вступайте в нашу телеграмм-группу Инфостарт