extensions
Посмотрите состав расширений, установленных в базе.
Примеры ответов; пути и длительность зависят от запуска.
extensions list 
v8-runner extensions list
состав установленных расширений и их свойства: активность, безопасный режим, защита от опасных действий (44)
Свойства отдаёт агент. Конфигуратор на кластере перечисляет только имена: запись содержит name, а status --deep показывает у такого расширения active: null. Остальные действия с расширениями Конфигуратор не выполняет: отказ называет агента.
Классы ответов
Классы относятся ко всем вариантам этой команды; условия отдельных ключей указаны в строках. Примеры ниже показывают форму ответа, а не все сочетания настроек.
| Класс | Когда возникает и что означает |
|---|---|
| Состав расширений прочитан | extensions содержит записи; это чтение, а не установка расширений. |
| Список пуст | В успешном чтении extensions: [] означает отсутствие расширений. Для запрошенного имени «не найдено» — отказ. |
| Чтение запланировано | provider_dispatched: false; пустой список превью не доказывает отсутствие расширений в базе. |
| Состав получить не удалось | Неверное имя, недоступный исполнитель/база, ошибка платформы, разбора ответа или отсутствие запрошенного расширения; данные отказа содержат message. |
| Свойства обновлены или шаги выполнены не все | При изменении свойств возвращается другая форма: steps, их ok и сообщения. Состав не подменяет результат изменения. |
| Операция прервана | Отмена или таймаут. |
Причины отказов и различия между ошибкой команды, ошибкой шага и диагностикой запуска — в словаре ответов.
Варианты ответа
Операция завершилась успешно
Фрагмент успешного текстового ответа:
extensions: none
В базе нет расширений
Это успешное чтение всего состава, не preview и не ошибка поиска отдельного имени.
count: 0
Extensions listed successfully
Запрошенное расширение не найдено
Для чтения конкретного имени пустой список не подставляется вместо ошибки.
ERROR: invalid output: platform reported an extension inventory without the requested 'sales'
extensions list --dry-run 
v8-runner extensions list --dry-run
Превью проверяет настройки и доступность исполнителя. Платформа не запускается; база и выходные файлы не меняются. Без --dry-run выполняется указанная операция.
Варианты ответа
План чтения состава подготовлен
Успех превью подтверждает подготовку плана, а не выполнение операции. Фрагмент текстового ответа:
would read every installed extension of file infobase 'build/ib' with no configured infobase user via /opt/1cv8/bin/ibcmd
Расширения — ссылки на той стороне
У конфигурации и у каждого расширения своя пара «основная ↔ база данных» (8, 41). Значит база держит несколько независимых ссылок, и указание ссылки — обычный довод команды.
v8-runner push все наборы исходников
v8-runner push main только конфигурацию
v8-runner push my-ext только расширение
v8-runner pull --all и расширения, которых в проекте ещё нет
Имя здесь и имя там — разные имена
Набор исходников называется так, как удобно проекту: это псевдоним, как origin. Расширение в базе называется так, как записано в его Configuration.xml, вместе с префиксом имён и назначением (36), и в базе это имя уникально (37). Объявлять соответствие в конфигурации не нужно: раннер читает имя из исходников.
source-set:
- name: my-ext # псевдоним в проекте
type: extension
path: src/ext # в src/ext/Configuration.xml: Name, NamePrefix, назначение
Платформе имя, префикс и назначение нужны при заведении расширения (35). Раз они лежат в Configuration.xml, отправка создаёт отсутствующее расширение сама (39), как git push -u создаёт отсутствующую ветку. Отдельной команды «создать расширение» нет: создание — следствие первой отправки.
У расширения в базе без проекта есть имя
Расширение, установленное в базе и отсутствующее в проекте, — обычное состояние: его мог поставить кто-то другой или оно пришло с обновлением. status --deep показывает его так же, как гит показывает ветку, за которой никто не следит: с прочерком слева. pull --all выгружает и такие расширения: для каждого заводится набор src/ext/<имя> и запись в v8project.yaml, как git fetch заводит ссылку на новую ветку.