Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: Приложения на основе модели на
основе холста
В этой статье приведены сведения об ошибках, связанных с предыдущими изменениями источника данных.
Обзор
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 в функцию.
Пластырь или другая функция данных может возвращать пустой значение, если, например, запись не может быть создана. В эти случаи можно передать пустыеErrorsданные об ошибке. Последующее использование функций данных в том же источнике данных очищает эту информацию об ошибке.
Если ошибок нет, таблица, возвращаемая Errors , будет пуста и может быть проверена с помощью функции IsEmpty .
Синтаксис
Errors( DataSource [, Record ] )
- DataSource — обязательный аргумент. Источник данных, для которого необходимо вернуть ошибки.
- Записывать - Необязательный. Определенная запись, для которой необходимо вернуть ошибки. Если этот аргумент не указан, функция возвратит ошибки для всего источника данных.
Примеры
Пошаговое руководство
В этом примере мы будем работать с источником данных IceCream , источником данных, для которого Power Apps попытается обнаружить конфликты:
Замечание
Power Apps не пытается обнаружить конфликты для изменений в таблицах Dataverse.
С помощью приложения пользователь загружает запись Chocolate в форму ввода данных, а затем изменяет значение свойства Quantity на 90. Запись помещается в переменную контекстаEditRecord:
- ОбновлениеКонтекста( { EditRecord: LookUp(Мороженое, Вкус = "Шоколад") } )
Внести эти изменения в источник можно с помощью функции Patch:
- Патч (IceCream, EditRecord, Gallery.Updates)
Где Gallery.Updates оценивается как {Quantity: 90 }, так как было изменено только свойство Quantity .
К сожалению, прямо перед вызовом функции Patch кто-то изменил значение свойства Quantity для записи Chocolate на 80. Так как это поддерживаемый источник данных для обнаружения конфликтов, Power Apps будет обнаруживать это и не разрешать конфликтующее изменение. Вы можете проверить, случилось ли нечто подобное, с помощью формулы:
- IsEmpty( ErrorsIceCream, EditRecord ) )
Возвращает значение false, так как Errors функция вернула следующую таблицу:
| Запись | Столбец | Сообщение | Ошибка |
|---|---|---|---|
| { Вкус: "Шоколад", Количество: 100 } | пустой | "Запись, которую вы пытаетесь изменить, изменена другим пользователем. Перезагрузите запись и повторите попытку". | ErrorKind.Conflict |
Вы можете поместить метку в форме для отображения данной ошибки пользователю.
- Чтобы отобразить ошибку, задайте для свойства Text метки эту формулу:
Label.Text = First(Errors( IceCream, EditRecord )). Сообщение
Вы также можете добавить в форму кнопку Перезагрузить, чтобы пользователь мог эффективно разрешить конфликт.
- Чтобы отображать кнопку только при возникновении конфликта, задайте для свойства Visible кнопки эту формулу:
! IsEmpty( Lookup( ErrorsIceCream, EditRecord ), Error = ErrorKind.Conflict ) - Чтобы вернуть изменение, которое пользователь выбирает кнопку, задайте для свойства OnSelect следующую формулу:
ReloadButton.OnSelect = отменить изменения(Мороженое, Редактировать запись)