Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Келесілерге қолданылады: Кенеп бағдарламалары
Copilot Studio
Жұмыс үстелі ағындары
Модельге негізделген бағдарламалар
Power Platform CLI
Dataverse функциялары
Деректер көзінде бір немесе бірнеше жазбаны өзгертеді немесе жасайды, я болмаса деректер көзінен тыс жазбаларды біріктіреді.
Функцияны Patch күрделі жағдайларда, мысалы, пайдаланушының өзара әрекеттесуін қажет етпейтін жаңартуларды жасағанда немесе бірнеше экранды қамтитын пішіндерді пайдаланғанда жазбаларды өзгерту үшін пайдаланыңыз.
Оңай өзгертулер үшін деректер көзіндегі жазбаларды оңайырақ жаңарту үшін оның орнына Пішінді өңдеу басқару элементін пайдаланыңыз. Пішінді өңдеу басқару элементін қосқанда, сіз пайдаланушыларға толтырылатын, содан кейін өзгертулерді деректер көзіне сақтайтын пішінді қамтамасыз етесіз. Қосымша ақпаратты Деректер пішіндерін түсіну бөлімінен қараңыз.
Функцияны қалай пайдалану Patch керектігін білу үшін мына бейнені қараңыз:
Шолу
Деректер көзінің бір немесе бірнеше жазбаларын өзгерту үшін функцияны пайдаланыңыз Patch . Белгілі бір өрістердің мәндері басқа сипаттарға әсер етпестен өзгертіледі. Мысалы, бұл формула Contoso деген тұтынушының телефон нөмірін өзгертеді:
Patch( Customers, LookUp( Customers, Name = "Contoso" ), { Phone: "1-212-555-1234" } )
Жазбаларды жасау үшін Әдепкі функциясын пайдаланыңызPatch. Бұл мінез-құлықты жазбаларды жасау және өңдеу үшін бір экранды жасау үшін пайдаланыңыз. Мысалы, бұл формула Contoso деген тұтынушы үшін жазбаны жасайды:
Patch( Customers, Defaults( Customers ), { Name: "Contoso" } )
Ескертпе
Әдепкі мәндері бар деректер көзінен алынған жазбаны пайдаланып жиынды түзеткенде, патч операциясы жиынтықты көрсетілген патч мәндерімен де, деректер көзінен алынған әдепкі мәндермен де жаңартады. Жаңа жазбаны жасау үшін патч мәлімдемесінің Деректер көзі мен Әдепкі функцияның Деректер көзі сәйкес келуі керек.
Деректер көзімен жұмыс істемесеңіз де, екі немесе одан да көп жазбаларды біріктіру үшін пайдалануға Patch болады. Мысалы, бұл формула екі жазбаны Contoso телефон нөмірін және орнын көрсететін бір жазбаға біріктіреді:
Patch( { Name: "Contoso", Phone: "1-212-555-1234" }, { Name: "Contoso", Location: "Midtown" } )
Сипаттама
Деректер көзінде жазбаны өзгерту немесе жасау
Бұл функцияны деректер көзімен бірге пайдалану үшін деректер көзін көрсетіңіз, содан кейін негізгі жазбаны көрсетіңіз:
- Жазбаны өзгерту үшін негізгі жазба деректер көзінен келуі керек. Негізгі жазба галереяның Элементтер сипаты арқылы келуі мүмкін, контекст айнымалысына орналастырылған немесе басқа жолмен келуі мүмкін. Бірақ, негізгі жазба қай деректер көзінен шыққанын анықтай аласыз. Бұл өте маңызды, өйткені жазба жазбаны өзгерту үшін қайта табуға көмектесетін қосымша ақпаратты қамтиды.
- Жазбаны жасау үшін әдепкі мәндері бар негізгі жазбаны жасау үшін Defaults функциясын пайдаланыңыз.
Содан кейін әрқайсысы негізгі жазбадағы сипат мәндерін қайта анықтайтын жаңа сипат мәндерін қамтитын бір немесе бірнеше өзгерту жазбасын көрсетіңіз. Өзгерту жазбалары аргументтер тізімінің басынан соңына қарай ретпен өңделеді, кешірек сипат мәндері ертеректерін қайта анықтайды.
Қайтару мәні Patch - бұл сіз өзгерткен немесе жасалған жазба. Егер жазба жасасаңыз, қайтарылған мәнге деректер көзі автоматты түрде жасалған сипаттарды қамтуы мүмкін. Алайда, қайтарылатын мән қатысты кестенің өрістері үшін мән бермейді.
Мысалы, сіз Set(MyAccount, Patch(Accounts, First(Account), 'Account Name': "Example name"));, содан кейін MyAccount.'Primary Contact'.'Full Name' пайдаланасыз. Бұл жағдайда толық атты пайдалана алмайсыз. Оның орнына қатысты кестенің өрістеріне қатынасу үшін келесідей бөлек іздеуді қолданыңыз:
LookUp(Accounts, Account = MyAccount.Account).'Primary Contact'.'Full Name'
Деректер көзін жаңартқан кезде бір немесе бірнеше мәселелер туындауы мүмкін. Қателерді өңдеу бөлімінде сипатталғандай, қателерді анықтау және оларға жауап беру үшін IfError Patch және IsError мәнімен IfError және IsError мәнін пайдаланыңыз. Сондай‑ақ Errors функциясын Деректер көздерімен жұмыс істеу бөлімінде сипатталғандай мәселелерді анықтау және тексеру үшін пайдалануға болады.
Қатысты функциялар бүкіл жазбаны ауыстыру үшін Update функциясын және жазбаны жасау үшін Collect функциясын қамтиды. UpdateIf функциясын шарттың негізінде бірнеше жазбаның белгілі бір сипаттарын өзгерту үшін пайдаланыңыз.
Деректер көзінде жазбалар жиынын өзгерту немесе жасау
Patch Сондай-ақ, бір қоңырау арқылы бірнеше жазбаларды жасау немесе өзгерту үшін пайдалануға болады.
Бір негізгі жазбаны өткізу орнына екінші аргументте негізгі жазбалар кестесін беруге болады. Өзгерту жазбалары да негізгі жазбалармен бір-бірге сәйкес келетін кестеде беріледі. Әр өзгерту кестесіндегі жазбалардың саны негізгі кестедегі жазбалар санымен бірдей болуы керек.
Осы жолмен пайдаланған Patch кезде, қайтарылатын мән сонымен қатар әр жазба базалық және өзгерту жазбаларымен бір-біріне сәйкес келетін кесте болып табылады.
Деректер көзінен тыс жазбаларды біріктіру
Біріктіру керек екі немесе көбірек жазбаны көрсетіңіз. Жазбалар аргументтер тізімінің басынан соңына қарай ретпен өңделеді, кешірек сипат мәндері ертеректерін қайта анықтайды.
Patch Біріктірілген жазбаны береді және оның аргументтерін немесе деректер көздеріндегі жазбаларды өзгертпейді.
Синтаксис
Деректер көзінде жазбаны өзгерту немесе жасау
Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, ... ])
- Деректер көзі – Міндетті. Сіз өзгерткіңіз келетін жазбаны қамтитын немесе жасағыңыз келетін жазбаны қамтитын деректер көзі.
- BaseRecord – Міндетті. Өзгертетін немесе жасайтын жазба. Жазба деректер көзінен келген болса, жазба табылады және өзгертіледі. Defaults нәтижесі пайдаланылса, жазба жасалады. Жаңа жазбаны жасау үшін патч мәлімдемесінің Деректер көзі мен Әдепкі функцияның Деректер көзі сәйкес келуі керек.
- Жазбаларды өзгерту – Міндетті. BaseRecord ішіндегі өзгертетін сипаттарды қамтитын бір немесе бірнеше жазба. Өзгерту жазбалары аргументтер тізімінің басынан соңына қарай ретпен өңделеді, кешірек сипат мәндері ертеректерін қайта анықтайды.
Деректер көзінде жазбалар жиынын өзгерту немесе жасау
Patch( DataSource, BaseRecordsTable, ChangeRecordTable1 [, ChangeRecordTable2, ... ] )
- Деректер көзі – Міндетті. Сіз өзгерткіңіз келетін жазбаларды қамтитын немесе жасағыңыз келетін жазбаларды қамтитын деректер көзі.
- BaseRecordTable – Міндетті. Өзгертетін немесе жасайтын жазбалар кестесі. Жазба деректер көзінен келген болса, жазба табылады және өзгертіледі. Defaults нәтижесі пайдаланылса, жазба жасалады. Жаңа жазбаны жасау үшін патч мәлімдемесінің Деректер көзі мен Әдепкі функцияның Деректер көзі сәйкес келуі керек.
- Жазба кестелерін өзгерту – Міндетті. BaseRecordTable кестесінің әр жазбасы үшін өзгертеін сипаттарды қамтитын бір немесе бірнеше жазбалар кестесі. Өзгерту жазбалары аргументтер тізімінің басынан соңына қарай ретпен өңделеді, кешірек сипат мәндері ертеректерін қайта анықтайды.
Жазбаларды біріктіру
Patch( Жазба1, Жазба2 [, ...] )
- Жазбалар - Міндетті. Біріктіру керек кемінде екі жазба. Жазбалар аргументтер тізімінің басынан соңына қарай ретпен өңделеді, кешірек сипат мәндері ертеректерін қайта анықтайды.
Мысалдар
Деректер көзінде жазбаны өзгерту немесе жасау
Бұл мысалдарда, сіз IceCream атты деректер көзінде осы кестеде деректерді қамтитын және Идентификаторбағанында мәндерді автоматты түрде жасайтын жазбаны өзгертесіз немесе жасайсыз:
| Формула | Сипаттама | Нәтиже |
|---|---|---|
|
Patch( Балмұздақ, LookUp( Балмұздақ, Дәм = "Шоколад" ), { Саны: 400 } ) |
IceCream деректер көзіндегі жазбаны өзгертеді:
|
{ ID: 1, Дәм: "Шоколад", Саны: 400 } IceCream деректер көзіндегі Chocolate жазбасы өзгертілді. |
| Patch( Балмұздақ, әдепкі ( Балмұздақ ), { Хош иістендіргіш: «Құлпынай» } ) |
IceCream деректер көзінде жазба жасайды:
|
{ ID: 3, Дәм: "Құлпынай", Саны: 0 } IceCream деректер көзіндегі Құлпынай жазбасы жасалды. |
Алдыңғы формулалар есептелгеннен кейін деректер көзі мына мәндермен аяқталады:
Деректер көзінен тыс жазбаларды біріктіру
| Формула | Сипаттама | Нәтиже |
|---|---|---|
| Patch( { Name: "James", Score: 90 }, { Name: "Jim", Passed: true } ) | Деректер көзінен тыс екі жазбаны біріктіреді:
|
{ Name: "Jim", Score: 90, Passed: true } |
As немесе ThisRecord кілт сөзін пайдалану
Формулада As немесе ThisRecord кілт сөзін пайдалану анық емес бағалау контекстін болдырмайды.
Төмендегі мысалда If мәлімдемесіндегі бірінші іздеуді қарастырайық.
(OrderID = A[@OrderID]) іздеу ауқымындағы OrderId ді OrderId ауқымындағы A жинақ ForAll мен салыстырады деп күтілуде. Бұл жағдайда сіз A[@OrderId] жергілікті параметр ретінде шешілгенін қалауыңыз мүмкін. Бірақ бұл анық емес.
Power Apps бағдарламасы қазіргі уақытта сол жақ OrderId және оң жақ A[@OrderId] іздеу ауқымындағы өріс ретінде қарастырады. Сондықтан іздеу әрқашан бірінші жолды [dbo].[Orders1] табады, себебі шарт әрдайым шын болады (яғни кез келген жолдың OrderId өзіне тең.)
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]',
OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]',
OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
As немесе ThisRecord кілт сөзін пайдалану
Мүмкіндігінше As операторын немесе ThisRecord сол жағын ажырату үшін пайдаланыңыз. As жоғарыдағы сценарий үшін ұсынылады.
Сіздің формулаңыз бір дерек көздерінде немесе кестеде ForAll, Filter және Lookup бар бірнеше ауқымды қолданған кезде, ауқым параметрлері басқа жерде бірдей өріспен соқтығысуы мүмкін. Сондықтан As операторын немесе ThisRecord өріс атауын шешу және екіұштылықты болдырмау үшін пайдаланған жөн.
Мысалы, As операторын төмендегі мысалда екіұштылықты жою үшін пайдалануға болады.
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]' As B,
B.OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]' As C,
C.OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
Сонымен қатар ThisRecord операторын да сол мақсат үшін пайдалануға болады.
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]',
ThisRecord.OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]',
ThisRecord.OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
As және ThisRecord операторын пайдалану туралы қосымша ақпаратты Операторлар мақаласынан қараңыз.