AddError, AddInformation, AddWarning – валидация
<< Click to Display Table of Contents >> Объектная модель > Действия с репозиториями и сущностями AddError, AddInformation, AddWarning – валидация |
Иногда пользователи ошибаются при вводе данных в систему. Это может привести к нарушению целостности информации в системе. Чтобы уменьшить число ошибок, нужно предупреждать пользователей о некорректных данных.
Валидация – это проверка состояния объекта перед дальнейшей работой с ним. С помощью валидации пользователю сообщается, что в данных есть ошибки, неточности, особенности, на которые он может повлиять.
В Directum RX есть несколько способов реализации валидации: сообщения, привязанные к свойствам, сообщения, привязанные к карточке, диалоги и всплывающие сообщения.
Валидацию условно можно разделить на два типа:
•строгая валидация. Не дает сохранить сущность, перейти к заполнению следующего поля или выполнить действие, если данные некорректны или не выполнены обязательные условия. Осуществляется с помощью метода e.AddError(). Для вывода информации используются сообщения валидации или сообщения об ошибках MessageType.Error.
ВАЖНО. Выполнение операций не прекращается, если при перекрытии или наследовании после e.AddError() вызывается метод, действие или событие из родительского типа сущности. Например, в коде выше после e.AddError() вызывается действие SendForApproval() из типа документа Contract. Чтобы после сообщения об ошибке не выполнялось действие SendForApproval(), используйте оператор return для принудительного завершения действия. Подробнее см. пример «Как запретить отправку договора на согласование, если не указана сумма».
•нестрогая валидация. Предупреждает пользователя или информирует его, но никак не ограничивает его действия. Осуществляется с помощью методов e.AddWarning() или e.AddInformation(). Для вывода информации используются сообщения валидации, всплывающие сообщения, предупреждающие MessageType.Warning или информационные MessageType.Information.
Стоит учитывать, что пользователь может проигнорировать нестрогую валидацию или ее не увидеть. Например, если пользователь нажмет на кнопку Сохранить и закрыть, то ни одного предупреждающего сообщения он не увидит.
Валидация сущностей доступна в обработчиках действий, событиях сущностей «До сохранения», «До удаления», в событии формы сущности «Обновление формы» и в событии свойств сущности «Изменение значения контрола».
Валидация панели фильтрации задается в событии «Проверка фильтра» для вычисляемых папок и списков.
Перед применением валидации следует ознакомиться с рекомендациями.
Методы
Имя |
Описание |
---|---|
Добавление сообщения об ошибке. В большинстве случаев выполняемые операции будут прерваны |
|
Добавление информационного сообщения. Выполняемые операции не будут прерваны |
|
Добавление предупреждения. Выполняемые операции не будут прерваны |
|
e.Validate() |
Признак того, что сущность валидная. Проверяется заполненность обязательных полей, длина строк и т.д. Возможные значения: •True. Сущность валидная. Выполнение действия доступно; •False. Сущность не валидная. При выполнении действия появляется сообщение валидации; Валидация с помощью метода e.Validate доступна в событиях действий сущности |
Свойства
Имя |
Тип |
Описание |
---|---|---|
e.IsValid |
bool |
Используется, чтобы не выполнять какую-либо логику в событиях, если сущность невалидна. Свойство возвращает false, если было добавлено хотя бы одно сообщение с помощью метода AddError() и true во всех остальных случаях. Свойство доступно в серверных и клиентских событиях сущности |
Сообщение об ошибке, информационное сообщение и предупреждение отображаются с соответствующим значком в верхней части карточки сущности. Например, информационное сообщение выглядит следующим образом:
Валидация панели фильтрации работает только в веб-клиенте.
Подробнее см. «Пример настройки фильтрации записей в папке».
Пример 1. Добавление сообщения в событие «Обновление формы»
// Добавить сообщение о том, как зарегистрировать документ с зарезервированным номером.
if (_obj.RegistrationState == RegistrationState.Reserved &&
_obj.RegistrationState != RegistrationState.Registered)
{
e.AddInformation(string.Format("Для документа зарезервирован рег.№ {0}. Для
завершения регистрации нужно зарегистрировать документ.",
_obj.RegistrationNumber));
}
Пример 2. Пример валидации поля Name в карточке сущности
// Проверить, что имя сущности не начинается со знака «_».
if (_obj.Name.StartWith("_"))
e.AddError("Имя сущности не может начинаться со знака _.");
// Проверить, что имя сущности не равно "Name".
if (_obj.Name == "Name")
e.AddWarning("Использование имени Name нежелательно, так как оно системное.");
// Выполнить вычисления, если сущность валидна
// (имя не начинается со знака «_», но может быть равно "Name").
if (e.IsValid)
_obj.Date = Calendar.UserToday;
© Компания Directum, 2024 |