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

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