Функции Update и UpdateIf в PowerAppsUpdate and UpdateIf functions in PowerApps

Обновление записей в источнике данных.Updates records in a data source.

ОписаниеDescription

Функция UpdateUpdate function

Используйте функцию Update для замены всей записи в источнике данных.Use the Update function to replace an entire record in a data source. Функции UpdateIf и Patch, наоборот, изменяют одно или несколько значений в записи, оставляя другие значения без изменений.In contrast, the UpdateIf and the Patch functions modify one or more values in a record, leaving the other values alone.

При использовании коллекции вся запись должна совпадать.For a collection, the entire record must match. В коллекциях допускаются повторяющиеся записи, так что возможны совпадения нескольких записей.Collections allow duplicate records, so multiple records might match. Для обновления всех экземпляров записи можно использовать аргумент All, иначе обновляется только один экземпляр записи.You can use the All argument to update all copies of a record; otherwise, only one copy of the record is updated.

Если в источнике данных значение столбца создается автоматически, такое значение требует повторного подтверждения.If the data source generates a column's value automatically, the value of that column must be reaffirmed.

Функция UpdateIfUpdateIf function

Используйте функцию UpdateIf для изменения одного или нескольких значений в одной или нескольких записях, которые соответствуют одному или нескольким условиям.Use the UpdateIf function to modify one or more values in one or more records that match one or more conditions. Условием может быть любая формула, которая возвращает результат true или false и может содержать ссылки на столбцы в источнике данных (по имени).The condition can be any formula that results in a true or false and can reference columns of the data source by name. Функция оценивает условие для каждой записи и изменяет все записи, для которых возвращен результат true.The function evaluates the condition for each record and modifies any record for which the result is true.

Чтобы указать изменение, используйте запись изменения, содержащую новые значения свойств.To specify a modification, use a change record that contains new property values. Если указать эту запись изменения в фигурных скобках, формулы свойств смогут ссылаться на свойства изменяемой записи.If you provide this change record inline with curly braces, property formulas can reference properties of the record that's being modified. Такое поведение можно использовать для изменения записей на основе формул.You can use this behavior to modify records based on a formula.

Так же как и функцию UpdateIf, функцию Patch можно использовать для изменения определенных столбцов записи без изменения других столбцов.Similar to UpdateIf, you can also use the Patch function to change specific columns of a record without affecting other columns.

Функции Update и UpdateIf возвращают измененный источник данных в виде таблицы.Both Update and UpdateIf return the modified data source as a table. Необходимо использовать любую из этих функций в формуле поведения.You must use either function in a behavior formula.

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

When used with a data source, these functions can't be delegated. Only the first portion of the data source will be retrieved and then the function applied. The result may not represent the complete story. A blue dot will appear at authoring time to remind you of this limitation and to suggest switching to delegable alternatives where possible. For more information, see the delegation overview.

СинтаксисSyntax

Update( DataSource, OldRecord, NewRecord [, All ] )Update( DataSource, OldRecord, NewRecord [, All ] )

  • DataSource — обязательный аргумент.DataSource – Required. Это источник данных, содержащий записи, которые требуется заменить.The data source that contains the record that you want to replace.
  • OldRecord — обязательный аргумент.OldRecord – Required. Это запись для замены.The record to replace.
  • NewRecord — обязательный аргумент.NewRecord – Required. Запись, которой нужно заменить исходную запись.The replacement record. Она не является записью изменения.This isn't a change record. Выполняется замена всей записи, а для отсутствующих свойств будет указано значение blank.The entire record is replaced, and missing properties will contain blank.
  • All — необязательный аргумент.All – Optional. В коллекции допускается существование нескольких копий одной записи.In a collection, the same record may appear more than once. Укажите аргумент All, чтобы удалить все копии записи.Specify the All argument to remove all copies of the record.

UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • DataSource — обязательный аргумент.DataSource – Required. Это источник данных, содержащий запись или записи, которые требуется изменить.The data source that contains the record or records that you want to modify.
  • Condition(s) — обязательный аргумент.Condition(s) – Required. Формула, возвращающая значение true для одной или нескольких записей, которые необходимо изменить.A formula that evaluates to true for the record or records that you want to modify. В формуле можно использовать названия столбцов из аргумента DataSource.You can use column names of DataSource in the formula.
  • ChangeRecord(s) — обязательный аргумент.ChangeRecord(s) - Required. Для каждого соответствующего условия запись изменений нового значения свойства должна применяться к записям аргумента DataSource, которые удовлетворяют этому условию.For each corresponding condition, a change record of new property values to apply to records of DataSource that satisfy the condition. Если запись указывается в фигурных скобках, значения свойств существующей записи можно использовать в формулах свойств.If you provide the record inline using curly braces, property values of the existing record can be used in the property formulas.

ПримерыExamples

В этих примерах выполняется замена или изменение записей в источнике данных под названием IceCream, в начале которого указаны данные из этой таблицы:In these examples, you'll replace or modify records in a data source that's named IceCream and that starts with the data in this table:

ФормулаFormula ОписаниеDescription Возвращаемый результатResult
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Выполняется замена записи из источника данных.Replaces a record from the data source.

Источник данных IceCream изменен.The IceCream data source has been modified.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } )UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Выполняется изменение записей, в которых значение Quantity больше 150.Modifies records that have a Quantity that is greater than 150. Значение в поле Quantity увеличивается на 10, а остальные поля остаются без изменений.The Quantity field is incremented by 10, and no other fields are modified.

Источник данных IceCream изменен.The IceCream data source has been modified.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Выполняется замена записи из источника данных.Replaces a record from the data source. Свойство Quantity не указано в записи замены, так что для него будет возвращено значение blank.The Quantity property hasn't been supplied in the replacement record, so that property will be blank in the result.

Источник данных IceCream изменен.The IceCream data source has been modified.
UpdateIf( IceCream, true, { Quantity: 0 } )UpdateIf( IceCream, true, { Quantity: 0 } ) Эта формула устанавливает значение 0 для свойства Quantity во всех записях в источнике данных.Sets the value of the Quantity property for all records in the data source to 0.

Источник данных IceCream изменен.The IceCream data source has been modified.

Шаг за шагомStep by step

  1. Импортируйте или создайте коллекцию с именем Inventory и отобразите ее в коллекции, как описано в этой статье.Import or create a collection named Inventory, and show it in a gallery as Show data in a gallery describes.
  2. Присвойте коллекции имя ProductGallery.Name the gallery ProductGallery.
  3. Добавьте ползунок с именем UnitsSold и для его свойства Max задайте значение в виде следующего выражения:Add a slider named UnitsSold, and set its Max property to this expression:
    ProductGallery.Selected.UnitsInStockProductGallery.Selected.UnitsInStock
  4. Добавьте кнопку и задайте следующую формулу в качестве значения свойства OnSelect:Add a button, and set its OnSelect property to this formula:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})
  5. Нажмите клавишу F5, выберите продукт в коллекции, укажите значение с помощью ползунка и затем нажмите кнопку.Press F5, select a product in the gallery, specify a value with the slider, and then select the button.

    Указанное вами число единиц продукта в наличии уменьшится соответствующим образом.The number of units in stock for the product you specified decreases by the amount that you specified.