Аргументы командной строки
При запуске скрипта может потребоваться передать ему некоторые входные данные. Например, каталог с файлами, которые надо обработать. Это можно сделать интерактивно, запросив значение у пользователя в консоли. Но это далеко не всегда удобно. Есть еще один вариант передачи аргументов: указать их в командной строке. Аргументы командной строки могут называться по-разному. Если они только уточняют поведение скрипта (указывают рабочий каталог и обрабатываемый файл), то в этом случае мы будет говорить, что «скрипт получает параметры». Если скрипт может выполнять различные действия, каждое из которых имеет свое мнемоническое имя, а для каждого или некоторых действий нужны какие-либо уточнения, то мы будем говорить, что «у скрипта есть команды, для которых требуются параметры». Однако вполне допустимо употреблять термин «аргумент» как обобщение всего вышесказанного.
Параметры скрипта — это параметры его вызываемого метода. При указании параметров необходимо соблюдать их типы. Для передачи из командной строки поддерживаются значения типа Строка
, Число
и Булево
. Отсутствие какого-либо параметра приведет к ошибке.
Допустим, что у нас есть скрипт с единственным методом Скрипт()
, у которого описаны три параметра:
метод Скрипт(Параметр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