Интерфейс командной строки 1C:EDT (1C:EDT CLI)

Предупреждение: Интерфейс командной строки 1C:EDT CLI не следует использовать с рабочими областями, созданными версиями 1C:EDT, младше чем 2023.1.0.
Возможная проблема: Для использования 1C:EDT CLI нужно обладать правами администратора.
Приложение для запуска 1C:EDT CLI:

Приложение находится в каталоге исполняемых файлов 1C:EDT.

Возможная проблема: Первый запуск 1C:EDT CLI может занять около 25 секунд.
Существует три режима запуска интерфейса:

Опции

Опции командной строки можно указывать в любом порядке, кроме:
  • -command — эта опция должна быть последней, так как все, что идет после нее, трактуется как команда;
  • -vmargs — эта опция должна идти перед -command (либо быть последней, если -command не используется), так как все, что идет после нее и до -command трактуется как аргументы JVM.

Можно использовать следующие опции:

Интерактивный режим

Чтобы запустить 1C:EDT CLI в интерактивном режиме, после 1cedtcli укажите опцию -data — расположение рабочей области. Например:

1cedtcli -data D:\projects\МойПроект 

В результате в интерпретаторе командной строки вы увидите приглашение 1C:EDT>. После этого можно вводить команды 1C:EDT CLI.

Выполнение одной команды

Чтобы выполнить одну команду, после 1cedtcli укажите:
  1. Опцию -data — расположение рабочей области и
  2. Опцию -command — выполняемую команду вместе с ее аргументами.
Например:
1cedtcli -data D:\projects\МойПроект -command clean-up-source --project-name Демо_EDT

Выполнение последовательности команд

Для выполнения последовательности команд можно использовать скрипты. Подробнее о скриптах читайте здесь.

Команды

build
Очищает и пересобирает все или некоторые проекты. Является аналогом интерактивной команды Проект > Очистить.... Имеет один необязательный аргумент:
  • --yes — если этот аргумент имеет значение true или значение не указано, то 1C:EDT пересобирает все проекты, находящиеся в рабочей области.
    build --yes
    Если этот аргумент имеет значение false или этот аргумент не указан, то будет запрошено подтверждение пересборки всех проектов:
    1C:EDT> build
    Пожалуйста, подтвердите сборку следующих проектов:
      pr24
      pr24.ВесТоваров
      pr24.Колонтитулы
    Действительно собрать? (y/n; по умолчанию=n)
    Если после этого аргумента перечислены имена проектов, то будут пересобраны только эти проекты:
    build --yes [pr24 pr24.Колонтитулы]
cd
Отображает или изменяет текущий рабочий каталог. Имеет один необязательный аргумент:
  • "строка" — каталог, который нужно установить в качестве текущего рабочего. Если этот аргумент указан, то команда меняет текущий рабочий каталог на указанный:
    cd /path/to/new/working/directory
    Если аргумент пропущен, то команда выводит текущий рабочий каталог:
    cd
clean-up-source

Оптимизирует формат хранения данных проекта. Имеет один из следующих обязательных аргументов:

  • --project — путь к каталогу проекта 1C:EDT, формат хранения данных которого нужно оптимизировать.
    Если этот проект не импортирован в рабочую область, переданную в параметре -data, то перед оптимизацией формата хранения данных проекта будет выполнен импорт этого проекта в рабочую область;
  • --project-name — имя проекта 1C:EDT, формат хранения данных которого нужно оптимизировать;
Например:
clean-up-source --project-name Демо_EDT
delete
Удаляет все или некоторые проекты. Имеет один необязательный аргумент:
  • --yes — если этот аргумент имеет значение true или значение не указано, то 1C:EDT удаляет все проекты, находящиеся в рабочей области.
    delete --yes
    Если этот аргумент имеет значение false или этот аргумент не указан, то будет запрошено подтверждение удаления всех проектов:
    1C:EDT> delete
    Пожалуйста, подтвердите удаление следующих проектов:
      pr24
      pr24.ВесТоваров
      pr24.Колонтитулы
    Действительно удалить? (y/n; по умолчанию=n)
    Если после этого аргумента перечислены имена проектов, то будут удалены только эти проекты:
    delete --yes [pr24 pr24.Колонтитулы]
exit

Выйти из интерактивного режима командной строки. Имеет необязательные аргументы:

  • --yes — если этот аргумент имеет значение true или значение не указано, то выход будет без подтверждения.
    exit --yes
    Если этот аргумент имеет значение false или этот аргумент не указан, то будет запрошено подтверждение выхода:
    1C:EDT> exit
    Вы действительно хотите выйти? (y/n; по умолчанию=y)
  • --status — код возврата;
export

Экспортирует проект 1C:EDT в .xml-файлы конфигурации. Имеет следующие аргументы:

  • Один из следующих обязательных аргументов:
    • --project — путь к каталогу проекта 1C:EDT, который нужно экспортировать.
      Если этот проект не импортирован в рабочую область, переданную в параметре -data, то перед экспортом проекта в .xml-файлы конфигурации будет выполнен импорт этого проекта в рабочую область;
    • --project-name — имя проекта 1C:EDT, который нужно экспортировать;
  • --configuration-files — обязательный аргумент. Каталог, в который следует поместить .xml-файлы конфигурации;
Например:
export --project D:\Демо_EDT --configuration-files D:\xml-files
format-modules
Форматирует все модули встроенного языка в соответствии с настройками форматирования. Имеет один из следующих обязательных аргументов:
  • --project — путь к каталогу проекта 1C:EDT. Если этот проект не импортирован в рабочую область, переданную в опции -data, то перед форматированием модулей будет выполнен импорт этого проекта в рабочую область.
    format-modules --project D:\Демо_EDT
  • --project-name — имя проекта 1C:EDT, модули которого нужно отформатировать.
    format-modules --project-name Демо_EDT
help

Выводит список доступных команд. Например:

help
Чтобы получить справку по конкретной команде, введите ее имя после help. Например:
help install-platform-support
import
  1. Импортирует проект 1C:EDT в рабочую область. Имеет обязательный аргумент:
    • --project — путь к каталогу проекта 1C:EDT, который нужно импортировать;
    Например:
    import --project D:\Демо_EDT
  2. Импортирует .xml-файлы конфигурации в проект 1C:EDT. Имеет следующие аргументы:

    • --version — необязательный аргумент. Версия платформы «1С:Предприятия», которая будет назначена создаваемому проекту. Например, 8.3.22. Если версия не задана, то она будет определена по предоставленной версии .xml-файлов конфигурации;
    • --base-project-name — имя базового проекта. Допустимо только для проектов расширений или для проектов внешних отчетов и обработок;
    • --configuration-files — обязательный аргумент. Каталог, содержащий .xml-файлы конфигурации;
    • --build — если этот аргумент имеет значение true, то команда дождется сборки проекта и следующая команда import п.1 сможет импортировать этот проект в рабочую область;
    • Один из следующих обязательных аргументов:
      • --project — путь к каталогу проекта 1C:EDT, в который следует импортировать .xml-файлы.
        Если каталог уже содержит какие-то файлы, то новые файлы будут добавлены к существующим.
        Если этот проект не импортирован в рабочую область, переданную в параметре -data, то перед импортом в него .xml-файлов конфигурации будет выполнен импорт этого проекта в рабочую область;
      • --project-name — имя проекта 1C:EDT, в который следует импортировать .xml-файлы. Если такой проект уже существует в рабочей области, переданной в параметре -data, то будет выдана ошибка.

    Например:

    import --configuration-files D:\xml-files --project D:\Демо_EDT
    import --base-project-name Демо_EDT --configuration-files D:\xml-files --project D:\Демо_EDT.ВесТоваров 
    import --version 8.3.24 --base-project-name Демо_EDT --configuration-files D:\xml-files --project D:\Демо_EDT.ВесТоваров 
install-platform-support

Устанавливает поддержку платформы «1С:Предприятие» указанной версии. Имеет обязательный аргумент:

  • --version — версия платформы, поддержку которой нужно установить;
Например:
install-platform-support --version 8.3.10
platform-versions

Сообщает список версий платформы «1С:Предприятие», которые поддерживаются данной средой разработки. Например:

1C:EDT> platform-versions
8.3.21
8.3.22
8.3.23
8.3.24
project
Выводит информацию по всем или по нескольким проектам. Имеет один необязательный аргумент:
  • --details — если этот аргумент имеет значение true или значение не указано, то 1C:EDT выводит информацию по всем проектам, находящимся в рабочей области.
    1C:EDT> project --details
    Имя: pr24
    Содержимое: C:\Users\Test\AppData\Local\1C\1cedtstart\projects\pr24\pr24
    Имя: pr24.ВесТоваров
    Содержимое: C:\Users\Test\AppData\Local\1C\1cedtstart\projects\pr24\pr24.ВесТоваров
    Имя: pr24.Колонтитулы
    Содержимое: C:\Users\Test\AppData\Local\1C\1cedtstart\projects\pr24\pr24.Колонтитулы
    Если этот аргумент имеет значение false или этот аргумент не указан, то будет выведен простой список всех проектов:
    1C:EDT> project
    pr24
    pr24.ВесТоваров
    pr24.Колонтитулы
    Если после этого аргумента перечислены имена проектов, то будет показана информация только по этим проектам:
    project --details [pr24 pr24.Колонтитулы]
script
Выводит список доступных скриптов, показывает информацию о скрипте, загружает один или несколько скриптов.
  • Отображение списка доступных скриптов.
    1C:EDT> script
    my-script
  • Вывод информации о скрипте. Команда имеет следующие аргументы:
    • "строка" — обязательный аргумент. Имя скрипта.
      1C:EDT> script my-script
      Имя: ms:my-script
      Поставляемый: да
      Поставщик: com.e1c.g5.v8.dt.library
      Путь: script/my-script.1cedtcli
    • --content — необязательный аргумент. Если этот аргумент имеет значение true или значение не указано, то будет показано содержимое файла скрипта.
      1C:EDT> script my-script --content
      
      # Скрипт приветствует пользователя. 
      # 
      # Использование: 
      #    hello "имя" 
      # Аргументы: 
      #    имя - имя пользователя. Если не задано, приветствует мир. 
      # 
      # Дополнительно скрипт распечатывает свое расположение. 
      
      name = мир
      if { $1 } {
         name = $1 
      }
      
      echo Привет, $name! 
      echo Расположение скрипта: $0
  • Загрузка скриптов. Команда имеет следующие аргументы:
    • --load — обязательный аргумент. Либо скрипт для загрузки, либо каталог для загрузки скриптов.
      1C:EDT> script --load "C:\Users\test\cli-scripts\hello.1cedtcli" 
      hello
    • --recursive — необязательный аргумент. Если значение аргумента равно true или оно не указано, то при загрузке из каталога будут загружены скрипты из его подкаталогов тоже.
    • --namespace — необязательный аргумент. Пространство имен для загрузки новых скриптов. Если не задано, скрипты загружаются в текущее пространство имен по умолчанию.
sort-project

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

  • --project-list — список путей к каталогам проектов 1C:EDT, в которых будет выполнена сортировка. При этом обрабатываются все вложенные проекты.
    Если какой-то из этих проектов не импортирован в рабочую область, переданную в параметре -data, то перед сортировкой проекта будет выполнен импорт этого проекта в рабочую область;
  • --project-name-list — список имен проектов, ранее импортированных в рабочее пространство, которые будут отсортированы.

Список путей или список имен перечисляется через пробел в квадратных скобках. Если нужно передать только один путь или одно имя, квадратные скобки можно не использовать.

Например:

sort-project --project-list [D:\Демо_EDT D:\Демо_EDT.ВесТоваров]
sort-project --project-list D:\Демо_EDT
uninstall-platform-support

Удаляет поддержку платформы «1С:Предприятие» указанной версии. Имеет обязательный аргумент:

  • --version — версия платформы, поддержку которой нужно удалить;
Например:
uninstall-platform-support --version 8.3.10
validate

Проверяет проект и выводит результат в .tsv-файл. Имеет следующие аргументы:

  • --file — путь к .tsv-файлу, в который будут записаны результаты проверки. Если файл уже существует, то будет выдана ошибка;
  • Один из следующих обязательных аргументов:
    • --project-list — список путей к каталогам проектов 1C:EDT, в которых будет выполнена проверка.
      Если какой-то из этих проектов не импортирован в рабочую область, переданную в параметре -data, то перед проверкой проекта будет выполнен импорт этого проекта в рабочую область;
    • --project-name-list — список имен проектов, ранее импортированных в рабочую область, которые будут проверены.

Список путей или список имен перечисляется через пробел в квадратных скобках. Если нужно передать только один путь или одно имя, квадратные скобки можно не использовать.

Например:
validate --file D:\validation-result.tsv --project-list [D:\Демо_EDT D:\Демо_EDT.ВесТоваров]
validate --file D:\validation-result.tsv --project-list D:\Демо_EDT

Код возврата

Если 1C:EDT CLI должен вернуть код возврата 23 или 24 (например потому, что его вернула выполняемая команда в режиме -command или последняя команда из последовательности команд в режиме -file), код возврата будет увеличен на 100, то есть вернется 123 или 124 соответственно. Это сделано потому, что 23 и 24 являются особыми кодами возврата Eclipse с собственной семантикой.

Собственные команды

В интерфейс командной строки 1C:EDT CLI можно добавлять собственные команды. Для этого нужно написать плагин для 1C:EDT, который будет подключаться к точке расширения com.e1c.g5.v8.dt.cli.api.cliCommand и реализовывать интерфейс com.e1c.g5.v8.dt.cli.api.ICliCommand.

Подробнее о разработке собственных команд командной строки можно прочитать здесь.

Для тестирования собственных команд 1C:EDT CLI можно использовать инструмент, описанный здесь.

Демонстрационный пример плагина можно посмотреть здесь.