Практически для любой задачи разработки я сначала пробую решить её с современным ИИ-агентом и доступными средствами платформы. Нужную обвязку — скрипты запуска, сборки и проверки — тоже можно поручить агенту. Покупку специализированного платного инструмента я не считаю обязательной точкой входа, даже когда меня убеждают в обратном.
Недавно в комментариях на YouTube мне ответили так:
Не верю - это даже топовым платным моделям не под силу, если иметь ввиду прямое редактирование xml.
Спорить можно бесконечно, поэтому решили проверить на конкретной задаче. На видео Codex по одному заданию создаёт расширение УТ 11, добавляет в форму списка номенклатуры панель остатков, собирает CFE, устанавливает его в демобазу и проверяет в пользовательском режиме. После запуска задания я не написал ни строчки кода и ни разу не подсказал агенту, что исправлять.
Правда, дублей получилось два. В первой записи расширение тоже работало, но утверждать, что оно создано с нуля именно в этом прогоне, оказалось нельзя — и обнаружил я это, только когда сел за статью.
В повторном прогоне до перехода к проверке прошло 37 минут, до итогового ответа агента — около 57. Подготовка окружения сюда не входит, а что стоит за каждой цифрой, разберу ниже.
Специализированные MCP и навыки для 1С в эксперименте не использовались. Агент работал с XML-выгрузкой типовой конфигурации, демобазой, штатной платформой и папкой универсальных скриптов запуска, выгрузки, загрузки, сборки и проверки. Эти скрипты Codex написал для меня ещё раньше — они аналогичны тем, что я показывал для сборки обработок. Логики самого расширения и его формы в них нет: её агент создавал в рамках задания.
Как спор в комментариях стал техзаданием
Поводом стала дискуссия на YouTube-канале автора платного инструмента для разработки в 1С. Я сказал, что подобные задачи ИИ может решать уже давно, и сослался на своё видео примерно полугодовой давности, где Codex по одному заданию делал внешнюю обработку. (тот пример был намеренно простым, я пробовал только что вышедший Codex desktop без подписки с пылу с жару как говориться)
Коллега возразил: по его оценке, в том ролике агент использовал готовую EPF как шаблон, а сама форма была слишком простой. Запомните это возражение про шаблон — оно ещё пригодится. Я ответил, что с тех пор использую ИИ и для сложных форм, в том числе в конвейере с бесплатным исполнителем и платным проверяющим. Тогда и прозвучало то самое «даже топовым платным моделям не под силу».
Вот с этим я и не согласен. По моему опыту, агент способен исследовать конфигурацию, изменить файлы и довести форму до рабочего состояния, особенно если подключить память модели и навыки. Но ответ «я так уже делаю» в споре ничего не доказывает — нужен был результат, который можно проверить.
В итоге мы остановились на конкретном примере, причём задачу выбирал не я — её предложил коллега. Условие в комментариях было сформулировано так:
Расширение создаётся само, в него заимствуется форма списка номенклатуры, на форме размещается динамический список с произвольным запросом по остаткам, реквизиты формы и колонки создаются автоматически, всё открывается у пользователя и работает.
Я ответил: «Договорились. С меня видео». Так у эксперимента появились конкретные критерии: можно открыть результат и проверить каждый пункт.
Задача: остатки в списке номенклатуры
Исходная конфигурация — демобаза «Управления торговлей» 11.5.24.57 на платформе 8.5.1.1343. Нужно создать расширение ОстаткиНоменклатуры и доработать в нём заимствованную форму списка справочника «Номенклатура».
Требования к результату:
- В нижней части формы появляется панель остатков по выделенной номенклатуре.
- Панель показывает склад, помещение, характеристику, серию и количество в наличии. Строка итогов не нужна.
- При переходе по основному списку панель обновляется для выбранной позиции.
- Флажок «Показывать остатки» управляет видимостью панели. Когда он снят, код обновления остатков не должен выполняться.
- Источник данных — именно реквизит формы типа ДинамическийСписок с произвольным запросом. Таблица значений вместо него не засчитывается.
- Типовую конфигурацию менять нельзя. Готовое расширение нужно собрать в CFE, подключить и проверить.
Пункт про динамический список здесь ключевой. Внешне такую же таблицу можно получить разными способами, поэтому картинки с остатками для приёмки мало — нужно заглянуть в устройство формы. Этим займёмся ниже.
Почему я не дал агенту ни навыков, ни памяти
С подключёнными навыками и накопленной памятью проекта такие задачи вполне решаемы, и ничего исключительного я в этом не вижу. Но в споре такой результат легко оспорить: мол, работу сделали заранее подготовленные инструкции, а не модель.
Поэтому для эксперимента я выбрал условия построже: новый контекст, никакой истории предыдущих попыток, никаких специализированных навыков для 1С. В промпте повторного прогона это сформулировано прямо:
В текущем проекте есть только минимальная универсальная обвязка запуска стандартной платформы 1С. Не используй специализированные серверы или плагины для 1С.
Правда, как показал первый прогон, новый контекст ещё не гарантирует чистоту эксперимента.
Почему первый прогон пришлось переснять
Перед первым запуском я показал, что в демобазе нет расширений, а рабочая папка пуста. Открыл свежий диалог, передал промпт и оставил компьютер агенту. В конце получил работающую панель: флажок её скрывал и показывал, при переходе по номенклатуре данные менялись, в конфигураторе был виден динамический список с произвольным запросом.
На этом можно было заканчивать видео. Но при подготовке статьи выяснилось неприятное: агент нашёл на компьютере материалы предварительной репетиции и использовал уже существовавшее расширение.
Я пересмотрел таймлапс. Да, репетиционное решение тоже создал агент, и тоже без моего кода. Но пустая папка проекта и отсутствие расширения в целевой базе не мешали ему взять готовую работу из другого места. По сути, это ровно то возражение, которое коллега высказал к моему старому ролику: агент опирался на готовый образец.
В обычной разработке переиспользовать свои наработки полезно. Но в споре я обещал показать создание расширения, а не то, как агент находит готовое решение по соседству — пусть даже когда-то созданное ИИ.
Если бы я оставил первый прогон без пересъёмки, результат можно было бы оспорить одной фразой. Поэтому доказательством я его не считаю: в видео он остался вместе с объяснением проблемы, а эксперимент я повторил.
Как я подготовил повторный запуск
Первым делом убрал с компьютера известные мне материалы предыдущих попыток: проекты, готовые расширения, старые базы и историю сеансов. Всё это переехало на съёмный диск, в каталоги E:\ut11-extension-quarantine-20260910 и E:\Codex-Recording-Archive, а диск я отключил.
Для повторного прогона подготовил отдельную демобазу и новый каталог проекта. В записи ещё раз показал пустой список расширений (32:17–32:20) и новый проект с пустой папкой work (32:40–32:48). Рядом лежали файл задания PROMPT.md и папка pipeline со скриптами запуска, выгрузки, загрузки, проверки и сборки.
В промпт добавил прямой запрет:
Работай только с текущим проектом, указанной выгрузкой конфигурации и указанной демонстрационной базой. Не ищи и не используй предыдущие сессии, каталоги других экспериментов, готовые исходники или CFE этой задачи. Если обнаружишь такой артефакт в разрешённых каталогах, остановись и явно сообщи об этом.
Рабочее окружение — 1С, демобазу, выгрузку типовой конфигурации и скрипты — я оставил намеренно и показал в записи. Изолировал я материалы прошлого решения, а не среду для работы.
Первый запуск научил и кое-чему в организации работы. Тогда я перестарался с требованием доказательств, и агент успел наснимать около двадцати скриншотов. Поэтому в повторном промпте попросил по максимуму выполнять операции пакетными командами, не кликать по координатам, не сохранять скриншоты и не повторять успешные проверки без причины. Обязательными остались проверка нескольких позиций, независимая сверка остатков и полный перезапуск пользовательского сеанса.
В повторном запуске работала модель gpt5.6 SOL с уровнем рассуждений medium (выбор виден на 34:12–34:25), в первом уровень был high. Так что сравнивать эти две попытки как замер влияния одной настройки на скорость нельзя: изменились и условия, и промпт (ну и я решил, что средних размышлений нетоповой модели хватит для задачи, напомню, что топ у OpenAI сейчас Astra).
Что было в промпте и что делал агент
Постановка описывала поведение формы, обязательный способ получения данных, окружение и критерии приёмки. А вот какой регистр взять, какой запрос написать и к каким обработчикам подключиться, агент должен был выяснить по конфигурации сам.
Вот фрагмент задания:
В нижней части формы размести удобную панель, показывающую остатки по текущей выделенной позиции номенклатуры. Источником данных обязательно должен быть реквизит формы типа ДинамическийСписок с произвольным запросом — не таблица значений. Отобрази склад, помещение, характеристику, серию и количество в наличии. Строка итогов не нужна. При переходе по строкам основного списка остатки должны обновляться для новой позиции.
Ещё в задании были пути к выгрузке и демобазе, пользователь и порядок работы: сначала исследовать метаданные и реальные данные и сохранить короткое техническое задание, затем, не дожидаясь согласования, продолжать. На выходе — исходники, CFE, журналы и акт приёмки.
«Один промпт» здесь означает одно исходное задание без моих дальнейших указаний по исправлению решения. Внутри этой работы агент мог исследовать файлы, запускать команды, получать ошибки и сам их исправлять.
Отправив задание, я выключил камеру и микрофон, оставил запись экрана и ушёл заниматься своими делами. К компьютеру вернулся, чтобы посмотреть и вручную проверить результат.
Отдельно про окна 1С, которые видны в записи. Конфигуратор с графическим интерфейсом промпт разрешал только для операций, которых нет в штатном пакетном режиме: первоначального создания расширения и первого заимствования формы. Сразу после этого агент должен был выгрузить расширение в файлы и продолжать через них и скрипты. Пользовательский режим был нужен для функциональной и визуальной проверки.
Агент работал с XML- и BSL-файлами штатной выгрузки конфигуратора, а загрузку и сборку выполнял средствами платформы 1С. Кстати, и создание каркаса расширения, и заимствование формы можно выполнить без конфигуратора, генерацией XML: это умеют бесплатные навыки, о которых расскажу ближе к концу.
Обвязка: что лежит в папке pipeline
Никакой магии в этой папке нет: это скрипты вокруг штатных возможностей платформы. Конфигурацию можно выгрузить в набор файлов, включая XML и BSL, анализировать и изменять их программно — механизм описан в документации 1С по выгрузке и загрузке конфигурации. Для автоматизации загрузки, выгрузки и проверок предусмотрен пакетный запуск конфигуратора.
Всего в pipeline около десятка небольших файлов PowerShell. Большинство из них вызывает конфигуратор в пакетном режиме с командами /DumpConfigToFiles, /LoadConfigFromFiles, /CheckConfig, /DumpCfg и /LoadCfg для указанного расширения: передаёт параметры базы, ждёт завершения процесса и сохраняет журнал. Плюс запуск 1С, проверка окружения и файл настроек. Слов «номенклатура», «остатки» или «динамический список» в них нет ни разу: логику панели агент создавал под эту задачу.
Такую обвязку тоже можно сделать вместе с агентом: описать нужные операции, получить скрипты и проверить их на своей базе. Для узкой задачи это может оказаться быстрее, чем осваивать чужой закрытый продукт, а свои команды можно прочитать и поправить под окружение. В этом для меня и главный смысл: агент делает не только прикладную доработку, но и инструменты для неё. Не хватает удобной команды — её создание становится ещё одной задачей для агента.
Что получилось внутри расширения
Теперь — не рассказ агента и не мои впечатления, а то, что реально лежит в исходниках повторного прогона.
Реквизит ОстаткиНоменклатуры имеет тип cfg:DynamicList. В его настройках установлены ManualQuery=true и DynamicDataRead=true, а в QueryText записан запрос к виртуальной таблице РегистрНакопления.ТоварыНаСкладах.Остатки. То есть это именно динамический список с произвольным запросом, как требует условие, а не похожая на него таблица значений. Задавать собственный запрос для такого реквизита — штатная возможность динамического списка.
Запрос из полученного расширения:
ВЫБРАТЬ
ТоварыНаСкладахОстатки.Склад КАК Склад,
ТоварыНаСкладахОстатки.Помещение КАК Помещение,
ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,
ТоварыНаСкладахОстатки.Серия КАК Серия,
СУММА(ТоварыНаСкладахОстатки.ВНаличииОстаток) КАК КоличествоВНаличии
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(
, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки
СГРУППИРОВАТЬ ПО
ТоварыНаСкладахОстатки.Склад,
ТоварыНаСкладахОстатки.Помещение,
ТоварыНаСкладахОстатки.Характеристика,
ТоварыНаСкладахОстатки.Серия
ИМЕЮЩИЕ
СУММА(ТоварыНаСкладахОстатки.ВНаличииОстаток) <> 0
Номенклатура передаётся параметром в виртуальную таблицу остатков. Результат группируется по четырём измерениям панели, количество берётся из ресурса ВНаличииОстаток, нулевые группы отсекаются. Это именно остатки «в наличии»: расчёт свободного остатка с учётом резервов в задачу не входил.
Обновление подключено после штатного обработчика СписокПриАктивизацииСтроки, и первым делом добавленный код проверяет флажок:
&НаКлиенте
&После("СписокПриАктивизацииСтроки")
Процедура ОстНом_СписокПриАктивизацииСтрокиПосле(Элемент)
Если Не ПоказыватьОстатки Тогда
Возврат;
КонецЕсли;
ОстНом_ОбновитьОстаткиДляТекущейСтроки();
КонецПроцедуры
Дальше код определяет текущую строку, устанавливает на сервере параметр Номенклатура и обновляет таблицу остатков. Мелочь, но показательная: элемента с именем «Список» в типовой форме нет — там два списка, для стандартного и расширенного поиска. Имя активного агент получает типовой функцией ПодборТоваровКлиентСервер.ИмяСпискаНоменклатурыПоВариантуПоиска.
При повторном включении флажка обновление вызывается для текущей позиции. Проверка флажка продублирована и в самой процедуре обновления, до серверного вызова, так что при выключенной панели код обновления остатков не выполняется, а штатная логика основного списка сохраняется.
Как проверяли результат

В каталоге повторного прогона остались исходники расширения, файл ОстаткиНоменклатуры.cfe, техническое задание, акт приёмки (прямо хоть подписывай) и журналы. Пакетная проверка завершилась сообщением «Ошибок не обнаружено», сборка и загрузка тоже прошли успешно. В акте указан SHA-256 файла CFE — он совпадает с файлом из архива к статье.
В акте агент зафиксировал проверку нескольких позиций, переключение флажка, сверку отдельным запросом через COM-соединение и открытие формы после полного перезапуска сеанса. Отчёт полезный, но верить агенту на слово я не стал и проверил результат сам в пользовательском режиме.

В повторной записи я снял и снова установил флажок, прошёлся по номенклатуре, а затем открыл стандартный отчёт «Ведомость по товарам на складах» и выборочно сверил йогурт «Полесье» по сериям.
В материалах повторного прогона зафиксированы такие значения:
Моя ручная сверка в видео относится к йогурту. Молоко и отсутствие остатков у полуфабрикатов указаны в отчёте агента, который также выполнял отдельный запрос к данным базы.
Готовую панель и переключение флажка можно посмотреть на 38:22–38:35, сверку йогурта со стандартной ведомостью по сериям — на 39:57–40:17. Там я, кстати, оговорился: сказал «двадцать и десять, итого сорок». Итого, конечно, 30 — как в таблице.

Сколько на самом деле заняла разработка
В записи видно, что агент ещё работает, и я называю сначала примерно 55 минут, а затем 57. В этот момент он уже занимался завершающими действиями и отчётом, а расширение было доступно для проверки.
Позже я пересмотрел таймлапс и уточнил границу: работа до перехода к проверке заняла 37 минут, после этого в расширение уже ничего не вносилось.
У этих цифр разный смысл:
Проверка — часть полного цикла разработки, поэтому 57 минут я не прячу. А 37 минут показывают, на каком этапе в этом прогоне закончилось создание самого решения.
А можно было ещё быстрее
37 минут — результат запуска с намеренно ограниченной подготовкой агента, а не предел скорости такого подхода.
В реальной работе агенту можно сохранить особенности конфигурации, проверенные способы работы с формами, команды сборки и проверки. Тогда в следующей задаче ему не придётся заново проходить уже исследованный путь. А с навыками и памятью можно использовать и более дешёвые, а то и вовсе бесплатные модели — но об этом в следующий раз.
Сначала пробую сделать с агентом
Условие из комментариев выполнено: заимствованная форма списка номенклатуры, динамический список на произвольном запросе и работающая у пользователя панель. Агент обошёлся файлами выгрузки, штатной платформой и простыми скриптами — без специализированного MCP для 1С. Моё участие свелось к подготовке условий, постановке задачи и ручной проверке.
Мой тезис не в том, что инструменты не нужны: навыки, память и скрипты полезны. Но покупать специализированный инструмент необязательно, ведь современные модели уже позволяют самостоятельно закрывать широкий круг повседневных задач разработки, включая создание инструментов для неё. Поэтому я сначала пробую решить задачу с агентом, а если удобного способа нет, поручаю ему сделать свой.
Вместо очередного «я так уже делаю» теперь есть пример, который можно проверить руками: открыть расширение, посмотреть запрос, сверить остатки. Промпт, pipeline со скриптами и результат лежат в архиве к статье. Повторить эксперимент может любой, даже тот, кто никогда не занимался вайбкодингом и не знает, что такое навыки, MCP и память модели.
Если попробуете на своей задаче — напишите в комментариях, что получилось. А если интересно, сколько займёт та же задача с памятью и навыками, могу записать продолжение.
Если видео здесь не открывается, вот ссылка на YouTube (можно и скачать).
Спасибо за внимание!
Исходники, скрипты и результат приложу в комментах, в публикацию не получилось.
Вступайте в нашу телеграмм-группу Инфостарт