Интерфейс командной строки 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

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

Чтобы выполнить последовательность команд, после 1cedtcli укажите:
  1. Опцию -data — расположение рабочей области и
  2. Опцию -file — путь к файлу, содержащему команды.
Например:
1cedtcli -data D:\projects\МойПроект -file D:\projects\script.txt

Команды

build
Очищает и пересобирает все или некоторые проекты. Является аналогом интерактивной команды Проект > Очистить.... Имеет один необязательный аргумент:
  • --yes — если этот аргумент имеет значение true или значение не указано, то 1C:EDT пересобирает все проекты, находящиеся в рабочей области.
    build --yes
    Если этот аргумент имеет значение false или этот аргумент не указан, то будет запрошено подтверждение пересборки всех проектов:
    1C:EDT> build
    Пожалуйста, подтвердите сборку следующих проектов:
      pr24
      pr24.ВесТоваров
      pr24.Колонтитулы
    Действительно собрать? (y/n; по умолчанию=n)
    Если после этого аргумента перечислены имена проектов, то будут пересобраны только эти проекты:
    build --yes [pr24 pr24.Колонтитулы]
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
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.Колонтитулы]
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 поддерживает многие возможности командной оболочки, некоторые из них расширены. Основные возможности командного языка:

Более подробно об используемом командном языке и его возможностях можно прочитать здесь (на английском языке).

Пример 1
Пример выводит сообщение о том, поддерживается ли версия «1С:Предприятия» 8.3.22 данной средой разработки.
is22 = ( platform-versions | grep -q 8.3.22 )
if { $is22 } { echo 8.3.22 поддерживается } { echo 8.3.22 не поддерживается }
8.3.22 поддерживается

В первой строке создается переменная is22, в которую записывается результат выполнения команды в скобках. В скобках команда platform-versions выводит все поддерживаемые версии платформы, а ее вывод перенаправляется на вход команды grep, которая ищет в нем строку 8.3.22. Опция -q означает, что команда grep ничего не выводит, а просто возвращает true или false.

Во второй строке команда if проверяет истинность значения переменной is22, а команды echo выводят соответствующие сообщения.

Пример 2

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

isList = [8.3.21 8.3.22 8.3.23]
each $isList { if { not { platform-versions | grep -q $it } } { "$it не поддерживается" } { "$it поддерживается" } }
8.3.21 поддерживается
8.3.22 поддерживается
8.3.23 не поддерживается

В первой строке создается переменная-список интересующих версий.

Во второй строке по каждой из этих версий команда if проверяет, поддерживается эта версия, или нет, и выводит соответствующее сообщение.

Пример 3

Пример читает содержимое файла.

hellotxt = ( cat /home/dmitry/hello.txt )
This is the content of the file hello.txt.

В первой строке команда cat читает в переменную hellotxt содержимое файла /home/test/hello.txt.

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

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

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

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

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