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

Данный раздел описывает, каким образом сценарий может получить данные, необходимые для своей работы, не требуя интерактивного вмешательства пользователя.

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