Нотатка
Доступ до цієї сторінки потребує авторизації. Можна спробувати ввійти або змінити каталоги.
Доступ до цієї сторінки потребує авторизації. Можна спробувати змінити каталоги.
Застосовується до: Програми canvas
Model-driven
Надання відомостей про помилки для попередніх змін у джерелі даних.
Зведення
Errors може статися, коли змінюється запис джерела даних. Із-поміж безлічі можливих причин можна відмітити відключення мережі, відсутність дозволів та конфлікти, пов’язані з редагуванням.
Функції, які змінюють дані в джерелах даних, як-от Patch, Collect, Remove, RemoveIf, Update, UpdateIf і SubmitForm, звітують про помилки у два способи:
- Кожна з цих функцій повертає значення помилки в результаті операції. Errors можна виявити за допомогою IsError і замінити або заборонити використання IfError і App.OnError , як зазвичай. Додаткову інформацію див. в розділі Обробка помилок.
- Після операції Errors функція також поверне помилки для попередніх операцій. Це може бути корисно для відображення повідомлення про помилку на екрані форми без необхідності записувати помилку в змінну стану.
Виникненню деяких помилок можна запобігти, якщо скористатися функціями Validate і DataSourceInfo. Пропозиції щодо роботи з помилками та їх уникнення див. в розділі про роботу із джерелами даних.
Опис
Функція Errors повертає таблицю помилок, яка містить такі стовпці:
- Запис. Запис у джерелі даних, щодо якого виникла помилка. Якщо під час створення запису сталася помилка, цей стовпець пустий.
- Стовпець. Стовпець, що спричинив помилку, якщо її можна віднести до одного стовпця. Якщо ні, це пусто.
- Повідомлення. Опис помилки. Цей рядок помилки може відображатися для кінцевого користувача. Це повідомлення може бути створене джерелом даних і може бути довгим і містити необроблені імена стовпців, які можуть не мати ніякого значення для користувача.
- Помилка. Код помилки, який можна використовувати у формулах для усунення помилки.
| ErrorKind | Опис |
|---|---|
| ErrorKind.Conflict | До того самого запису було внесено іншу зміну, що призвело до конфлікту змінення. Скористайтеся функцією Refresh, щоб перезавантажити запис і знову спробувати внести зміну. |
| ErrorKind.ConstraintViolation | Порушено одне або кілька обмежень. |
| ErrorKind.CreatePermission | Здійснено спробу створити запис, але поточний користувач не має дозволу на створення записів. |
| ErrorKind.DeletePermission | Здійснено спробу видалити запис, але поточний користувач не має дозволу на видалення записів. |
| ErrorKind.EditPermission | Здійснено спробу редагувати запис, але поточний користувач не має дозволу на редагування записів. |
| ErrorKind.GeneratedValue | Здійснено спробу змінити стовпець, який джерело даних створює автоматично. |
| ErrorKind.MissingRequired | У записі відсутнє значення для обов’язкового стовпця. |
| ErrorKind.None | Помилка відсутня. |
| ErrorKind.NotFound | Здійснено спробу редагувати або видалити запис, однак запис не вдалося знайти. Можливо, запис змінив інший користувач. |
| ErrorKind.ReadOnlyValue | Здійснено спробу змінити стовпець лише для читання. |
| ErrorKind.Sync | Джерело даних повідомило про помилку. Додаткові відомості див. в стовпці «Message». |
| ErrorKind.Unknown | Сталася помилка невідомого типу. |
| ErrorKind.Validation | Виявлено загальну проблему перевірки, яка не відповідає одному з інших типів. |
Errors можна повернути для всього джерела даних або лише для вибраного рядка, надавши функцію аргументу Record .
Patch або інша функція даних може повертати порожнє значення, якщо, наприклад, запис не вдалося створити. У таких випадках можна передати пусті дані до Errors, і вона повертає відповідні відомості про помилку. Подальше використання функцій даних у тому самому джерелі даних очищує ці відомості про помилку.
Якщо помилок немає, таблиця, яка Errors повертається, буде пустою , і її можна перевірити за допомогою функції IsEmpty .
Синтаксис
Errors( DataSource [, Record ] )
- Джерело даних– Обов’язковий. Джерело даних, для якого потрібно повернути помилки.
- Запис – необов’язковий. Певний запис, для якого потрібно повернути помилки. Якщо не вказати цей аргумент, функція повертатиме помилки для всього джерела даних.
Приклади
Покрокові інструкції
У цьому прикладі ми працюватимемо з джерелом даних IceCream – джерелом даних, для якого надбудова Power Apps намагатиметься виявити конфлікти:
Нотатка
Програма Power Apps не намагається виявити конфлікти змін у таблицях Dataverse.
У програмі користувач завантажує запис «Chocolate» (Шоколадне) у форму введення даних, а потім змінює значення стовпця Quantity (Кількість) на 90. Запис, з яким потрібно працювати, розміщується в змінній контекстуEditRecord.
- UpdateContext( { EditRecord: LookUp( Морозиво, Смак = "Шоколад" ) } )
Для внесення цієї зміни до джерела даних використовується функція Patch.
- Патч ( IceCream, EditRecord, Gallery.Updates )
Де Gallery.Updates оцінюється до { Кількість: 90 }, оскільки змінено лише властивість "Кількість ".
На жаль, якраз перед викликом функції Patch, хтось змінив значення Quantity для запису «Chocolate» на 80. Оскільки це підтримуване джерело даних для виявлення конфліктів, надбудова Power Apps виявить це та не дозволить конфліктні зміни. Цю ситуацію можна перевірити за допомогою нижчезазначеної формули.
- IsEmpty( Errors( IceCream, EditRecord )
Яка повертає значення false, оскільки Errors функція повернула таку таблицю:
| Запис | Стовпчик | Повідомлення | Помилка |
|---|---|---|---|
| { Смак: "Шоколад", Кількість: 100 } | Порожній | «Інший користувач змінив запис, який ви намагається змінити. Перезавантажте запис і повторіть спробу". | ErrorKind.Conflict |
У формі можна розмістити підпис, щоб показати цю помилку користувачеві.
- Для відображення помилки настройте властивість Text елемента керування «Підпис» відповідно до зазначеної нижче формули.
Label.Text = First(Errors( IceCream, EditRecord )). Повідомлення
Також до форми можна додати кнопку Перезавантажити, щоб користувач міг ефективно вирішити конфлікт.
- Для відображення кнопки тільки в разі виникнення конфлікту настройте властивість Visible елемента керування «Кнопка» відповідно до нижченаведеної формули.
! IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) - Щоб повернути зміну, яку користувач натискає на кнопку, установіть для властивості OnSelect цю формулу:
ReloadButton.OnSelect = повернутися( IceCream, EditRecord )