Функции Remove и RemoveIf

Применимо к: Приложениям Canvas Приложениям на основе моделей Power Platform CLI

Удаляют записи из источника данных.

Заметка

Команды PAC CLI pac power-fx не поддерживают функцию RemoveIf .

Description

Функция Remove

С помощью функции Remove можно удалить из источника данных определенную запись или набор записей.

Для коллекций должна совпадать вся запись. Удалить все копии записи можно с помощью аргумента RemoveFlags.All; в противном случае удаляется только одна копия.

Функция RemoveIf

С помощью функции RemoveIf можно удалить одну или несколько записей на основе определенного условия или набора условий. Каждое из этих условий может быть любой формулой, которая возвращает результат true (истина) или false (ложь), и может содержать ссылки на столбцы источника данных (по имени). Каждое условие оценивается отдельно для каждой записи, и запись удаляется, если все условия возвращают значение true.

Remove и RemoveIf возвращают измененный источник данных в виде таблицы. Обе эти функции можно использовать только в формулах поведения.

Кроме того, удалить все записи из коллекции можно с помощью функции Clear.

Делегирование

При использовании с источником данных эти функции невозможно делегировать. Будет извлечена только первая часть источника данных, затем будет применена функция. Это может не отражать ситуацию в целом. Во время разработки может появиться предупреждение, чтобы напомнить вам об этом ограничении.

Поддержка делегирования (экспериментальная версия)

Поддержка делегирования для RemoveIf теперь находится на стадии экспериментальной предварительной версии (по умолчанию отключено) для источников данных, которые ее поддерживают. Если источник данных не поддерживает эту функцию, Power Apps отправит запрос на сервер и получит все данные, соответствующие выражению фильтра, вплоть до максимального размера 500, 2000 или размера страницы данных. Затем он выполнит операцию удаления для каждой из этих записей с отдельными обращениями к серверу.

Синтаксис

Удалить( Источник данных, Запись1 [, Запись2, ... ] [, УдалитьФлаги.Все ] )

  • Источник данных – обязателен. Это источник данных, содержащий запись или записи, которые требуется удалить.
  • Записи – Обязательно. Запись или записи, которые требуется удалить.
  • RemoveFlags.All – Необязательно. В коллекции может существовать несколько копий одной записи. С помощью аргумента RemoveFlags.All можно удалить их все.

Удалить( Источник данных, Таблица [, УдалитьФлаги.Все ] )

  • Источник данных – обязателен. Это источник данных, содержащий записи, которые требуется удалить.
  • Таблица – Обязательно. Таблица с записями, которые требуется удалить.
  • RemoveFlags.All – Необязательно. В коллекции может существовать несколько копий одной записи. С помощью аргумента RemoveFlags.All можно удалить их все.

RemoveIf( ИсточникДанных, Условие [, ... ] )

  • Источник данных – обязателен. Это источник данных, содержащий запись или записи, которые требуется удалить.
  • Условия – Обязательны. Формула, возвращающая значение true для записи или записей, которые требуется удалить. В формуле можно использовать названия столбцов из источника_данных. Если указано несколько условий, для удаления соответствующей записи все они должны возвращать значение true.

Примеры — отдельные формулы

В этих примерах выполняется удаление записи или записей из источника данных под названием IceCream, начинающегося со значений из следующей таблицы:

Пример мороженого.

Создание коллекции с образцами записей

Чтобы создать коллекцию с этими данными:

  1. Вставьте элемент управления Button.

  2. Задайте для свойства OnSelect элемента управления button приведенную ниже формулу:

    ClearCollect( IceCream,
                  { ID: 1, Flavor: "Chocolate",  Quantity: 100 },
                  { ID: 2, Flavor: "Vanilla",    Quantity: 200 },
                  { ID: 3, Flavor: "Strawberry", Quantity: 300 }
    )
    
  3. Удерживая нажатой клавишу ALT, выберите эту кнопку:

Удаление образцов записей из коллекции, используя формулу

Формула Описание: Result
Удалить( Мороженое,
LookUp( IceCream, Flavor="Chocolate" ))
Удаляет из источника данных запись Chocolate. Результат с ванилью и клубникой.

Источник данных IceCream изменен.
Удалить( Мороженое,
LookUp( IceCream, Flavor="Chocolate" ), LookUp( IceCream, Flavor="Strawberry" ) )
Удаляет из источника данных две записи. Результат только с ванилью.

Источник данных IceCream изменен.
RemoveIf(Мороженое, Количество > 150) Удаляет записи со значением Quantity больше 150. Результат только с шоколадом.

Источник данных IceCream изменен.
RemoveIf(Мороженое, Количество > 150, Осталось(Вкус, 1) = "S") Удаляет записи со значением Quantity больше 150 и значением Flavor, начинающимся с буквы S. Результат с шоколадом и ванилью.


Источник данных IceCream изменен.
RemoveIf(Мороженое, правда) Удаляет из источника данных все записи. Результат без мороженого.

Источник данных IceCream изменен.

В этом примере вы будете использовать элемент управления Gallery для перечисления записей в таблице. А затем использовать функцию Remove для выборочного удаления элемента.

Подготовка для образца данных

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

В этом примере вы удалите элемент, используя кнопку за пределами коллекции.

  1. Создайте новое пустое приложение на основе холста, используя макет телефона.

    Пустое приложение на основе холста с использованием макета телефона.

  2. Выберите Вставить в левой области.

  3. Выберите Вертикальная коллекция.
    Элемент управления Gallery будет добавлен на ваш экран.

    Использование панели инструментов

  4. Вам будет предложено выбрать источник данных, где вы можете выбрать источник данных из доступных источников данных.
    Например, выберите таблицу Контакты для использования примера данных:

    Выбор таблицы Контакты для отображения в коллекции.

    Коллекция показывает элементы из этой таблицы:

    Добавлена коллекция, показывающая таблицу

  5. Вставьте элемент управления Button с левой панели:

    Использование панели инструментов

  6. Переместите добавленную кнопку под элементы коллекции:

    Переместите кнопку.

  7. Обновить текстовое свойство кнопки на Удалить запись. Можно также использовать текст по вашему выбору.

    Переименование кнопки.

  8. Назначьте свойству OnSelect для этого элемента управления "Кнопка" следующую формулу:

    Remove( Contacts, Gallery1.Selected )
    

    Задание свойству OnSelect элемента управления

    Элемент управления Gallery делает текущую выбранную запись доступной с помощью свойства Selected. Функция Remove обращается к выбранной записи для ее удаления.

  9. Просмотрите приложение с помощью кнопки Воспроизвести в правом верхнем углу или нажмите F5 на клавиатуре:

    Предварительный просмотр приложения.

  10. Выберите запись для удаления, например запись Nancy в этом примере:

    Выберите запись.

  11. Выберите Удалить запись:

    Коллекция контактов, теперь без записи Nancy, которая была удалена.

    Выбор кнопки удаляет выбранную запись (в данном примере, запись Nancy).

  12. Закройте предварительный просмотр приложения.

    Совет

    Вы также можете использовать альтернативное поведение с клавишей ALT вместо использования предварительного просмотра приложения с помощью кнопки Воспроизведение или клавиши F5.

В этом примере вы удалите элемент, используя значок, помещенный внутри коллекции.

Создание коллекции с образцами данных

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

  1. Добавьте элемент управления Button на экран.

  2. Задайте для свойства OnSelect следующую формулу:

    ClearCollect( SampleContacts,
          { 'Full Name': "Yvonne McKay (sample)",      'Primary Email': "someone_a@example.com" },
          { 'Full Name': "Susanna Stubberod (sample)", 'Primary Email': "someone_b@example.com" },
          { 'Full Name': "Nancy Anderson (sample)",    'Primary Email': "someone_c@example.com" },
          { 'Full Name': "Maria Campbell (sample)",    'Primary Email': "someone_d@example.com" },
          { 'Full Name': "Robert Lyon (sample)",       'Primary Email': "someone_e@example.com" },
          { 'Full Name': "Paul Cannon (sample)",       'Primary Email': "someone_f@example.com" },
          { 'Full Name': "Rene Valdes (sample)",       'Primary Email': "someone_g@example.com" }
    )
    
  3. Выберите кнопку, удерживая нажатой клавишу ALT.

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

  1. Создайте новое пустое приложение на основе холста, используя макет телефона.

    Пустое приложение на основе холста с использованием макета телефона.

  2. Выберите Вставить в левой области.

  3. Выберите Вертикальная коллекция.
    Элемент управления Gallery будет добавлен на ваш экран.

    Использование панели инструментов

  4. Вам будет предложено выбрать источник данных, где вы можете выбрать источник данных из доступных источников данных.
    Например, выберите таблицу Контакты для использования примера данных:

    Выбор таблицы Контакты для отображения в коллекции.

    Если вы создали коллекцию, вместо этого выберите свою коллекцию:

    Образец коллекции контактов.

  5. Выберите элемент управления в верхнем элементе в коллекции.

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

    Выберите верхнюю запись в коллекции.

  6. Выберите Добавить значок на левой панели.

    Использование панели инструментов

    Заметка

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

  7. В верхнем элементе переместите значок в правую часть экрана.

    Перемещение значка.

  8. Выберите свойство Icon для значка и установите его равным следующей формуле, чтобы обновить изображение значка в виде значка корзины:

    Icon.Trash
    

    Заметка

    Префикс Icon. отображается только тогда, когда вы активно редактируете формулу.

    Изменение значка на значок корзины.

  9. Задайте для свойства OnSelect следующую формулу:

    Remove( [@Contacts], ThisItem )
    

    Заметка

    В этом примере необходимо использовать глобальный оператор устранения неоднозначности [@...] с демонстрационными данными, которые используют таблицу Контакты, чтобы избежать конфликта с отношением один-ко-многим. Если вы используете источники данных, такие как список или таблица SQL Server, использовать глобальный оператор устранения неоднозначности не требуется.

    OnSelect для значка корзины.

  10. Просмотрите приложение с помощью кнопки Воспроизвести в правом верхнем углу или нажмите F5 на клавиатуре.

  11. Выберите значок корзины рядом с записью, например рядом с записью контакта Maria:

    Коллекция с одним удаленным контактом.

    Запись удалена:

    Удаленная запись.

  12. Закройте предварительный просмотр приложения.