Использование выражений в условиях для проверки нескольких значенийUse expressions in conditions to check multiple values

Из этого пошагового руководства вы узнаете, как использовать выражения и условия, чтобы сравнивать несколько значений в расширенном режиме.In this walkthrough, you'll learn to use expressions and Conditions to compare multiple values in Advanced mode.

Создавая поток, вы можете быстро сравнивать одно значение с другим, используя карту Условие в простом режиме.When you create a flow, you can use the Condition card in basic mode to quickly compare a single value with another value. Но в некоторых случаях требуется сравнить несколько значений.However, there're times when you need to compare multiple values. Например, вам необходимо проверить значение в нескольких столбцах электронной таблицы или таблицы базы данных.For example, you may want to check the value of a few columns in a spreadsheet or database table.

Вы можете использовать в условиях любое сочетание следующих логических выражений.You can use any combination of the following logical expressions in your conditions.

ВыражениеExpression ОписаниеDescription ПримерExample
andand Принимает два аргумента и возвращает значение true, если оба аргумента имеют значение true.Takes two arguments and returns true if both values are true.
Примечание. Оба аргумента должны быть логическими значениями.Note: Both arguments must be Booleans.
Это выражение возвращает значение false:This expression returns false:
and(greater(1,10),equals(0,0))and(greater(1,10),equals(0,0))
oror Принимает два аргумента и возвращает значение true, если один аргумент имеет значение true.Takes two arguments and returns true if either argument is true.
Примечание. Оба аргумента должны быть логическими значениями.Note: Both arguments must be Booleans.
Это выражение возвращает значение true:This expression returns true:
or(greater(1,10),equals(0,0))or(greater(1,10),equals(0,0))
equalsequals Возвращает значение true, если значения равны.Returns true if two values are equal. Например, если для parameter1 задано значение someValue, это выражение возвращает значение true:For example, if parameter1 is someValue, this expression returns true:
equals(parameters('parameter1'), 'someValue')equals(parameters('parameter1'), 'someValue')
lessless Принимает два аргумента и возвращает значение true, если значение первого аргумента меньше значения второго.Takes two arguments and returns true if the first argument is less than the second argument.
Примечание. Поддерживаются следующие типы данных: целые числа, числа с плавающей запятой и строки.Note: The supported types are integer, float, and string.
Это выражение возвращает значение true:This expression returns true:
less(10,100)less(10,100)
lessOrEqualslessOrEquals Принимает два аргумента и возвращает значение true, если значение первого аргумента меньше или равно значению второго.Takes two arguments and returns true if the first argument is less than or equal to the second argument.
Примечание. Поддерживаются следующие типы данных: целые числа, числа с плавающей запятой и строки.Note: The supported types are integer, float, and string.
Это выражение возвращает значение true:This expression returns true:
lessOrEquals(10,10)lessOrEquals(10,10)
greatergreater Принимает два аргумента и возвращает значение true, если значение первого аргумента больше значения второго.Takes two arguments and returns true if the first argument is greater than the second argument.
Примечание. Поддерживаются следующие типы данных: целые числа, числа с плавающей запятой и строки.Note: The supported types are integer, float, and string.
Это выражение возвращает значение false:This expression returns false:
greater(10,10)greater(10,10)
greaterOrEqualsgreaterOrEquals Принимает два аргумента и возвращает значение true, если значение первого аргумента больше или равно значению второго.Takes two arguments and returns true if the first argument is greater than or equal to the second argument.
Примечание. Поддерживаются следующие типы данных: целые числа, числа с плавающей запятой и строки.Note: The supported types are integer, float, and string.
Это выражение возвращает значение false:This expression returns false:
greaterOrEquals(10,100)greaterOrEquals(10,100)
emptyempty Возвращает значение true, если объект, массив или строка являются пустыми.Returns true if the object, array, or string is empty. Это выражение возвращает значение true:This expression returns true:
empty('')empty('')
notnot Возвращает противоположное логическое значение.Returns the opposite of a boolean value. Это выражение возвращает значение true:This expression returns true:
not(contains('200 Success','Fail'))not(contains('200 Success','Fail'))
ifif Возвращает определенное значение в зависимости от того, какое значение возвращает выражение: true или false.Returns a specific value if the expression results in true or false. Это выражение возвращает значение yes:This expression returns "yes":
if(equals(1, 1), 'yes', 'no')if(equals(1, 1), 'yes', 'no')

Предварительные требованияPrerequisites

  • Доступ к Microsoft Flow.Access to Microsoft Flow.
  • Электронная таблица с таблицами, приведенными далее в этом пошаговом руководстве.A spreadsheet with the tables described later in this walkthrough. Сохраните электронную таблицу в таком расположении, как Dropbox или Microsoft OneDrive, чтобы она была доступна для Microsoft Flow.Be sure to save your spreadsheet in a location such as Dropbox or Microsoft OneDrive so that Microsoft Flow can access it.
  • Microsoft Office 365 Outlook. Хотя в этом руководстве используется Office 365 Outlook, в своих потоках вы можете использовать любую поддерживаемую службу электронной почты.Microsoft Office 365 Outlook (While we use Office 365 Outlook, you can use any supported email service in your flows.)

Использование выражения orUse the or expression

Иногда в рабочем процессе необходимо выполнить действие в зависимости от того, какое значение у элемента: значение_А или значение_Б.Sometimes your workflow needs to take an action if the value of an item is valueA or valueB. Например, вам требуется отследить состояние задач в электронное таблице.For example, you may be tracking the status of tasks in a spreadsheet table. Предположим, что в таблице есть столбец с именем Состояние и в столбце Состояние возможны следующие значения:Assume that the table has a column named Status and the possible values in the Status column are:

  • завершено;completed
  • заблокировано;blocked
  • не требуется;unnecessary
  • не начато.not started

Вот пример, как может выглядеть электронная таблица:Here's an example of what the spreadsheet might look like:

Пример электронной таблицы

На примере электронной таблицы выше вам может потребоваться с помощью Microsoft Flow удалить все строки, для которых в столбце Состояние задано значение завершено или не требуется.Given the preceding spreadsheet, you want to use Microsoft Flow to remove all rows with a Status column that's set to completed or unnecessary.

Давайте создадим поток.Let's create the flow.

Начало с пустого потокаStart with a blank flow

  1. Войдите в Microsoft Flow.Sign into Microsoft Flow.

    Вход в систему

  2. Выберите вкладку Мои потоки.Select the My flows tab.

    Выбор потоков пользователя

  3. Щелкните Создание из пустого.Select Create from blank.

    Создание последовательности с нуля

Добавление триггера в потокAdd a trigger to your flow

  1. Выполните поиск по слову расписание, а затем выберите триггер Расписание — повторение.Search for Schedule, and then select the Schedule - Recurrence trigger

    Триггер "Расписание"

  2. Настройте запуск последовательности по расписанию один раз в день.Set the schedule to run once daily.

    Ввод значений для расписания

Выбор электронной таблицы и получение всех строкSelect the spreadsheet and get all rows

  1. Выберите Новый шаг > Добавить действие.Select New step > Add an action.

    Добавление шага

  2. Выполните поиск по слову строки, а затем выберите Excel — получить строки.Search for rows, and then select Excel - Get rows.

    Примечание. Выбирайте то действие получения строк, которое соответствует используемой электронной таблице.Note: Select the "get rows" action that corresponds to the spreadsheet that you're using. Например, если используются Google Таблицы, выберите Google Таблицы — получить строки.For example, if you're using Google Sheets, select Google Sheets - Get rows.

    Получение строк

  3. Щелкните значок папки в поле Имя файла, перейдите к папке и выберите электронную таблицу с вашими данными.Select the folder icon in the File name box, browse to, and then select the spreadsheet that contains your data.

    Выбор электронной таблицы

  4. Выберите таблицу с вашими данными в списке Имя таблицы.Select the table that contains your data from the Table name list.

    Выбор таблицы

Просмотр значений в столбце состояния для каждой строкиCheck the status column of each row

  1. Последовательно выберите Новый шаг > Дополнительно > Добавить оператор "применить к каждому".Select New step > More > Add an apply to each.

    Выбор таблицы

  2. В поле Выберите выходные данные из предыдущих шагов добавьте маркер Значение.Add the Value token to the Select an output from previous steps box.

    Выбор таблицы

  3. Последовательно выберите Добавить условие > Расширенный редактор.Select Add a condition > Edit in advanced mode.

  4. Добавьте выражение or, как показано ниже.Add the following or expression. Это выражение or проверяет значение каждой строки в таблице (в выражении строка называется item).This or expression checks the value of each row in the table (a row is known as an item when accessed in a expression). Если в столбце Состояние для строки задано значение Завершено или Не требуется, выражение or возвращает значение true.If the value of the status column is completed or unnecessary, the or expression evaluates to "true".

    Выражение or выглядит так:The or expression appears as shown here:

    @or(equals(item()?['status'], 'unnecessary'), equals(item()?['status'], 'completed'))

    Карта Условие должна выглядеть так:Your Condition card resembles this image:

    Изображение с выражением or

Удаление совпадающих строк из электронной таблицыDelete matching rows from the spreadsheet

  1. В карточке условия в ветви IF YES, DO NOTHING (Если "Да", ничего не делать) выберите Добавить действие.Select Add an action on the IF YES, DO NOTHING branch of the condition.

  2. Выполните поиск по фразе удаление строки и выберите Excel — удаление строки.Search for Delete row, and then select Excel - Delete row.

    Действие "Удаление строки"

  3. В поле Имя файла найдите и выберите файл электронной таблицы с данными, которые требуется удалить.In the File name box, search for, and select the spreadsheet file that contains the data you want to delete.

  4. В списке Имя таблицы выберите таблицу с вашими данными.In the Table name list, select the table that contains your data.

  5. В поле Идентификатор строки добавьте маркер Идентификатор строки.Place the Row id token in the Row id box.

    Файл электронной таблицы

Присвоение имени и сохранение потокаName the flow and save it

  1. Присвойте потоку имя и нажмите кнопку Создать поток.Give your flow a name and then select the Create flow button.

    Сохранение потока

Запуск потока с выражением orRun the flow with the or expression

Поток будет выполнен после его сохранения.The flow runs after you save it. Если вы создали электронную таблицу, приведенную ранее в этом пошаговом руководстве, после выполнения последовательности таблица будет выглядеть так:If you created the spreadsheet shown earlier in this walkthrough, here's what the it looks like after the run completes:

Завершение выражения or

Обратите внимание, что удалены все данные из строк со значением "завершено" или "не требуется" в столбце "Состояние".Notice all data from rows that had "completed" or "unnecessary" in the Status column were deleted.

Использование выражения andUse the and expression

Предположим, у вас есть электронная таблица с двумя столбцами.Assume you have a spreadsheet table with two columns. Имена столбцов — "Состояние" и "Кому назначено".The column names are Status and Assigned. Предположим также, что необходимо удалить все строки со значением "заблокировано" в столбце "Состояние" и значением "John Wonder" в столбце "Кому назначено".Assume also that you want to delete all rows if the Status column's value is "blocked" and the Assigned column's value is "John Wonder". Чтобы выполнить эту задачу, пройдите все шаги, описанные выше в этом пошаговом руководстве. Но при изменении данных в карте Условие в расширенном режиме введите выражение and, как показано здесь:To accomplish this task, follow all steps earlier in this walkthrough, however, when you edit the Condition card in advanced mode, use the and expression shown here:

@and(equals(item()?['Status'], 'blocked'), equals(item()?['Assigned'], 'John Wonder'))

Карта Условие должна выглядеть так:Your Condition card resembles this image:

Изображение с выражением and

Запуск потока с выражением andRun the flow with the and expression

Если вы выполнили все описанные действия, электронная таблица должна выглядеть так:If you followed along, your spreadsheet resembles this image:

До запуска функции and

После запуска потока электронная таблица будет выглядеть так:After your flow runs, your spreadsheet resembles this image:

После запуска функции and

Использование выражения emptyUse the empty expression

Обратите внимание, что сейчас в электронной таблице есть несколько пустых строк.Notice that there are several empty rows in the spreadsheet now. Чтобы определить и удалить все строки без текста в столбцах "Состояние" и "Кому назначено", воспользуйтесь выражением empty.To remove them, use the empty expression to identify all rows that don't have any text in the Assigned and Status columns.

Чтобы выполнить эту задачу, пройдите все шаги, указанные выше в разделе Использование выражения and этого пошагового руководства. Но при изменении данных в карте Условие в расширенном режиме, введите выражение empty следующим образом:To accomplish this task, follow all steps listed in Use the and expression section earlier in this walkthrough, however, when you edit the Condition card in advanced mode, use the empty expression this way:

@and(empty(item()?['Status']), empty(item()?['Assigned']))

Карта Условие должна выглядеть так:Your Condition card resembles this image:

Изображение с выражением empty

После запуска потока электронная таблица будет выглядеть так:After your flow runs, the spreadsheet resembles this image:

После запуска функции empty

Обратите внимание, что лишние строки удалены из таблицы.Notice extra lines are removed from the table.

Использование выражения greaterUse the greater expression

Предположим, вы приобрели билеты на бейсбольный матч для коллег и используете электронную таблицу, чтобы проверить, все ли вернули деньги за билеты.Imagine you've bought baseball tickets for your coworkers and you're using a spreadsheet to ensure you're reimbursed by each person. Вы можете быстро создать поток, чтобы ежедневно отправлять сообщения всем пользователям, которые еще не сделали это.You can quickly create a flow that sends a daily email to each person who hasn't paid the full amount.

Используйте выражение greater, чтобы определить, кто из сотрудников еще не вернул всю суму.Use the greater expression to identify the employees who haven't paid the full amount. Затем вы сможете автоматически отправлять этим сотрудникам электронное сообщение с дружеским напоминанием.You can then automatically send a friendly reminder email to those who haven't paid in full.

Электронная таблица выглядит так:Here's a view of the spreadsheet:

Представление электронной таблицы

Ниже показана реализация выражения greater, которое позволяет определить всех сотрудников, вернувших меньшую сумму.Here's the implementation of the greater expression that identifies all persons who have paid less than the amount due from them:

@greater(item()?['Due'], item()?['Paid'])

Использование выражения lessUse the less expression

Предположим, вы приобрели билеты на бейсбольный матч для коллег и используете электронную таблицу, чтобы проверить, все ли вернули деньги за билеты до оговоренной даты.Imagine you've bought baseball tickets for your coworkers, and you're using a spreadsheet to ensure you're reimbursed by each person by the date to which everyone agreed. Вы можете создать поток, чтобы отправлять сообщения с напоминанием всем, кто еще не вернул полную стоимость, если до срока оплаты осталось меньше одного дня.You can create a flow that sends a reminder email to each person who hasn't paid the full amount if the current date is less than one day before the due date.

Используйте выражение and вместе с выражением less, так как проверяются два условия.Use the and expression along with the less expression since there are two conditions being validated:

Условие для проверкиCondition to validate Используемое выражениеexpression to use ПримерExample
Возвращена ли вся сумма?Has the full amount due been paid? greatergreater @greater(item()?['Due'], item()?['Paid'])@greater(item()?['Due'], item()?['Paid'])
Осталось ли до срока оплаты меньше одного дня?Is the due date less than one day away? lessless @less(item()?['DueDate'], addDays(utcNow(),1))@less(item()?['DueDate'], addDays(utcNow(),1))

Объединение выражений greater и less с помощью выражения andCombine the greater and less expressions in an and expression

Используйте выражение greater, чтобы определить, кто из сотрудников вернул меньшую сумму, а выражение less, чтобы определить, осталось ли до срока оплаты меньше одного дня.Use the greater expression to identify the employees who have paid less than the full amount due and use the less expression to determine if the payment due date is less than one day away from the current date. Затем вы сможете выбрать действие Отправка электронного письмо, чтобы отправить сообщение с дружеским напоминанием тем, кто не вернул всю сумму, а также если до срока оплаты осталось меньше одного дня.You can then the Send an email action to send friendly reminder email to those who haven't paid in full and the due date is less than one day away.

Электронная таблица выглядит так:Here's a view of the spreadsheet table:

Представление электронной таблицы

Ниже показана реализация выражения and, которое позволяет определить, кто из сотрудников вернул меньшую сумму, а также осталось ли до срока оплаты меньше одного дня.Here's the implementation of the and expression that identifies all persons who have paid less than the amount due from them and the due date is less than one day away from the current date:

@and(greater(item()?['Due'], item()?['Paid']), less(item()?['dueDate'], addDays(utcNow(),1)))

Использование функций в выраженияхUse functions in expressions

Некоторые выражения получают значения из действий времени выполнения, которые могут еще не существовать, когда поток начинает работу.Some expressions get their values from runtime actions that might not yet exist when a flow starts to run. Чтобы ссылаться на эти значения или работать с ними в выражениях, вы можете использовать функции, предоставляемые языком определений рабочих процессов.To reference or work with these values in expressions, you can use functions that the Workflow Definition Language provides. Дополнительные сведения: Справочник по функциям языка определений рабочих процессов в Microsoft FlowMore information: Functions reference for Workflow Definition Language in Microsoft Flow