Пригодится как удобная заготовка, когда надо организовать пошаговый ввод данных пользователем с контролем данных на каждом шаге. Шаблон представляет собой обработку, в которую уже заложена базовая механика.
С некоторых пор я начал активно использовать удобный для пользователей механизм пошагового ввода данных, другими словами, «Мастер ввода» или «Мастер настройки», или «Визард». В этой статье я выкладываю шаблон для конфигурирования подобных механизмов и краткое описание, как им пользоваться.
Данный шаблон я применял даже на мобильной платформе. Также подходит для любой конфигурации на УФ.
Перемещение между шагами линейно и осуществляется путем нажатия на кнопки "Вперед" и "Назад" и "Отмена".
Обзор на ютубе:
Как использовать:
1. Открываем скачанную обработку, в ней находим элемент "СтраницыШагов":
2. Вручную добавляем страницы, которые будут являться шагами пользователей
3. Размещаем внутри каждой страницы соответствующие ей элементы управления
4. Для каждого элемента управления, от корректности которого зависит переход на следующий шаг, надо навесить обработчик события при изменении:
5. Внутри обработчика прописать только:
ПриИзмененииТекущихПараметровТекущегоШагаКлиент();
Вызов этой процедуры инициирует проверку корректности введенных данных текущего шага и как следствие регулирует доступность следующего шага.
6. В процедуре «ИнициализацияТаблицыШаговСервер()» прописываем все шаги повторно, но уже с присвоением Номера шага и прочих доступных параметров:
&НаСервере
Процедура ИнициализацияТаблицыШаговСервер()
ТаблицаШагов.Очистить();
НС = ТаблицаШагов.Добавить();
НС.НомерШага = 1;
НС.ИмяСтраницы = "СтраницаВводДаты";
НС.АвтопереходНаСледующий = Ложь;
НС = ТаблицаШагов.Добавить();
НС.НомерШага = 2;
НС.ИмяСтраницы = "СтраницаВводПодразделения";
НС = ТаблицаШагов.Добавить();
НС.НомерШага = 3;
НС.ИмяСтраницы = "СтраницаПосмотретьРезультат";
КонецПроцедуры
7. Для каждого шага прописываем процедуры ОбработчикИнициализацииШагаКлиент_Х, где Х – Номер шага. Эти процедуры будут выполняться при «открытии» шага (другими словами, при переходе на страницу шага). Тут можно прописать, например, иницилизацию полей:
&НаКлиенте
Процедура ОбработчикИнициализацииШагаКлиент_1(ОписаниеШага)
Объект.Дата = ТекущаяДата();
Сообщить("Выполнен обработчик заполнения нового шага: " + Строка(ОписаниеШага.НомерШага));
ПриИзмененииТекущихПараметровТекущегоШагаКлиент();
КонецПроцедуры
8. Для каждого шага прописываем процедуры ОбработчикПроверкиШагНастроенКлиент_Х, где Х – Номер шага. Эти процедуры контролируют корректность введенных данных на шаге. В нашем примере, программа установит флаг того, что шаг настроен, только в случае, если заполнено поле «Дата» — это единственное поле, которое требуется заполнить на Шаге 1.
&НаКлиенте
Процедура ОбработчикПроверкиШагНастроенКлиент_1(ОписаниеШага)
ОписаниеШага.ШагНастроен = ЗначениеЗаполнено(Объект.Дата);
КонецПроцедуры
9. Для каждого шага прописываем процедуры ОбработчикПроверкиДоступенСледующийШагКлиент_Х, где Х – Номер шага. Эти процедуры регулируют непосредственно доступностью следующего шага.
&НаКлиенте
Процедура ОбработчикПроверкиДоступенСледующийШагКлиент_1(ОписаниеШага)
ОписаниеШага.ДоступенСледующийШаг = ОписаниеШага.ШагНастроен;
КонецПроцедуры
11. Далее все переходы страниц и контроль данных программа выполняет сама.
12. Профит!
Разработка и тестирование проводились на релизе платформы 8.3.13.1809.