VS Code и 1С: короткий путь от слов к делу
Продолжение серии статей о применении AI-агентов в разработке 1С, начало: //infostart.ru/1c/articles/2836382/
Чат в редакторе умеет предложить удачный абзац. Конфигуратор на этот абзац смотрит с вежливым недоумением: реквизит лежит в одном XML, состав конфигурации — в соседнем, форма — отдельно, модуль — ещё в одном файле. А запись в информационную базу — это уже не литература. После неё в базе другая конфигурация, и «я просто спросил» в протокол не вклеишь.
Технология vscode-1c-gigachat как раз для этого зазора. Постановка живёт в отдельной задаче. Модели GigaChat 3 отвечают в Chat VS Code. К базе из этой цепочки ведёт только явный -Execute публичного скрипта. Пока его нет, платформа не стартует: молчаливого «ну ладно» в контуре нет.
Ниже — как этим пользоваться. Каталог из 88 навыков, прайс и хеши переноса оставлены полной статье.
Что вы в итоге получаете
Вид задачи бывает ровно трёх сортов.
|
Вид |
Что лежит на диске в конце |
Что при этом происходит с базой |
|
cfe, расширение |
Файл .cfe с runId и SHA-256 |
Транзакция cfe-deploy.ps1: загрузка XML, обновление расширения, выгрузка файла |
|
epf, внешняя обработка |
Файл .epf |
Сборка базу не меняет. Запуск — отдельный шаг и уже может менять данные |
|
erf, внешний отчёт |
Файл .erf |
Тот же путь, что у обработки |
Метаданные, формы, макеты и схемы компоновки правятся как XML в задаче. В базу они попадают вместе с поставкой расширения или отдельной операцией записи. Появление файла само по себе поведение не подтверждает. Файл охотно появляется и у обработки, которая ещё не закончила работу. Смотрят завершение процесса, атомарную публикацию и идентификатор запуска.
С чего начать
Нужны Windows, PowerShell 7 (pwsh), Python 3.11+ и платформа той версии, что записана в реестре: 8.3.27.2342. «Последнюю установленную» скрипты не угадывают. Лицензии платформы в поставку не входят. Ключ GigaChat лежит в DPAPI адаптера. В репозиторий и в чат его не кладут.
Двойной щелчок по Start-VSCode.cmd поднимает локальный адаптер на 127.0.0.1:8090, открывает workspace и анкету scripts/anketa.py. Из корня технологии то же самое делает командная строка.
.\Start-VSCode.cmd
Повторный щелчок второе окно и второй адаптер не заводит. Если адаптера или ключа нет, окно VS Code не откроется — и это честнее, чем чат, который делает вид, что модель где-то рядом.
Анкета собирает текст команды /start-1c и JSON и копирует их в буфер. Каталог она не создаёт, платформу не стартует, в базу не пишет. Кнопки «записать расширение» на ней нет, и это не забывчивость формы.
В чате выбирают тип сеанса Copilot, агента onec-orchestrator и модель GigaChat. Для координатора в документах рекомендована Ultra.

Схема 1. Вход: от щелчка до чата
Один цикл, без геройства
Человек приносит цель, базу и ограничения. Координатор выбирает вид (cfe, epf или erf) и канонический id базы из реестра .v8-project.json. Неявного выбора «ну, последняя» нет.
Дальше порядок один. /start-1c доводит до задачи и останавливается. Роли выходят по явной фразе или по /orchestra.

Схема 2. Один цикл задачи
- Задача. new-project.ps1 сначала с -WhatIf, потом с -Execute. Каталог появляется только после второго вызова и только внутри projectPath. У задачи свой Git, PROJECT.md и .onec-task.json. Код задачи в репозиторий технологии не копируется.
pwsh -NoLogo -NoProfile -File scripts/new-project.ps1 -WhatIf
pwsh -NoLogo -NoProfile -File scripts/new-project.ps1 -Execute
- Решение до правок. Архитектор записывает в PROJECT.md цель, разрешённые пути, запреты и критерий готовности. Модули и XML трогают после этой записи. Иначе правка есть, а договориться, что считалось успехом, уже поздно.
- Один пакет — один законченный кусок. Разработчик получает бриф: абсолютные пути, что можно менять, чего нельзя, какой результат ждут. Параллельно можно вести только пакеты с разными файлами. Общий предел пакета — 24 000 символов UTF-16. Сверх лимита работу делят. Текст молча не обрезают: обрезанный модуль 1С — отдельный жанр ужасов.
- Проверки. Кодировка, XML, BSL. Код процесса 0 у анализатора ещё не значит, что в отчёте нет диагностики Error. Словесный PASS ошибку не закрывает: на тестовой обработке модель уже ставила зелёную галочку поверх синтаксических дефектов.
- Сначала план, потом запись. -WhatIf показывает, что будет сделано, и возвращает статус preview. -Execute разрешает фактический запуск. В неинтерактивной консоли без этого флага скрипт отказывается. В интерактиве ждёт буквальную строку execute.
- Файл и приёмка. Артефакт принимают по наличию, размеру, runId, SHA-256 и связи с текущими исходниками. Прежние файлы ради нового не удаляют. Для поставленного расширения открывают новый клиентский сеанс: старый мог держать прежнее расширение. Функциональную приёмку делают отдельно, по критериям из PROJECT.md. Сборка её не заменяет.
- Инструкция. Писатель описывает то, что есть в протоколах этого прогона. Непроведённый тест успешным не объявляют.
/start-1c роли не прогоняет. Она готовит задачу. Раздача пакетов начинается с явной фразы человека или с команды /orchestra. Поле «когда звать роль» само никого не будит.
Если поток оборвался, операцию с базой не повторяют вслепую. Сначала смотрят, что уже изменилось и что лежит в протоколе. Потом — новый сеанс и короткий пакет.
Три дороги
Общий цикл выше кончается публичным скриптом. Каким именно — решает вид задачи.

Схема 3. Три вида объекта
Путь E:\\1C\\proj\\Task и база irtest в командах ниже взяты из примеров интерфейсов. Каталог подставляют тот, что создал new-project.ps1. Базу называют её id из реестра.
Расширение. Каркас, заимствование, перехват метода, проверка. В базу — cfe-deploy.ps1 с -Execute. Если расширения ещё нет, создание просят флагом -AllowCreate. В предпросмотре видны стадии: подготовка, осмотр, снимки, загрузка, обновление, настройки, проверка, сборка, публикация. Снимки рабочего и применённого расширения делаются, только если оно уже есть. Ошибка после того, как изменение началось, даёт откат: rolled-back или, если откат сам не удался, rollback-failed. Скрипт сборки внешней обработки для cfe отказывается. Расширение собирает поставка, а не «просто скомпилируй файл».
pwsh -NoLogo -NoProfile -File scripts/cfe-deploy.ps1 -TaskPath 'E:\\1C\\proj\\Task' -WhatIf
pwsh -NoLogo -NoProfile -File scripts/cfe-deploy.ps1 -TaskPath 'E:\\1C\\proj\\Task' -Execute -AllowCreate
Обработка. epf-init кладёт XML и пустой модуль объекта в кодировке Конфигуратора: UTF-8 с BOM и CRLF. Если рядом лежит .project, это уже EDT, и BOM там ошибка.
pwsh -NoProfile -File ".\\.agents\\skills\\epf-init\\scripts\\init.ps1" -Name "<Name>"
Перед сборкой всегда бежит epf-validate, в том числе на -WhatIf. Упал валидатор — чинят исходники, платформу в этом не обвиняют. Файл появляется после build-external.ps1 -Execute. Режим сборки — только чтение, временную базу скрипт не создаёт.
pwsh -NoLogo -NoProfile -File scripts/build-external.ps1 -TaskPath 'E:\\1C\\proj\\Task' -WhatIf
pwsh -NoLogo -NoProfile -File scripts/build-external.ps1 -TaskPath 'E:\\1C\\proj\\Task' -Execute
Запуск run-epf.ps1 — отдельная операция, и она уже может менять данные.
pwsh -NoLogo -NoProfile -File scripts/run-epf.ps1 -Base irtest -Path 'E:\\1C\\proj\\Task\\build\\Task.epf' -CompletionMode AtomicReport -Execute
Для самопроверки есть run-epf-check.ps1: сверка SHA-256, экспортная функция без аргументов, ответ должен совпасть с ожидаемой строкой. Ожидаемый ответ задаёт человек. Имя функции по умолчанию — ВыполнитьПроверку.
pwsh -NoLogo -NoProfile -File scripts/run-epf-check.ps1 -Base irtest -EpfPath 'E:\\1C\\proj\\Task\\build\\Task.epf' -Sha256 '<SHA-256>' -Expected '<точный ответ>' -WhatIf
pwsh -NoLogo -NoProfile -File scripts/run-epf-check.ps1 -Base irtest -EpfPath 'E:\\1C\\proj\\Task\\build\\Task.epf' -Sha256 '<SHA-256>' -Expected '<точный ответ>' -Execute
Отчёт. Тот же файловый путь: каркас, валидатор, сборка, отдельный запуск. Выкладка deploy ждёт вид cfe. Отчёт в расширение этой командой не превращается.
Основная конфигурация по умолчанию закрыта. Запись в неё — отдельная постановка и два флага: -AllowMainConfig и -ConfirmMainConfig с точным id базы. К расширению эти флаги не приписывают.
Кто в чате за что отвечает
Оркестратор — модель текущего чата. Он ведёт постановку, собирает бриф, принимает или возвращает пакет и решает, пора ли звать скрипт. Реализацию за разработчика он не пишет.
|
Кого зовут |
Зачем |
Чем кончается ответ |
|
Архитектор, Ultra |
Новые объекты, поведение, структура |
Решение и критерии. Файлы базы не пишет |
|
Данные, Ultra |
Запросы, регистры, обмен, миграция |
Пакет данных. На остальных задачах его не ждут |
|
Разработчик, Pro |
Один пакет BSL или XML |
Правка разрешённых файлов задачи. В базу не ходит |
|
QA, Lightning |
Каждое изменение поведения |
Сценарии и разбор протоколов |
|
Безопасность, Pro |
Права, привилегированный режим, внешние вызовы, файлы |
Список рисков. Расширение не выкладывает |
|
Писатель, Lightning |
Когда протоколы уже есть |
Инструкция по этому прогону |
completed у роли значит только «ответ закончен». accepted ставит приёмка снаружи. Путать эти два слова — верный способ объявить победу на середине пути.
Есть короткий маршрут без полного цикла: разведчик только читает, прямой исполнитель правит разрешённые файлы, проверяющий смотрит поведение и риски. Это другие роли. Прямой исполнитель — не разработчик типового цикла, даже если оба умеют править BSL.
Модель роли при сбое молча не подменяют. Если чат говорит model not available, хотя модель в списке есть, в вызов передают явное имя. Подставить «ту, что ответила» запрещено: в журнале потом не разберёшь, кто считал сумму.
Что сказать своими словами
В чат кладут короткую постановку, а не всю историю конфигурации.
Постановка: внешняя обработка, база uttest. Печатная форма счёта. Менять только файлы новой задачи. Готово, когда epf-validate проходит, файл собран, а ВыполнитьПроверку возвращает ожидаемую строку. В базу без моего -Execute не ходить.
Имена баз берут из реестра. В материалах переноса фигурируют irtest, zirtest и uttest. Запись в реестре означает, что база описана. Она не означает, что сегодняшний прогон её уже трогал.
Команды чата короткие и разной силы.
|
Команда |
Зачем она человеку |
|
/start-1c |
Начать или продолжить задачу |
|
/orchestra |
Раздать пакеты ролям |
|
/review-1c |
Посмотреть BSL, XML и поставку по затронутым стандартам |
|
/analiz-bsl |
Разобрать отчёт BSL Language Server, если он уже установлен |
|
/run-epf-test |
Собрать обработку и явно запустить проверку |
BSL Language Server в Git не лежит. Его ставят отдельно. Сценарий анализа сам ничего не скачивает. Он либо находит инструмент, либо честно предупреждает.
pwsh -NoLogo -NoProfile -File scripts/install-bsl-ls.ps1 -Download
Где обычно спотыкаются
|
Что видите |
Что это значит |
|
Окно VS Code не открылось |
Нет адаптера или ключа DPAPI |
|
«Отказ: требуется явный -Execute» |
План уже можно смотреть. Запись ещё не разрешена |
|
«База занята другим процессом» |
На этом Windows-хосте базу держит другой запуск. Ждать, а не открывать второй Конфигуратор «на всякий случай» |
|
Сборка обработки падает ещё на -WhatIf |
Валидатор не пустил исходники. Платформа тут ни при чём |
|
После поставки в клиенте старое расширение |
Нужен новый сеанс. Потом читают result.json |
|
Файл отчёта есть, а обработка ещё шла |
Смотреть код процесса, атомарное переименование и runId |
|
В отчёте стоимости «ставка не опубликована» |
У Pro и Lightning в прайсе технологии платной строки нет. В сумму такую модель не включают |
Пароли базы живут в локальном файле рядом с профилем и в Git не коммитятся. Журналы на экран сами не вываливаются: их читают фрагментами из каталога out.
Конфигуратор, открытый руками, эту границу не чувствует. Технология сторожит свои скрипты. Она не стоит у вас за спиной, пока вы правите базу мышью.
Короткий итог
VPN для работы не нужен. Использовать можно любые модели, поддерживаемые VS Code.
Откройте Start-VSCode.cmd. Положите в чат цель, базу и критерий. Дождитесь задачи со своим Git и решения в PROJECT.md. Правьте пакетами. Смотрите -WhatIf. Разрешайте -Execute, когда план вас устраивает. Принимайте файл по runId и хешу, поведение — отдельным прогоном, расширение — в новом сеансе.
Чат остаётся собеседником. Базу меняет операция, которую вы сами разрешили. Между этими двумя ролями технология и держит дистанцию — ту самую, которой обычно не хватает в момент, когда модель уже написала «готово».
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.