Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 20:54

Создание "Мастера ввода" управляемое приложение

Автор saxon, 12 апр 2013, 12:56

0 Пользователей и 1 гость просматривают эту тему.

saxon

Доброе время суток! При разработке мастера ввода данных в управляемой форме у меня возникли сложности. Необходимо чтобы при нажатии на кнопку "Далее" в элементе "Группа - Страницы" перелистывались элементы "Группа - страница". Сами страницы я получил (Элементы.Стр.ПодчиненныеЭлементы[0]), а вот как нужную страницу показать? Можно ли это как нибудь реализовать? Буду благодарен если пришлете какой нибудь исходник. Заранее спасибо

Dethmontt

Как пример
&НаКлиенте
Процедура Далее(Команда)

МассивСтраниц = Новый Массив;
Для Каждого Эл Из Элементы Цикл
Если Эл.Вид = ВидГруппыФормы.Страница Тогда
МассивСтраниц.Добавить(Эл);
КонецЕсли;
КонецЦикла;

ИндексЭлемента = НайтиТекущуюСтраницу(ТекущийЭлемент,МассивСтраниц);

Если НЕ ИндексЭлемента = Неопределено Тогда
Если ИндексЭлемента<МассивСтраниц.ВГраница() Тогда
ТекущийЭлемент = МассивСтраниц.Получить(ИндексЭлемента+1);
КонецЕсли;
КонецЕсли;

КонецПроцедуры

&НаКлиенте
Функция НайтиТекущуюСтраницу(ТекЭлемент,МассивСтраниц)

Если ТекЭлемент = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Если ТекЭлемент.Вид = ВидГруппыФормы.Страница Тогда
Возврат МассивСтраниц.Найти(ТекЭлемент);
Иначе
Возврат НайтиТекущуюСтраницу(ТекЭлемент.Родитель,МассивСтраниц);
КонецЕсли;

КонецФункции

Добавлено: 12 апр 2013, 15:43


Единственно, для нескольких групп страниц будет двигать и страницы других групп
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Вот более правильный код:
&НаКлиенте
Процедура Далее(Команда)

мСменитьСтраницу(1);

КонецПроцедуры

&НаКлиенте
Процедура Назад(Команда)

мСменитьСтраницу(-1);

КонецПроцедуры

&НаКлиенте
Функция НайтиТекущуюСтраницу(ТекЭлемент,МассивСтраниц)

Если ТекЭлемент = Неопределено Тогда
Возврат ТекЭлемент;
КонецЕсли;
Если ТекЭлемент.Вид = ВидГруппыФормы.Страница Тогда
Возврат МассивСтраниц.Найти(ТекЭлемент);
Иначе
Возврат НайтиТекущуюСтраницу(ТекЭлемент.Родитель,МассивСтраниц);
КонецЕсли;

КонецФункции

&НаКлиенте
Функция НайтиТекущуюГруппуСтраниц(ТекЭлемент)

Если ТекЭлемент = Неопределено Тогда
Возврат ТекЭлемент;
КонецЕсли;
Если ТекЭлемент.Вид = ВидГруппыФормы.Страницы Тогда
Возврат ТекЭлемент;
Иначе
Возврат НайтиТекущуюГруппуСтраниц(ТекЭлемент.Родитель);
КонецЕсли;

КонецФункции

&НаКлиенте
Процедура мСменитьСтраницу(Направление=1)

ТекГруппаСтраниц = НайтиТекущуюГруппуСтраниц(ТекущийЭлемент);

Если ТекГруппаСтраниц = Неопределено Тогда
Возврат;
КонецЕсли;

МассивСтраниц = Новый Массив;
Для Каждого Эл Из Элементы Цикл
Если Эл.Вид = ВидГруппыФормы.Страница и Эл.Родитель = ТекГруппаСтраниц Тогда
МассивСтраниц.Добавить(Эл);
КонецЕсли;
КонецЦикла;

ИндексЭлемента = НайтиТекущуюСтраницу(ТекущийЭлемент,МассивСтраниц);

Если НЕ ИндексЭлемента = Неопределено Тогда
Если ИндексЭлемента<МассивСтраниц.ВГраница() и Направление>0 Тогда
ТекущийЭлемент = МассивСтраниц.Получить(ИндексЭлемента+Направление);
ИначеЕсли ИндексЭлемента>0 и Направление<0 Тогда
ТекущийЭлемент = МассивСтраниц.Получить(ИндексЭлемента+Направление);
КонецЕсли;
КонецЕсли;

КонецПроцедуры


Добавлено: 12 апр 2013, 15:45


обработкаТест
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск