Функция Patch в PowerAppsPatch function in PowerApps

Эта функция изменяет или создает одну или несколько записей в источнике данных или объединяет записи вне этого источника.Modifies or creates one or more records in a data source, or merges records outside of a data source.

Используйте функцию Patch, чтобы изменять записи в сложных ситуациях, например при автоматическом выполнении обновлений или при использовании форм, охватывающих несколько экранов.Use the Patch function to modify records in complex situations, such as when you perform updates that require no user interaction or use forms that span multiple screens.

В менее сложных ситуациях для обновления записей в источнике данных можно использовать элемент управления Форма изменения.In less complex situations, you can use the Edit form control to update records in a data source more easily. При добавлении элемента управления Форма изменения пользователь должен заполнить форму, а затем сохранить изменения в источник данных.When you add an Edit form control, you provide users with a form to fill in and then save the changes to a data source. Дополнительные сведения о формах данных см. в этой статье.For more information, see Understand data forms.

ОбзорOverview

Используйте функцию Patch, чтобы изменить одну или несколько записей источника данных.Use the Patch function to modify one or more records of a data source. Значения определенных полей изменяются, не затрагивая другие свойства.The values of specific fields are modified without affecting other properties. Например, следующая формула изменяет номер телефона клиента с именем Contoso:For example, this formula changes the phone number for a customer named Contoso:

Patch( Customers, First( Filter( Customers, Name = "Contoso" ) ), { Phone: “1-212-555-1234” } )Patch( Customers, First( Filter( Customers, Name = "Contoso" ) ), { Phone: “1-212-555-1234” } )

Используйте функцию Patch с функцией Defaults для создания записей.Use Patch with the Defaults function to create records. Используйте это поведение, чтобы настроить единый экран для создания и изменения записей.Use this behavior to build a single screen for both creating and editing records. Например, следующая формула создает запись для клиента с именем Contoso:For example, this formula creates a record for a customer named Contoso:

Patch( Customers, Defaults( Customer ), { Name: “Contoso” } )Patch( Customers, Defaults( Customer ), { Name: “Contoso” } )

Даже если вы не работаете с источником данных, вы можете использовать функцию Patch, чтобы объединить две записи или более.Even if you're not working with a data source, you can use Patch to merge two or more records. Например, следующая формула объединяет две записи в одну, которая определяет и номер телефона, и расположение Contoso:For example, this formula merges two records into one that identifies both the phone number and the location for Contoso:

Patch( { Name: "Contoso", Phone: “1-212-555-1234” }, { Name: "Contoso", Location: “Midtown” } )Patch( { Name: "Contoso", Phone: “1-212-555-1234” }, { Name: "Contoso", Location: “Midtown” } )

ОписаниеDescription

Изменение или создание записи в источнике данныхModify or create a record in a data source

Чтобы использовать эту функцию с источником данных, укажите источник данных, а затем укажите базовую запись.To use this function with a data source, specify the data source, and then specify a base record:

  • Чтобы изменить запись, базовая запись должна быть частью источника данных.To modify a record, the base record needs to have come from a data source. Базовая запись может быть задана через свойство Items коллекции, размещаться в переменной контекста или быть доступна другим образом.The base record may have come through a gallery's Items property, been placed in a context variable, or come through some other path. Однако у вас должна быть возможность отследить обратный путь базовой записи к источнику данных.But you should be able to trace the base record back to the data source. Это важно, так как запись будет содержать дополнительные сведения, на основе которых ее можно повторно найти для изменения.This is important as the record will include additional information to help find the record again for modification.
  • Чтобы создать запись, используйте функцию Defaults. С помощью этой функции вы создадите базовую запись со значениями по умолчанию.To create a record, use the Defaults function to create a base record with default values.

Затем укажите одну или несколько записей с изменениями, каждая из которых содержит новые значения свойства, переопределяющие значения свойства в базовой записи.Then specify one or more change records, each of which contains new property values that override property values in the base record. Изменения записей обрабатываются от начала и до конца списка аргументов. При этом последние значения свойства переопределяют ранее созданные.Change records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

Возвращаемое значение функции Patch — это запись, которую вы изменили или создали.The return value of Patch is the record that you modified or created. Если вы создали запись, возвращаемое значение может содержать свойства, созданные источником данных автоматически.If you created a record, the return value may include properties that the data source generated automatically.

При обновлении источника данных может возникнуть одна или несколько проблем.When you update a data source, one or more issues may arise. Используйте функцию Errors, чтобы определить и проанализировать проблемы, как описано в статье о работе с источниками данных.Use the Errors function to identify and examine issues, as Working with Data Sources describes.

Связанные функции включают функцию Update, с помощью которой можно заменить всю запись, а также функцию Collect, с помощью которой можно создать запись.Related functions include the Update function, which you can use to replace an entire record, and the Collect function, which you can use to create a record. Вы можете использовать функцию UpdateIf, чтобы изменить определенные свойства нескольких записей на основе условия.You can use the UpdateIf function to modify specific properties of multiple records based on a condition.

Изменение или создание набора записей в источнике данныхModify or create a set of records in a data source

Вы также можете использовать функцию Patch для создания или изменения нескольких записей с помощью одного вызова.Patch can also be used to create or modify multiple records with a single call.

Во втором аргументе можно указать целую таблицу базовых записей, вместо того чтобы передавать отдельную базовую запись.Instead of passing a single base record, a table of base records can be provided in the second argument. В таблице также содержатся записи с изменениями, соответствующие каждой базовой записи.Change records are provided in a table as well, corresponding one-for-one with the base records. Число записей в каждой таблице с изменениями должно соответствовать числу записей в базовой таблице.The number of records in each change table must be the same as the number of records in the base table.

При использовании функции Patch таким образом, возвращаемое значение также может быть таблицей, в которой каждая запись соответствует базовым записям и записям с изменениями.When using Patch in this manner, the return value is also a table with each record corresponding one-for-one with the base and change records.

Объединение записей вне источника данныхMerge records outside of a data source

Укажите две или более записи, которые вы хотите объединить.Specify two or more records that you want to merge. Записи обрабатываются от начала и до конца списка аргументов. При этом последние значения свойства переопределяют ранее созданные.Records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

Функция Patch возвращает объединенную запись и не изменяет ее аргументы или записи в каком-либо источнике данных.Patch returns the merged record and doesn't modify its arguments or records in any data sources.

СинтаксисSyntax

Изменение или создание записи в источнике данныхModify or create a record in a data source

Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, …Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, … ])])

  • источник_данных — обязательный аргумент.DataSource – Required. Это источник данных, содержащий запись, которую необходимо изменить. Или же тот, который будет содержать запись, которую вы хотите создать.The data source that contains the record that you want to modify or will contain the record that you want to create.
  • BaseRecord — обязательный аргумент.BaseRecord – Required. Это запись, которую необходимо изменить или создать.The record to modify or create. Если запись является частью источника данных, она будет найдена и изменена.If the record came from a data source, the record is found and modified. Если используется результат функции Defaults, тогда запись создается.If the result of Defaults is used, a record is created.
  • ChangeRecord(s) — обязательный аргумент.ChangeRecord(s) – Required. Одна или несколько записей, содержащих свойства для изменения в BaseRecord.One or more records that contain properties to modify in the BaseRecord. Изменения записей обрабатываются от начала и до конца списка аргументов. При этом последние значения свойства переопределяют ранее созданные.Change records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

Изменение или создание набора записей в источнике данныхModify or create a set of records in a data source

Patch( DataSource, BaseRecordsTable, ChageRecordTable1, [, ChangeRecordTable2, …Patch( DataSource, BaseRecordsTable, ChageRecordTable1, [, ChangeRecordTable2, … ] )] )

  • источник_данных — обязательный аргумент.DataSource – Required. Это источник данных, содержащий запись, которую необходимо изменить. Или же тот, который будет содержать запись, которую вы хотите создать.The data source that contains the records that you want to modify or will contain the records that you want to create.
  • BaseRecordTable — обязательный аргумент.BaseRecordTable – Required. Таблица записей, которые нужно изменить или создать.A table of records to modify or create. Если запись является частью источника данных, она будет найдена и изменена.If the record came from a data source, the record is found and modified. Если используется результат функции Defaults, тогда запись создается.If the result of Defaults is used, a record is created.
  • ChangeRecordTable(s) — обязательный аргумент.ChangeRecordTable(s) – Required. Одна или несколько таблиц записей, содержащих свойства, которые необходимо изменить, для каждой записи в BaseRecordTable.One or more tables of records that contain properties to modify for each record of the BaseRecordTable. Изменения записей обрабатываются от начала и до конца списка аргументов. При этом последние значения свойства переопределяют ранее созданные.Change records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

Объединение записейMerge records

Patch( Record1, Record2 [, …] )Patch( Record1, Record2 [, …] )

  • Record(s) — обязательный аргумент.Record(s) - Required. Необходимо указать как минимум несколько записей для объединения.At least two records that you want to merge. Записи обрабатываются от начала и до конца списка аргументов. При этом последние значения свойства переопределяют ранее созданные.Records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

ПримерыExamples

Изменение или создание записи (в источнике данных)Modify or create a record (in a data source)

Из примеров ниже вы узнаете, как изменить или создать запись в источнике данных с именем IceCream. Этот источник содержит данные из таблицы, а также автоматически созданные значения, представленные в столбце ID.In these examples, you'll modify or create a record in a data source, named IceCream, that contains the data in this table and automatically generates the values in the ID column:

ФормулаFormula ОписаниеDescription Возвращаемый результатResult
Patch( IceCream,
First( Filter( IceCream, Flavor = "Chocolate" ) ), { Quantity: 400 } )
Patch( IceCream,
First( Filter( IceCream, Flavor = "Chocolate" ) ), { Quantity: 400 } )
Изменяет запись в источнике данных IceCream.Modifies a record in the IceCream data source:
  • Столбец записи ID, которую необходимо изменить, содержит значение 1.The ID column of the record to modify contains the value of 1. (Это значение задано для записи Chocolate.)(The Chocolate record has that ID.)
  • Значение в столбце Quantity изменится на 400.The value in the Quantity column changes to 400.
{ ID: 1, Flavor: "Chocolate", Quantity: 400 }{ ID: 1, Flavor: "Chocolate", Quantity: 400 }

Запись Chocolate в источнике данных IceCream была изменена.The Chocolate entry in the IceCream data source has been modified.
Patch( IceCream, Defaults( IceCream ), { Flavor: “Strawberry” } )Patch( IceCream, Defaults( IceCream ), { Flavor: “Strawberry” } ) Функция создает запись в источнике данных IceCream.Creates a record in the IceCream data source:
  • Столбец ID содержит значение 3, которое источник данных создает автоматически.The ID column contains the value 3, which the data source generates automatically.
  • Столбец Quantity содержит значение 0, которое является значением по умолчанию для этого столбца в источнике данных IceCream в соответствии с функцией Defaults.The Quantity column contains 0, which is the default value for that column in the IceCream data source, as the Defaults function specifies.
  • Столбец Flavor содержит значение Strawberry.The Flavor column contains the value of Strawberry.
{ ID: 3, Flavor: “Strawberry”, Quantity: 0 }{ ID: 3, Flavor: “Strawberry”, Quantity: 0 }

В источнике данных IceCream была создана запись Strawberry.The Strawberry entry in the IceCream data source has been created.

После вычисления формул выше источник данных получил следующие значения:After the previous formulas have been evaluated, the data source ends with these values:

Объединение записей (вне источника данных)Merge records (outside of a data source)

ФормулаFormula ОписаниеDescription Возвращаемый результатResult
Patch( { Name: "James", Score: 90 }, { Name: "Jim", Passed: true } )Patch( { Name: "James", Score: 90 }, { Name: "Jim", Passed: true } ) Функция объединяет две записи вне источника данных.Merges two records outside of a data source:
  • Значения в столбце Name для каждой записи не совпадают.The values in the Name column of each record don't match. Результат содержит значение (Jim) в записи в конце списка аргументов вместо значения (James) в начале этого списка.The result contains the value (Jim) in the record that's closer to the end of the argument list instead of the value (James) in the record that's closer to the start.
  • Первая запись содержит столбец (Score), который отсутствует во второй записи.The first record contains a column (Score) that doesn't exist in the second record. Результат содержит этот столбец со значением (90).The result contains that column with its value (90).
  • Вторая запись содержит столбец (Passed), который отсутствует в первой записи.The second record contains a column (Passed) that doesn't exist in the first record. Результат содержит этот столбец со значением (true).The result contains that column with its value (true).
{ Name: "Jim", Score: 90, Passed: true }{ Name: "Jim", Score: 90, Passed: true }