В данной статье приведен пример реализации одного из вариантов создания диалога переключения активной таблицы СКД
Быстрый переход
Цель:
Создать диалог быстрого выбора отображаемой таблицы и понятного по имени результата
План действий
- На Форму добавляется поле выбора списка с именем «СписокТаблиц«
- Заполняется обработчик события ПриИзменении данного поля
- Добавляется событие перед открытием формы, в котором заполняется список в элементе форме «СписокТаблиц«
- Для каждой таблицы в СКД задается имя, которое будет являться представлением элемента списка
Решение
Код ПередОткрытием() из первого варианта собирает список таблиц и устанавливает значение по умолчанию для поля
Вариант = СхемаКомпоновкиДанных.ВариантыНастроек[0];//Первый вариант СписокТаблиц = Новый СписокЗначений; Для каждого Структура из Вариант.Настройки.Структура Цикл СписокТаблиц.Добавить(Структура.Имя,Структура.Имя); КонецЦикла; ЭлементыФормы.СписокТаблиц.СписокВыбора = СписокТаблиц; Если СписокТаблиц.Количество()>0 Тогда ЭлементыФормы.СписокТаблиц.Значение = СписокТаблиц[0].Значение; Конецесли;
Для корректного представления в списке выбора зайдите в конфигураторе в настроки СКД и задайте имя для всех таблиц, иначе будет пустое представление и код будет неработоспособен
Код обработчика ПриИзменении()
Процедура СписокТаблицПриИзменении(Элемент) Если ЗначениеЗаполнено(СписокТаблиц) Тогда Для каждого Структура из КомпоновщикНастроек.Настройки.Структура Цикл Структура.Использование = (Структура.Имя = СписокТаблиц) КонецЦикла; //Здесь можно сразу вызвать обновление отчета Иначе //Для каждого Структура из КомпоновщикНастроек.Настройки.Структура Цикл //Ничего не делаем //Структура.Использование = ИСТИНА; //КонецЦикла; КонецЕсли; КонецПроцедуры
В контексте моей задачи получился вот такой результат:
Сворачивать рекламу, чтобы сберечь деньги, все равно, что останавливать часы, чтобы сберечь время.