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

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