Skip to content

1С: Инструменты

Команды выполняются задачами VS Code, а не в терминале.

Основное дерево команд в activity bar — 1С: Инструменты. Появляется после открытия проекта 1С (каталог с packagedef).

Дерево команд «1С: Инструменты»

Разделы дерева

  • Информационные базы — создание, обновление, загрузка/выгрузка DT, инициализация данных.
  • Конфигурация — загрузка и выгрузка исходного кода, работа с 1Cv8.cf, инкрементальная загрузка/выгрузка, сборка и разбор. Загрузка из исходного кода есть в двух видах: только в основную конфигурацию и сразу с обновлением конфигурации БД; обновление БД отдельно — «Обновить конфигурацию в ИБ».
  • Расширения — загрузка и выгрузка исходного кода расширений, работа с *.cfe, сборка и разбор.
  • Внешние файлы — сборка и разбор epf/erf, очистка кэша.
  • EDT — стоит перед Поддержкой: у выгрузки конфигуратора в ней импорт в проект EDT, у проекта EDT выгрузка в XML, форматирование, сортировка и сведения. Запуск EDT стоит в группе Запуск рядом с Предприятием и Конфигуратором, проверка проекта — в группе Тестирование. Подписи команд одни для обоих форматов: «исходный код» это каталог выгрузки у конфигуратора и сам проект у EDT. У проекта EDT скрыты только загрузка по списку объектов и по приращению, они считаются по файлам выгрузки.
  • Тестовое окружение — то, чем тестируют, а не поставляют: тестовые расширения из tests/cfe (см. Тестовые расширения) и сборка/разбор unit тестов из tests/epf.
  • Поддержка и Поставка — команды поддержки конфигурации и подготовки файлов поставки.
  • Зависимости — инициализация packagedef, структуры проекта, Git, OneScript, OPM и зависимостей.
  • Служебные файлы — создание .gitignore, .gitattributes, основного профиля запуска и файлов tools/* (service-files.md).
  • Сеансы — запрет и разрешение начала сеансов, завершение сеансов, проверка их отсутствия, запрет и разрешение регламентных заданий (см. Сеансы информационной базы).
  • Автоматизация — пайплайны и хуки команд, см. Автоматизация.
  • Запуск, Тестирование, Установить версию, Конфигурации запуска, Навыки для AI, Помощь и поддержка.

Панель состоит из двух плашек: Команды (дерево команд) и Помощь и поддержка. В поддержке есть Скопировать сводку окружения: в буфер попадают ОС, редактор, версии расширения и MCP, OneScript, скачанные компоненты, платформа и состояние IPC — без паролей и токенов. Тот же пункт есть в остальных контейнерах.

Активный профиль запуска выбирается в статусной строке (слева) и подставляется во все команды vrunner.

Сеансы информационной базы

Группа Сеансы готовит базу к обновлению: закрывает вход, завершает оставшиеся сеансы и проверяет, что база свободна. Команды работают через утилиты кластера rac и ras.

КомандаЧто делает
Запретить начало сеансовНовые сеансы не начинаются; задаются сообщение пользователю и код допуска
Разрешить начало сеансовСнимает запрет
Запретить регламентные заданияОстанавливает выполнение заданий: запрет входа сам по себе их не гасит
Разрешить регламентные заданияВозвращает выполнение заданий
Завершить сеансыЗавершает активные сеансы; по умолчанию заодно запрещает начало новых
Проверить отсутствие сеансовЗавершается ошибкой, если сеансы найдены
Показать сеансыСписок сеансов с приложением, пользователем, компьютером и временем; только 3.x

Параметры подключения задаются в профиле запуска, а не в настройках расширения. Внутри файла блок команды приоритетнее блока default, а сама утилита rac находится по версии платформы автоматически.

Для vanessa-runner 2.x в env.json (или env.<профиль>.json):

json
"session": {
    "--ras": "srv:1545",
    "--db": "erp",
    "--cluster-admin": "ClusterAdmin",
    "--cluster-pwd": "пароль",
    "--uccode": "код-допуска"
},
"scheduledjobs": {
    "--ras": "srv:1545",
    "--db": "erp"
}

Для 3.x в autumn-properties.json те же параметры лежат в общей секции кластера:

json
{
  "vrunner": {
    "cluster": {
      "ras": "srv:1545",
      "db-name": "erp",
      "cluster-admin": "ClusterAdmin",
      "cluster-pwd": "пароль"
    }
  }
}

Пароль администратора кластера и код допуска можно не хранить в файле: vanessa-runner читает их из переменных окружения RUNNER_CLUSTERADMIN_USER и RUNNER_CLUSTERADMIN_PWD (в 3.x - VRUNNER_CLUSTERADMIN_*).

Команды работают с серверной базой: у файловой кластера нет, о неприменимости сообщит сам vanessa-runner.

Возможности зависят от версии vanessa-runner: в 2.x нет списка сеансов, в 3.x нет времени начала и окончания блокировки, она применяется сразу. О недоступном действии команда сообщает до запуска. Регламентные задания работают в обеих версиях.

Отбор сеансов задаётся одинаково для обеих версий, записью 2.x: appid=Designer;1CV8|name=рег1;рег2. Значения внутри условия перечисляются через точку с запятой, условия объединяются по ИЛИ. Для 3.x расширение раскладывает эту запись на опции --filter-app и --filter-name, а режим EXCEPT превращает во флаг инверсии. Режимы DEFAULT и ALL есть только в 2.x: в 3.x аналога нет, и команда об этом скажет, а не отбросит отбор молча.

Завершение сеансов в 3.x проверяет результат: rac завершает сеансы асинхронно, поэтому vanessa-runner перечитывает список и добивает зависшие. Число попыток задаётся параметром sessionRetry (по умолчанию три), а sessionTimeout заставляет повторять до успеха или до истечения времени. Проверка отсутствия сеансов с sessionTimeout ждёт, пока фоновые задания сами доработают.

При вызове агентом можно задать параметры разового запуска, не трогая профиль: lockMessage, accessCode, lockStart, lockEnd, sessionFilter, sessionFilterMode, keepSessionsUnlocked, sessionRetry, sessionTimeout и sessionConnections.

Выбор расширений для команд

Команды группы Расширения (загрузка и выгрузка исходников и *.cfe, загрузка из objlist.txt, обновление в ИБ, сборка, разбор), а также Установить версию → Расширения работают не со всеми найденными расширениями, а с выбранным подмножеством. Это удобно, когда в проекте много расширений, а разработка идёт по нескольким: не нужно ждать, пока отработают все.

Тестовые расширения в этот выбор не входят: у них своя память выбора и своя настройка 1c-platform-tools.test.cfe.selected, работает она так же. Исключение Установить версию → Расширения: версия нужна и тем, и другим, поэтому окно показывает все расширения проекта.

Источник выбора определяется так:

  1. Настройка 1c-platform-tools.cfe.selected. Если в settings.json задан список расширений — команды используют его без окна выбора. Расширение называют именем его каталога, путём к каталогу от корня проекта или именем из метаданных; регистр не важен, названные, которых в проекте нет, пропускаются.
  2. Интерактивный выбор. Если настройка пуста, при запуске команды показывается выпадающий список с чекбоксами по найденным расширениям:
    • изначально отмечены все;
    • снятый выбор запоминается для проекта (локально, не коммитится) и подставляется при следующем запуске любой команды расширений;
    • если оставить отмеченными все — выбор сбрасывается, и новые расширения подхватываются автоматически.

Собранные *.cfe зовутся по каталогу расширения, поэтому команды над файлами (загрузка и разбор *.cfe) подчиняются тому же выбору: файл МоёРасширение.cfe и каталог МоёРасширение для выбора одно и то же расширение.

Пример .vscode/settings.json — команды будут работать только с этими двумя расширениями, без окна выбора:

jsonc
{
  "1c-platform-tools.cfe.selected": [
    "РасширениеПоЗарплате",
    "РасширениеПоБюджетированию"
  ]
}

Пустой список ([]) или отсутствие настройки возвращает интерактивный выбор.

Запуск команд: задачи VS Code

По умолчанию команды vanessa-runner и opm (установка зависимостей, запуск oscript-задач), установка OneScript и сборка Allure-отчёта выполняются как задачи VS Code (Tasks). Это даёт:

  • «Rerun Last Task». Последний запуск повторяется командой палитры Tasks: Rerun Last Task (по умолчанию без хоткея, можно назначить свой).
  • Запуск из списка задач и tasks.json. Команды видны в Tasks: Run Task, их можно вынести в tasks.json, навесить хоткей или включить в составную задачу.
  • Единый статус и вывод. Прогон идёт в панели задачи; вывод виден полностью, задачу можно остановить (она завершает всё дерево процессов cmd → oscript → 1cv8). Отключить и вернуться к обычному интерактивному терминалу можно настройкой 1c-platform-tools.execution.useTasks: false.

Сигнал о завершении

Когда команда закончилась, расширение подаёт короткий звук и пишет исход в строку состояния: Загрузка конфигурации: готово за 2 мин 15 с либо Синтаксический контроль: ошибка, код 1 (5 с). Успех и ошибка звучат по-разному, подробности остаются в журнале расширения. Пайплайн сообщает о себе один раз, по итогу всей цепочки («готово за 4 мин, шагов 6» или «ошибок 1 из 6»), отдельные шаги молчат.

  • 1c-platform-tools.notifications.onCommandFinishalways (по умолчанию), onError или never.
  • 1c-platform-tools.notifications.sound — звук, по умолчанию включён.

Звук берётся из системы: на Windows - звуковая схема («Звуковое уведомление» и «Критическая ошибка»), на macOS - afplay со стандартными звуками, на Linux - paplay со звуковой темой freedesktop. Если проигрывателя или звуковой темы в системе нет, сигнал молча пропускается, строка состояния и журнал остаются.

Сигнал приходит для команд, запущенных задачами VS Code. При execution.useTasks: false расширение о завершении не знает: команда живёт в интерактивном терминале.

Свои задачи в tasks.json

Команды vrunner можно описывать вручную в .vscode/tasks.json (тип 1c-vrunner):

jsonc
{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "1c-vrunner",
      "command": "vanessa",
      "args": ["--settings", "env.json"],
      "label": "1С: Прогнать Vanessa",
      "group": "test"
    },
    {
      "type": "1c-vrunner",
      "command": "compile",
      "args": ["--src", "src/cf"],
      "label": "1С: Собрать конфигурацию"
    }
  ]
}

Запуск — Tasks: Run Task → выбрать задачу. Поле command — это команда vrunner (vanessa, compile, syntax-check, init-dev и т.д.), args — её аргументы.

Клики по путям в выводе

В выводе команд пути кликабельны: клик открывает исходник, а если рядом указан номер строки, курсор встаёт на неё.

Разбираются три записи:

  • путь к файлу с номером строки или без: Catalogs/Валюты/Ext/ObjectModule.bsl:12, ./features/Валюты.feature;
  • сообщение OneScript вида Модуль <путь>.os / Ошибка в строке: 188;
  • путь по метаданным: HTTPСервис.Биллинг.Модуль, в конце может стоять номер строки в скобках.

Путь по метаданным ищется в текущем проекте: в конфигурации, в расширениях и в остальных найденных в нём конфигурациях. Формат исходников берётся у каждого каталога, поэтому в проекте могут лежать и выгрузка конфигуратора, и проект EDT.

Установка OneScript

Команда Установить OneScript в разделе Зависимости ставит выбранную версию через OVM: сам ovm.exe расширение загружает и обновляет как внешний компонент.

Какая установка OneScript используется

Когда установок несколько, порядок такой:

  1. настройка 1c-platform-tools.components.path.oscript, если задана;
  2. установка OVM (%LOCALAPPDATA%\ovm\current\bin);
  3. oscript из PATH.

Установка OVM идёт раньше PATH намеренно. Windows склеивает PATH как системная часть плюс пользовательская, а OVM прописывается в пользовательскую, поэтому каталог другой установки почти всегда оказывается раньше. Каталог выбранной установки подставляется первым в PATH: и дочерним процессам расширения, и новым терминалам. Без этого обёртки opm.bat и vrunner.bat, которые запускают oscript по имени, увели бы работу в чужую установку.

После установки OneScript расширение перечитывает выбор само, перезапускать VS Code не нужно. Уже открытых терминалов правка PATH не касается: их окружение задано при запуске.

Какая установка выбрана, видно в журнале расширения (Output1C: Platform Tools) строками вида oscript: используется установка OVM.

Сам OVM тоже идёт за дистрибутивом в сеть, поэтому на закрытой машине OneScript ставится переносимой сборкой: OneScript без прав администратора.

Загрузка и обновление конфигурации БД

Загрузка исходников и применение их к конфигурации БД (UpdateDBCfg) — разные действия: первое меняет основную конфигурацию, второе переносит код и структуру в базу. Обновление вынесено в отдельную команду 1С: Обновить конфигурацию в ИБ, но оба vanessa-runner умеют сделать и то, и другое одним запуском конфигуратора, поэтому команды загрузки спрашивают об этом до старта.

Постоянный ответ задаётся настройкой 1c-platform-tools.cf.load.updateDb:

ЗначениеПоведение
ask (по умолчанию)спрашивать при запуске команды
alwaysвсегда обновлять конфигурацию БД тем же запуском
neverтолько загружать

Настройка действует на загрузку из исходного кода, из 1Cv8.cf, по objlist.txt и на загрузку расширений.

Вопрос задаётся только тому, кто запускает команду руками. Агент, MCP, шаг пайплайна и хук вопроса не получают: значение ask означает для них загрузку без обновления, а нужное поведение задаётся параметром updateDb в параметрах вызова.

На vanessa-runner 2.x загрузка изменений (git diff) без обновления конфигурации БД невыразима: список изменённых файлов собирает сама команда update-dev вместе с обновлением. В этом случае исходники загружаются целиком, о чём расширение сообщает замечанием; на 3.x ограничения нет.

Избранное и палитра

  • Часто используемое добавьте в избранное: 1С: Инструменты → Избранное — раздел «Избранное» появится вверху дерева. В списке кроме команд есть цепочки проекта и задачи oscript.
  • Все команды доступны из палитры (Ctrl+Shift+P → введите «1C»).

Скрытие групп

Ненужные группы дерева Команды можно скрыть: кнопка-глаз в шапке плашки (справа от «Избранного») открывает список групп с чекбоксами — снимите отметку, чтобы скрыть. Когда что-то скрыто, значок меняется на перечёркнутый глаз.

Выбор хранится на пользователя (не в settings.json проекта). «Избранное» не затрагивается: закреплённые команды остаются видны независимо от скрытых групп.

Уведомления

Рутинные подтверждения (дерево обновлено, файл создан, свойства сохранены) показываются в строке состояния и исчезают сами; полный след остаётся в журнале расширения (Выходные данные → «1C: Platform Tools»). Всплывающие окна оставлены для ошибок, предупреждений и сообщений с кнопками.

Доверие к папке

В режиме ограниченной функциональности расширение не запускает процессы: команды 1С, установку OneScript и компонентов, Docker и автономный сервер. Панели, дерево команд и просмотр метаданных работают. После того как папке доверили, деревья перечитываются и команды выполняются обычным образом.

Настройки, которые ведут к исполняемым файлам (vrunner.path, components.path.oscript, пути платформы, docker.image и подобные), в недоверенной папке берутся не из проекта, а из пользовательских: иначе открытая папка могла бы подменить запускаемую программу.

Раскладка проекта

Каталоги исходного кода настраивать не нужно: расширение находит конфигурацию, её расширения, внешние обработки и отчёты само, в любом месте проекта и в обоих форматах. Раскладка может быть любой, в том числе с расширением в отдельном репозитории внутри каталога расширений.

Тестовое от поставляемого отличается местом: всё, что лежит под каталогом тестов, считается тестовым и идёт своими командами. Имя каталога задаёт настройка 1c-platform-tools.test.directoryName, по умолчанию tests.

В поиск не попадают каталог результатов сборки и то, что перечислено в artifacts.exclude. Пока исходного кода в проекте нет, команды загрузки и сборки отвечают сообщением, а команды, которые исходный код создают, предлагают привычные места.

Проекты в рабочей области

Проект 1С это каталог с файлом packagedef: папка рабочей области или каталог внутри неё. В одном окне проектов бывает несколько, и у каждого свои профили запуска, база, .1cpt, oscript_modules и каталог сборки.

В проекте одна конфигурация. Всё остальное в его каталоге относится к ней: расширения, тестовые расширения, внешние обработки и отчёты, тестовые обработки. Каталог со своим packagedef и своей конфигурацией внутри проекта это подпроект: в виде Рабочая область он стоит под родителем, а его расширения, кроме тестовых, есть и у родителя. Каталог с packagedef без своей конфигурации, например репозиторий расширения, внешней обработки или пакет OneScript, остаётся частью проекта. Пока окно открыто, это решение меняется, только когда в каталоге появляется или удаляется packagedef: выгрузка, которая на время очистила каталог, его не меняет.

Вторую конфигурацию без своего packagedef проект не берёт: она помечена предупреждением, и Сделать отдельным проектом кладёт ей packagedef рядом с src выгрузки конфигуратора или в каталог проекта EDT. Папки с исходным кодом, но без packagedef, собраны в группу Не проекты, проектом их делает Инициализировать проект.

Текущий проект

Команды, дерево метаданных, тесты и профиль запуска работают с текущим проектом. Его выбирают в виде 1С: Проекты › Рабочая область, в списке из строки состояния, кнопкой Выбрать проект в заголовке деревьев команд и метаданных или командой 1С: Проект: Выбрать проект. Открытый редактор проект не переключает: команда над файлом или узлом дерева выполняется в его проекте, а текущий остаётся прежним.

Выбор запоминается для окна и в репозиторий не попадает. Пока в окне ничего не выбрано, текущим считается проект из настройки 1c-platform-tools.project.default (абсолютный путь, путь от первой папки рабочей области или имя папки), а без неё первый проект по порядку папок.

Смена проекта перестраивает дерево команд, дерево метаданных и тесты, переключает профиль запуска и базу без перезагрузки окна. Артефакты и список дел показывают все проекты сразу, текущий первым.

Настройки путей, тестов, сервера и выбора расширений берутся из настроек папки рабочей области, в которой лежит проект, поэтому у подпроекта они общие с родителем.

Агент через MCP получает список проектов, переключает текущий и делает проектом каталог без packagedef. Команда, вызванная с projectPath, выполняется в указанном проекте и выбор пользователя не меняет.

Настройки

  • 1c-platform-tools.path.out, 1c-platform-tools.path.dist — каталоги результатов сборки и шаблонов поставки. Каталоги исходного кода не настраиваются: расширение находит их само, см. Раскладка проекта.
  • 1c-platform-tools.project.default — проект, текущий по умолчанию, см. Текущий проект.
  • 1c-platform-tools.cfe.selected — список расширений (имя каталога, путь от корня проекта или имя расширения, регистр не важен), с которыми работают команды группы «Расширения» и установка версии расширений. Пусто — интерактивный выбор с запоминанием, см. Выбор расширений для команд.
  • 1c-platform-tools.test.cfe.selected — то же для тестовых расширений.
  • 1c-platform-tools.test.directoryName — имя каталога тестов, по умолчанию tests: всё под ним считается тестовым.
  • 1c-platform-tools.vrunner.* — путь и параметры vanessa-runner; по умолчанию используется oscript_modules/bin/vrunner.bat проекта, если он есть.
  • 1c-platform-tools.execution.useTasks — запускать команды как задачи VS Code (Rerun Last Task, запуск из списка задач); по умолчанию true. false — обычный интерактивный терминал.
  • 1c-platform-tools.notifications.onCommandFinish, 1c-platform-tools.notifications.sound — сигнал по завершении команды, см. Сигнал о завершении.
  • 1c-platform-tools.docker.* — выполнение команд в контейнере с платформой, см. Docker и ibcmd.
  • 1c-platform-tools.components.* — пути к внешним компонентам и их автозагрузка, включая выбор oscript.exe; см. Внешние компоненты.
  • Выполнение в Docker — docker.md.

Распространяется по лицензии MIT.