Иногда приходится создавать группу страниц с навигацией через команды Далее/Назад.
Предлагаю свой алгоритм смены страниц. Если кому-то облегчит труд, буду рад.
Что нам понадобится:
1. Переменная модуля формы, которая будет хранить порядок страниц, и ее инициализация
&НаКлиенте
Перем мПорядокСтраниц; //Переменная типа Массив, который хранит ссылки на страницы в упорядоченном виде
В подвале модуля формы инициализируем переменную
//очередность страниц в массив важна, на основании нее будет подбираться следующая или предыдущая страница
мПорядокСтраниц = Новый Массив;
мПорядокСтраниц.Добавить(Элементы.НачальнаяСтраница);
мПорядокСтраниц.Добавить(Элементы.Страница2);
мПорядокСтраниц.Добавить(Элементы.Страница3);
мПорядокСтраниц.Добавить(Элементы.ПоследняяСтраница);
2. Две команды формы Вперед, Назад и их обработчики:
&НаКлиенте
Процедура Вперед(Команда)
СменитьСтраницу(Истина);
КонецПроцедуры
&НаКлиенте
Процедура Назад(Команда)
СменитьСтраницу();
КонецПроцедуры
3. Процедура смены страницы
&НаКлиенте
Процедура СменитьСтраницу(Вперед=Ложь)
ГруппаСтраниц = Элементы.ГруппаСтраниц;//группа страниц, которыми мы управляем
ИндексТекущейСтраницы = мПорядокСтраниц.Найти(ГруппаСтраниц.ТекущаяСтраница);
НовыйИндексТекущейСтраницы = ИндексТекущейСтраницы;//по умолчанию новый индекс - текущая страница
Если Вперед Тогда
Если НЕ ИндексТекущейСтраницы=мПорядокСтраниц.ВГраница() Тогда
//если мы не на последней странице, то можем увеличить индекс
НовыйИндексТекущейСтраницы = ИндексТекущейСтраницы+1;
КонецЕсли;
Иначе
Если ИндексТекущейСтраницы<>0 Тогда
//если мы не на первой странице, то можем уменьшить индекс
НовыйИндексТекущейСтраницы = ИндексТекущейСтраницы-1;
КонецЕсли;
КонецЕсли;
//Установим новую текущую страницу
ГруппаСтраниц.ТекущаяСтраница = мПорядокСтраниц[НовыйИндексТекущейСтраницы];
КонецПроцедуры