Проверка данных ЭУ

Данный раздел содержит описание примера проверки, изменения и отмены изменения состояния карточки. Подписаться на событие изменения состояния, провести проверку какого-нибудь поля и случае, если проверка не прошла, выдать предупреждающее сообщение и состояние не менять.

Ссылка на пример на GitHub: ValidateOnStateChanging.

Проект-расширение клиентской части Web-клиент. Содержит клиентский скрипт с функцией-обработчиком события validateOnStateChanging, проверку данных ЭУ при смене состояния.

Пример рассчитан на версию Web-клиента 6.1 или выше.

Перечень необходимых инструментов:

Сборка и установка

  1. Откройте консоль в папке ValidateOnStateChangingWebExtension и выполните команду npm install, затем npm update и в конце npm run build:prod.

  2. Скопируйте каталог SamplesOutput\Content\Modules\ValidateOnStateChangingWebExtension в каталог Путь к сайту Web-клиента\Content\Modules.

  3. Перезапустите dvwebclient.

Проверка примера

  1. Запустите конструктор разметок.

  2. Импортируйте решение из файла ValidateOnStateChangingLayout.xml.

  3. Сделайте решение ValidateOnStateChangingLayout активным для карточки типа Документ вида ДокументУД/Исходящий.

  4. На разметке расположен ЭУ Текст и кнопки операций (Start approving и др.) по изменению состояния карточки.

  5. Перезапустите dvwebclient.

  6. Откройте новый документ ДокументУД\Исходящий и нажать кнопку редактировать. При этом должна открыться разметка с ЭУ Текст и кнопками изменения состояния. Часть кнопок будет неактивна, это зависит от настроек ролевой модели.

  7. Если в ЭУ Текст нет текста или длина текста превышает 100 символов, то при нажатии на кнопку изменения состояния возникает сообщение об ошибке и состояние не изменяется.

  8. В случае, если ЭУ Текст проходит валидацию, то состояние карточки меняется. Например при выполнении операции Start approving с состояния Drafting на состояние Is approving.

  9. При этом кнопки перехода исчезают, т.к. в состоянии Is approving операции Start approving и др. не доступны.

Данный пример демонстрирует только доступ к элементу разметки. При реализации расширений рекомендуется использовать экспорт разметок в виде Решения.