Для удобства работы с выражениями используйте окно «Редактировать выражения». Окно вызывается из панели Свойства блока нажатием на многоточие рядом с любым свойством, которое поддерживает использование выражений.

Окно «Редактировать выражение» предназначено для формирования выражений, которые могут быть использованы в качестве условий для проверки, формул для вычисления значений и т.д.  Редактор позволяет создавать и редактировать ранее созданные выражения без привлечения разработчиков системы, силами подготовленного пользователя или администратора. В нижней части данного окна есть справка по функциям. Выберите категорию функций и саму функцию, чтобы увидеть подсказку по ее использованию в выражении. Дважды кликните на функции или примере использования выражения чтобы вставить его в текущее редактируемое выражение.

Структура выражений

Выражения в системе используются для наложения различных условий на данные при поиске данных, отборе данных для отчетов, проверке правильности ввода данных и т.д.  Выражения могут быть записаны в виде математических функций, даты и произвольных выражений (написанных на языке выражений, который похож на язык PowerShell).  В выражениях могут быть использованы константы, переменные, математические функции или методы.

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

Свойства, которые размещены в разделе Output, не допускают использования выражений. В них необходимо записать имя переменной, в которую Блок должен поместить результат своей работы.

Блок InvokeExpression в свойствах Expression позволяет использовать выражения расширенного формата, которые похожи на выражения на скриптовом языке PowerShell. В них в том числе можно использовать явные присвоения. Выражение записывается $Имяпеременной, затем следует знак равенства (=), а за ним значение, которое вы хотите присвоить. Для указания переменной используйте ключевой символ $. Для присваивания значений переменным использоваться оператор присваивания “=”.

Функции в выражениях

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

Sherpa RPA предоставляет несколько десятков функций для выполнения математически операций, работы со строками, с датой и временем, со списками, словарями и другими структурами данных. При использовании функции в выражении нужно написать название функции, а затем в скобках указать один или несколько её аргументов, то есть входных данных, с которыми она будет работать. Аргументами функции могут быть любые корректные выражения, однако их тип должен соответствовать тому типу данных, который данная функция ожидает увидеть в данном аргументе.

Например, функция Round() позволяет округлить значение числа, которое было передано ей в качестве аргумента, то есть указано в скобках. При этом вместо числа можно указать имя переменной, в которой содержится нужное число, или даже целое выражение, состоящее из констант, переменных и других функций. Ниже приведены примеры корректного использования функции Round().

Round(5.5) – округлит число 5.5 и вернёт результат 6. Обратите внимание, что разделителем десятичных дробей является точка, а не запятая. Если вы попробуете вызвать функцию вот так: Round(5,5), то результатом будет число 5, а не 6. Объясняется это тем, что запятая в функциях разделяет аргументы. Программа предположит, что в функцию было передано два аргумента вместо одного. Это не приведет к ошибке, но так как функция Round() ожидает только один аргумент, то будет использовать число 5 как входное значение, соответственно и на выходе также будет выдано число 5.

Round($МояПеременная) – если в переменную $МояПеременная предварительно было записано число 5.5 – также вернёт значение 6.

Round($МояПеременная + 5) – следуя предыдущему примеру, вернет число 11.

Round($МояПеременная + Round($МояПеременная)) –следуя предыдущим примерам, вернет число 12.

Round(“Привет!”) – приведет к ошибке, так как в качестве аргумента функция Round() ожидает число, а не текстовую строку.

Если вы подставите функцию Round() или какую-либо другую функцию в выражение, то результат работы функции будет использован при вычислении значения выражения в том месте, в котором вы подставили функцию. То есть результат вычисления выражения “5 + Round(5.5)” будет 11.

Список всех доступных функций вместе с описаниями их работы и примерами применения вы можете найти в справочнике в нижней части окна Редактировать выражение.

Методы в выражениях

Методы похожи на функции, однако они всегда относятся к переменной определенного типа (например, к строке, к числу, к словарю) и служат для работы именно с этим типом переменной. При этом название метода записывается после названия переменной через точку. Метод может не иметь аргументов, и тогда после него не нужно писать скобки. Некоторые методы как и функции могут иметь один или несколько аргументов, которые записываются в скобках после имени метода. Методы могут только возвращать значение, а могут изменять значение и состояние той переменной или того объекта, к которому принадлежат.

Примеры использования методов:

$МояТекстоваяСтрока.Length – метод Length используется с текстовыми строками, списками, словарями и некоторыми другими составными типами данных. При использовании с текстовыми строками метод Length возвращает их длину в символах (количество символов, из которых состоит строка), а при использовании с составными типами данных (списками, словарями) – возвращает количество их элементов. Метод Length не требует указания аргументов и поэтому используется без скобок.

$MyString.Replace(“text”, “newtext”) – метод Replace используется с текстовыми строками, ищет в строке все вхождения текста, заданного в первом аргументе, и меняет их на текст, заданный во втором аргументе. Как и с функциями, в качестве аргументов можно использовать не только константы, но и другие переменные, а также выражения с ними. Метод Replace не изменяет исходную строку, а возвращает результат своего выполнения. То есть его, например, можно использовать в блоке Assign, чтобы присвоить возвращенную в результате работы этого метода строку новую другой переменной.

Методы могут быть использованы друг за другом «цепочкой». Например, следующее выражение корректно, и его результатом будет длина новой строки, полученной после замены всех вхождений «text» на «newtext» в строке, хранящейся в переменной $MyString:

$MyString.Replace(“text”, “newtext”).Length

Некоторые методы дают доступ к отдельным элементам составных объектов, и тогда их называют «свойствами». Например, если вы используете блок Get POP3 Mail Messages для получения новых email-сообщений, полученные сообщения будут сохранены в переменной, указанной в свойстве Result. Допустим, там указана переменная $Result. Тип этой переменной – список объектов типа MailMessage. Допустим, вы хотите получить доступ к адресу отправителя первого из полученных сообщений. Так как $Result в данном случае – это список, можно получить доступ к первому его элементу через указание индекса в квадратных скобках: $Result[0]. Не забывайте, что индексы всех состаных элементов начинаются с нуля, а не с единицы. Так мы получим доступ к составному объекту MailMessage, в котором хранится вся информация о каждом сообщении в отдельности. Справочник в нижней части окна Редактировать выражение нам подсказывает, что адрес отправителя сообщения содержится в свойстве From и его подсвойстве Address. Таким образом, чтобы получить доступ к адресу отправителя в первом полученном сообщении, нам нужно воспользоваться вот таким выражением:

$Result[0].From. Address

Результат вычисления этого выражения будет представлять собой текстовую строку. Её можно затем вывести на экран, записать в файл, в ячейку таблицы и т.д. Вспомнив о том, что методы и свойства можно «нанизывать» друг на друга, мы можем узнать длину адреса отправителя письма в символах с помощью вот такого выражения:

$Result[0].From. Address.Length

Или же мы можем заменить в адресе отправителя письма символ «@» на строку «-at-» с помощью вот такого выражения:

$Result[0].From. Address.Length.Replace(“@”, “-at-“)

Как и в случае с функциями, список всех доступных методов, их аргументов и примеры их использования вы можете посмотреть в справочнике окна Редактировать выражение. Там же вы можете найти примеры формирования аргументов некоторых специальных функций. Например, в разделе «DataTime Formats» содержатся примеры аргументов для функций и блоков форматирования даты и времени. И там же вы сможете найти примеры разложения на отдельные свойства составных объектов. Например, все свойства упомянутого выше объекта MailMessage содержатся в разделе «Mail Message examples» справочника.