Бележка
Достъпът до тази страница изисква удостоверяване. Можете да опитате да влезете или да промените директориите.
Достъпът до тази страница изисква удостоверяване. Можете да опитате да промените директориите.
Отнася се за: Приложения
за платно, базирани на модел приложения
Предоставя информация за грешка при предишни промени на източник на данни.
Преглед
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 | Грешка е докладвана от източника на данни. Проверете графата Съобщение за повече информация. |
| ErrorKind.Unknown | Възникна грешка, но от неизвестен вид. |
| ErrorKind.Validation | Открит е общ проблем с проверката, който не се побира в един от другите видове. |
Errors може да се върне за целия източник на данни или само за избран ред чрез предоставяне на аргумента Запис на функцията.
Корекция или друга функция за данни може да върне празна стойност, ако например не може да се създаде запис. Можете да предадете празно на Errorsи връща подходяща информация за грешките в тези случаи. Последващото използване на функции за данни в един и същ източник на данни изчиства тази информация за грешки.
Ако няма грешки, таблицата, която се връща, Errors ще бъде празна и може да бъде тествана с функцията IsEmpty .
Синтаксис
Errors( Източник на данни [, Запис ] )
- Източник на данни – Задължително. Източникът на данни, за който искате да върнете грешки.
- Запис – По избор. Специфичен запис, за който искате да върнете грешки. Ако не посочите този аргумент, функцията връща грешки за целия източник на данни.
Примери
Стъпка по стъпка
За този пример ще работим с източника на данни IceCream – източник на данни, за който Power Apps ще се опита да открие конфликти:
Бележка
Power Apps не се опитва да открие конфликти за промени в таблиците на Dataverse.
Чрез приложението потребителят зарежда записа на шоколад във форма за въвеждане на данни и след това променя стойността на количество на 90. Записът, с който ще се работи, се поставя в контекстна променливаEditRecord:
- UpdateContext( { EditRecord: LookUp( IceCream, Flavor = "Chocolate" ) } )
За да направите тази промяна в източник на данни, функцията Patch се използва:
- Patch( IceCream, EditRecord, Gallery.Updates )
Където Gallery.Updates дава оценка на { Количество: 90 }, тъй като е променено само свойството Quantity .
За съжаление, точно преди функцията Patch да бъде извикана, някой друг модифицира количество за шоколад до 80. Тъй като това е поддържан източник на данни за откриване на конфликти, Power Apps ще открие това и няма да позволи да възникне конфликтна промяна. Можете да проверите за тази ситуация с формулата:
- IsEmpty( Errors( IceCream, EditRecord )
Което връща "неистина", защото Errors функцията върна следната таблица:
| Запис | Колона | Съобщение | Грешка |
|---|---|---|---|
| { Вкус: "Шоколад", Количество: 100 } | интервал | „Друг потребител е променил записа, който се опитвате да промените. Презаредете записа и опитайте отново." | ErrorKind.Conflict |
Можете да поставите етикет върху формата, за да покажете тази грешка на потребителя.
- За да покажете грешката, задайте свойството Text на етикета на тази формула:
Label.Text = First(Errors( IceCream, EditRecord )). Съобщение
Можете също да добавите бутон Презареждане върху формуляра, така че потребителят да може ефективно да разреши конфликта.
- За да се показва бутонът само когато е възникнал конфликт, задайте свойството на бутоните видимо на тази формула:
! IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) - За да върнете промяната, която потребителят избира бутона, задайте неговото свойство OnSelect на тази формула:
ReloadButton.OnSelect = Revert( IceCream, EditRecord )