Перейти к основному содержимому

Аргументы командной строки

При запуске скрипта может потребоваться передать ему некоторые входные данные. Например, каталог с файлами, которые надо обработать. Это можно сделать интерактивно, запросив значение у пользователя в консоли. Но это далеко не всегда удобно. Есть еще один вариант передачи аргументов: указать их в командной строке. Аргументы командной строки могут называться по-разному. Если они только уточняют поведение скрипта (указывают рабочий каталог и обрабатываемый файл), то в этом случае мы будет говорить, что «скрипт получает параметры». Если скрипт может выполнять различные действия, каждое из которых имеет свое мнемоническое имя, а для каждого или некоторых действий нужны какие-либо уточнения, то мы будем говорить, что «у скрипта есть команды, для которых требуются параметры». Однако вполне допустимо употреблять термин «аргумент» как обобщение всего вышесказанного.

Параметры скрипта — это параметры его вызываемого метода. При указании параметров необходимо соблюдать их типы. Для передачи из командной строки поддерживаются значения типа Строка, Число и Булево. Отсутствие какого-либо параметра приведет к ошибке.

Допустим, что у нас есть скрипт с единственным методом Скрипт(), у которого описаны три параметра:

метод Скрипт(Параметр1: Число, Параметр2: Строка, Параметр3: Булево)
Консоль.Записать("Параметр 1: значение = %Параметр1, тип = %{Параметр1.ПолучитьТип()}")
Консоль.Записать("Параметр 2: значение = %Параметр2, тип = %{Параметр2.ПолучитьТип()}")
Консоль.Записать("Параметр 3: значение = %Параметр3, тип = %{Параметр3.ПолучитьТип()}")
;

Первый параметр имеет тип Число, второй — тип Строка, а последний параметр имеет тип Булево. Теперь при запуске этого скрипта система «1С:Предприятие.Элемент Скрипт» будет выполнять проверку количества и типов передаваемых параметров.

PS C:\...\executor> .\executor.cmd path\to\script.sbsl 1 "параметр-строка" true
Параметр 1: значение = 1, тип = Std::Number
Параметр 2: значение = параметр-строка, тип = Std::String
Параметр 3: значение = true, тип = Std::Boolean

Передача пустой строки

Если вам необходимо передать в качестве параметра скрипта пустую строку, то способ передачи такого значения при работе под управлением ОС Windows будет зависеть от того, какой командный процессор используется в операционной системе. Если используется PowerShell, то для передачи пустой строки можно использовать конструкцию --%. Данная конструкция прекращает разбор командной строки. Все, что записано после этой конструкции, будет передано вызываемому приложению «как есть». С этой конструкцией пустая строка будет выглядеть следующим образом: --% "". PowerShell прекратит разбор от символа --% и до конца командной строки.

Пример передачи пустой строки в качестве параметра для ранее приведенного примера скрипта:

PS C:\…\executor> .\executor.cmd path\to\script.sbsl --% 1 "" true
Параметр 1: значение = 1, тип = Std::Number
Параметр 2: значение = , тип = Std::String
Параметр 3: значение = true, тип = Std::Boolean

Если используется командный процессор cmd, то пустую строку можно передать с помощью обычного выражения из двух двойных кавычек: "":

PS C:\…\executor> .\executor.cmd path:\to\script.sbsl 1 "" true