Введение
Переменные в Studio Pro могут иметь две области видимости — локальную и глобальную. Глобальная область видимости означает, что переменная будет доступна (к ней можно будет обратиться и использовать её в каких-либо действиях) из любого файла .neek, запущенного в Studio Pro. Локальная область видимости переменной означает, что к переменной, созданной в определенном файле, можно будет обращаться только в рамках этого файла.
Глобальные переменные
Работать с глобальными переменными просто: независимо от того, в каком файле вы укажете имя глобальной переменной, последнее заданное значение этой переменной будет подставлено автоматически. Например, если в файле a.neek вы задали значение глобальной переменной x = 100
, а в файле b.neek создали переменную y = x
, то y
примет значение 100
(при условии, что до этого переменная x
не поменяла свое значение).
Чтобы сделать нужную переменную глобальной, выберите опцию «Is Global» в параметрах действия «Задать значение переменной».
Если переменная глобальная, соответствующий значок будет отображаться возле названия этой переменной в разделе «Переменные».
Локальные переменные
Использование локальных переменных накладывает естественные ограничения на их доступность из других файлов. По аналогии с примером выше, если в файле a.neek задать переменную x = 100
, а в файле b.neek задать переменную y = x
, то переменная, y
уже не примет никакое значение, потому что переменная x
не относится к файлу b.neek. В этом случае будет необходимо объявить переменную x
с каким-либо значением в файле b.neek и уже после этого использовать конструкцию y = x
.
Тем не менее в разработке RPA-процесса часто применяется декомпозиция одного бота на несколько связанных друг с другом подпрограмм (особенно если процесс большой). И здесь возникает необходимость передавать значения переменных из одной подпрограммы в другую, а также возвращать значения из подпрограммы (в случае с глобальными переменными такой необходимости нет, так как переменные доступны в любых файлах).
Ниже мы рассмотрим примеры явной передачи значений в подпрограмму и их возврата из подпрограммы.
Передача данных в подпрограмму
Если вам потребуется передать данные из подпрограммы a.neek в подпрограмму b.neek, то схематически это будет выглядеть так:
На скриншотах выше последовательно изображены подпрограмма a.neek и подпрограмма b.neek.
Рассмотрим данный алгоритм подробнее. Чтобы передать данные из программы a.neek в подпрограмму b.neek, убедитесь, что последнее действие перед действием «Подпрограмма» в файле a.neek возвращает результат. Этими действиями могут быть, например, «Задать значение переменной», «Прочитать текст из файла», «Считать таблицу» и другие действия, в результате выполнения которых возвращается какое-либо значение (текст считанного файла, название кнопки и т.п.). Обратите внимание, что если последним действием в программе a.neek будет действие, которое не возвращает результат (например, «Задержка»), то данные в подпрограмму b.neek переданы не будут.
В самой же подпрограмме b.neek необходимо создать блок действия, в котором вы хотите использовать передаваемые из основной программы данные. Для этого выберете в нужном параметре этого действия опцию «Сохранить результат предыдущего шага». Сам же блок действия должен следовать сразу от блока «Старт». На картинке выше в подпрограмме b.neek переданные из внешней программы a.neek данные сохраняются в переменной. Вместо блока переменной можно подставить нужное Вам действие, например, «Отправить письмо», в одном из параметров которого выбрать опцию «Сохранить результат предыдущего шага».
Возврат данных из подпрограммы
Чтобы вернуть данные из подпрограммы (b.neek из примера выше) в основную программу (a.neek из примера выше), постройте workflow таким образом, чтобы последнее действие в подпрограмме возвращало какой-либо результат. Как было описано выше, примерами таких действий могут быть действия «Задать значение переменной», «Прочитать текст из файла» и аналогичные им действия, возвращающие значение. В основной же программе после действия «Подпрограмма» необходимо создать действие, принимающее результат (смотрите скриншот ниже).
Пример передачи и возврата значений
Построим простейший пример workflow, где данные передаются в подпрограмму и возвращаются из нее. Первым шагом создадим файл основной программы — a.neek. Алгоритм будет выглядеть так:
Здесь создается переменная x = 10
. Так как действие «Задать значение переменной» возвращает результат, а следом за ней идет действие «Подпрограмма», то значение 10
будет передано в подпрограмму.
Файл подпрограммы b.neek будет выглядеть так:
Здесь первым действием в алгоритме идет сохранение переданного значения в переменную. Таким образом переменная y
должна получить значение 10
.
Последним действием в подпрограмме является объявление новой переменной z = 20
. Так как это последнее действие и оно возвращает результат, то это значение 20
будет передано обратно в программу a.neek. Как можно заметить из первого скриншота в данном примере, после действия «Подпрограмма» в файле a.neek результат подпрограммы сохраняется в переменную p
, то есть она должна равняться 20
.