Общая информация
Переход между экранами — это логический компонент конструктора, предназначенный для настройки движения пользователя по услуге. Последовательность и условия переходов между экранами задаётся в секции Правила в правой части окна конструктора. Каждый атрибут — это объект-описатель возможных переходов пользователя с одного из экранов на другие
Для удобства работы с правилами перехода в ВКУ реализована возможность клонирования исходящих правил перехода в рамках одной версии услуги или версии шаблона. Копирование и вставка исходящего правила перехода осуществляется при помощи сочетания клавиш Ctrl+C и Ctrl+V. Для дублирования исходящего правила перехода необходимо выделить правило и зажать сочетание клавиш Ctrl+D или выбрать действие «Дублировать»
Настройка правила перехода
Форма предоставляет возможность задавать следующие параметры
- Экран, с которого совершается переход — обязательное поле
- Экран, на который совершается переход — обязательное поле
- Название правила перехода
- Описание правила перехода
- Условия перехода
В настоящий момент в конструкторе реализованы два варианта условий перехода: Простое условие и Сложное условие. Использование конкретного варианта условия зависит от типа ссылаемого компонента или переменной, а также от операции сравнения
Условия перехода, заданные в одном правиле, проверяются через логическое «И». Для логического «ИЛИ» нужно либо создавать отдельные правила перехода, либо использовать предикат ContainsInList/notContainsInList с несколькими аргументами
Пример с ContainsInList/notContainsInList (переход s1 → s4)
Простое условие
Самыми распространёнными кейсами использования Простых условий перехода являются зависимости от значений ответа в квизе, чекбокса или роли учётной записи. Для этого типа условия требуется указать лишь тип сравниваемого поля, компонент/атрибут и его значение
1. Для условия в зависимости от ответа в квизе в поле «Значение, с которым сравнивать» нужно указать сохраняемое значение ответа, задаваемое в настройках компонента QuestionScr
Пример условия в зависимости от значения ответа в квизе (переход sd9 → s10)
2. Для условия в зависимости от значения чекбокса в поле «Значение, с которым сравнивать» нужно указать true/false
Пример условия в зависимости от значения чекбокса
3. Настройка условия перехода в зависимости от роли учётной записи описана в статье
Сложное условие
Такой тип условия позволяет строить более сложную логику переходов, так как даёт возможность разработчику услуги указать набор параметров таких как путь до атрибута компонента, тип проверяемого значения, операцию сравнения
Сложное условие имеет больше вариантов использования
1. Для условия в зависимости от значения выпадающего списка (Lookup, DropDown) необходимо выбрать тип сравниваемого поля «Ссылка на компонент» и указать параметры, включая атрибут компонента. Название атрибута и его значение можно посмотреть в последнем вызове метода getNextStep в черновике заявления
Пример условия в зависимости от значения выпадающего списка
2. Для условия в зависимости от возраста получателя услуги необходимо выбрать тип сравниваемого поля «Системная переменная (variable)», указать предикат и три аргумента: birthDate, day и нужное значение возраста. В примере ниже правило перехода отработает для получателя старше 18 лет
Пример условия в зависимости от возраста получателя услуги
3. Для условия в зависимости от значений элементов массива необходимо выбрать тип сравниваемого поля «Ссылка на компонент» и указать параметры. В примере ниже компонент c1 — MultipleChoiceDictionary, правило перехода отработает в случае, если среди выбранных значений есть «АйСиБиСи Банк (АО) г Москва»
Пример условия в зависимости от элементов массива
4. Для условия в зависимости от значения аргумента ValueCalculator необходимо выбрать тип сравниваемого поля «Ссылка на компонент» и указать в поле «Атрибут компонента» аргумент в формате arguments.{название аргумента}
Пример условия в зависимости от значения аргумента VC
5. Настройка правил перехода в зависимости от типа учётной записи описана в статье
6. Пример условий с разными операциями сравнения
В таблице приведены доступные операции сравнения и их применимость к разным типам полей
| Предикат | Тип поля | |||||
| Строка | Число | Булевый | Дата | Массив | Ответ пользователя | |
| До (before) | – | – | – | + | – | – |
| После (after) | – | – | – | + | – | – |
| Равно (equals) | + | + | – | + | – | – |
| Не равно (notEquals) | + | – | – | – | – | – |
| Находится в списке (containsInList) | + | – | – | – | – | – |
| Не находится в списке (notContainsInList) | + | – | – | – | – | – |
| Совпадает (matches) | + | – | – | – | – | – |
| Не совпадает (nonMatches) | + | – | – | – | – | – |
| Частично совпадает (regionMatches) | + | – | – | – | – | – |
| Частично не совпадает (regionNonMatches) | + | – | – | – | – | – |
| Больше или равно (greaterThanOrEqualTo) | + | + | – | – | – | – |
| Меньше или равно (smallerThanOrEqualTo) | + | + | – | – | – | – |
| Больше (greaterThan) | + | + | – | – | – | – |
| Меньше (smallerThan) | + | + | – | – | – | – |
| Равно без учёта регистра (equalsIgnoreCase) | + | – | – | – | – | – |
| Не равно без учёта регистра (notEqualsIgnoreCase) | + | – | – | – | – | – |
| Пустое (isNull) | + | + | + | + | + | + |
| Не пустое (nonNull) | + | + | + | + | + | + |
| Правда (isTrue) | – | – | + | – | – | – |
| Ложь (isFalse) | – | – | + | – | – | – |
| Содержит одно из значений (containsOne) | – | – | – | – | + | – |
| Содержит все значения (containsAll) | – | – | – | – | + | – |
| Не содержит (notContains) | – | – | – | – | + | – |
| Посещённый (isVisited) | – | – | – | – | – | + |
| Не посещённый (notVisited) | – | – | – | – | – | + |
Типовые ошибки при построении правил перехода
Ошибка «На экране X не найдено экранов для перехода» возникает в случае, если не задано правило перехода, для которого выполняется условие, или правило задано некорректно. Требуется проверить правильность правил перехода для каждого из сценариев
Ошибка «На экране X найдено более 1 экрана для перехода…» возникает в случае, если для одного сценария одновременно выполняются условия более одного правила перехода. Требуется конкретизировать правила таким образом, чтобы условия их выполнения были взаимоисключающими