Аргументы командной строки
При запуске сценария может потребоваться передать этому сценарию некоторые входные данные. Например, каталог с файлами, которые надо обработать. Это можно сделать интерактивно, путем явного запроса значения у пользователя с использованием консоли (см. Консоль операционной системы). Но это далеко не всегда удобно. Есть еще один вариант передачи аргументов: указать их в командной строке запуска сценария (см. Командная строка «1С:Исполнителя»). Аргументы командной строки могут называться по-разному. Если они только уточняют поведение сценария (указывают рабочий каталог и обрабатываемый файл), тот в этом случае мы будет говорить, что «сценарий получает параметры». Если сценарий может выполнять различные действия, каждое из которых имеет свое мнемоническое имя, а для каждого или некоторых действий нужны какие-либо уточнения, то мы будем говорить, что «у сценария есть команды, для которых требуются параметры». Однако вполне допустимо употреблять термин «аргумент» как обобщение всего вышесказанного.
Параметры сценария — это параметры метода Скрипт()
данного сценария. В командной строке сценария параметры должны быть указаны в том порядке, в каком они указаны в описании метода Скрипт()
. При указании параметров необходимо соблюдать их типы. Для передачи из командной строки поддерживаются значения типа Строка
, Число
и Булево
. Отсутствие какого-либо параметра приведет к ошибке.
Допустим, что у нас есть сценарий с единственным методом Скрипт()
, у которого описаны три параметра:
метод Скрипт(Параметр1: Число, Параметр2: Строка, Параметр3: Булево)
Консоль.Записать("Параметр 1: значение = " + Строка(Параметр1) + ", тип = " + Строка(Параметр1.ПолучитьТип()))
Консоль.Записать("Параметр 2: значение = " + Строка(Параметр2) + ", тип = " + Строка(Параметр2.ПолучитьТип()))
Консоль.Записать("Параметр 3: значение = " + Строка(Параметр3) + ", тип = " + Строка(Параметр3.ПолучитьТип()))
;
Первый параметр имеет тип Число
, второй — тип Строка
, а последний параметр имеет тип Булево
. Теперь при запуске этого сценария система «1С:Исполнитель» будет выполнять проверку количества и типов передаваемых параметров.
Если вам необходимо передать в качестве параметра сценария пустую строку, то способ передачи такого значения при работе под управлением ОС Windows будет зависеть от того, какой командный процессор используется в операционной системе. Если используется PowerShell, то для передачи пустой строки можно использовать один из следующих вариантов:
- Использование конструкции
--%
. Дан ная конструкция прекращает разбор командной строки. Все, что записано после этой конструкции, будет передано вызываемому приложению «как есть». С этой конструкцией пустая строка будет выглядеть следующим образом:--% ""
. PowerShell прекратит разбор от символа--%
и до конца командной строки. - Использование символов экранирования. В этом случае пустая строка будет записываться следующим образом:
'"'"
(для экранирования используются апострофы).
Пример передачи пустой строки в качестве параметра для ранее приведенного примера сценария, сохраненного под именем test.sbsl:
PS D:\…\bin> .\executor.cmd -s test.sbsl `"`" 1 test
Параметр 1: значение = , тип = Std::String, длина = 0
Параметр 2: значение = 1, тип = Std::String, длина = 1
Параметр 3: значение = test, тип = Std::String, длина = 4
PS D:\…\bin>.\executor.cmd -s test.sbsl --% "" 1 test
Параметр 1: значение = , тип = Std::String, длина = 0
Параметр 2: значение = 1, тип = Std::String, длина = 1
Параметр 3: значение = test, тип = Std::String, длина = 4
Если используется командный процессор cmd, то пустую строку можно передать с помощью обычного выражения из двух двойных кавычек: ""
:
D:\...\bin>executor -s test.sbsl "" 1 2
Параметр 1: значение = , тип = Std::String, длина = 0
Параметр 2: значение = 1, тип = Std::String, длина = 1
Параметр 3: значение = 2, тип = Std::String, длина = 1