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

добавление доступных полей выбора СКД

Автор fungrunger, 04 авг 2011, 18:02

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

fungrunger

Всем Добрый день. Столкнулся с такой проблемой.
Делаю отчет на СКД. В качестве набора данных есть внешний объект. Поля не описаны, т.к. формируются динамически.
Затем в процедуре модуля ПриКомпоновкеРезультата формирую этот внешний источник(обычная таблица) - добавляю его колонки как поля в схему, инициализирую отчет и пологал, что эти поля попадут в доступные для выбора - а вновь добавленные поля не попадают в доступные поля выбора (т.е. пользователь не сможет их выбрать).
Коллекция доступных полей выбора настройки КД доступна только на чтение - как мне сделать чтобы новые поля схемы появились в доступных полях выбора отчета?
Поможитя кто чем может. Платформа 8.2.14.519 Вот код

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

НастройкиСКД = КомпоновщикНастроек.ПолучитьНастройки();
ПоляВнешнегоИсточника = СхемаКомпоновкиДанных.НаборыДанных.ВидыОпераций_Выбранные.Поля;

ТабСвойствОЗ = ПолучитьТабСвойствОЗ();

Для Каждого стрСвОз Из ТабСвойствОЗ Цикл

ньюПоле = ПоляВнешнегоИсточника.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
тПоле = стрСвОз.ПутьКДанным ;
ньюПоле.Поле = тПоле;
ньюПоле.ПутьКДанным = тПоле;
ньюПоле.Заголовок = стрСвОз.СвойствоНаименование;
ньюПоле.ТипЗначения = стрСвОз.СвойствоТипЗначения;

КонецЦикла;

ВидыОпераций_Выбранные = ПолучитьТабЗначенийСвойствОЗ(ПоляВнешнегоИсточника,ТабСвойствОЗ);

ВнешниеНаборыДанных = Новый Структура();
ВнешниеНаборыДанных.Вставить("ВидыОпераций_Выбранные", ВидыОпераций_Выбранные);

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД, ДанныеРасшифровки);

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

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

fungrunger

товарищи!!!! Неужто никто не делал, никто не знает. Не бросьте в беде - второй день мучаюсь. Если что - то в вопросе непонятно - то спрашивайте, пожалуйста. Не дайте умереть человеку

fungrunger

Есть ещё идея, что нельзя при инициализации макета использовать "КомпоновщикНастроек.ПолучитьНастройки()"



А необходимо создавать свои - что то вроде как в типовой УТ



ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновки);
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных();
КомпоновщикНастроек.Инициализировать(ИсточникНастроек);

// Добавим выбранные поля
Для Каждого Элемент из КомпоновщикНастроек.Настройки.Выбор.ДоступныеПоляВыбора.Элементы Цикл

Если НЕ Элемент.Папка Тогда
ВыбранноеПоле = КомпоновщикНастроек.Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Использование = Истина;
ВыбранноеПоле.Поле = Элемент.Поле;
КонецЕсли;

КонецЦикла;

// Добавим группировку
ГруппировкаНастроек = КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Поле = ГруппировкаНастроек.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

Возврат КомпоновщикНастроек.Настройки;



Но это всё не меняет настроек, кторые видит юзер. Может, кто-нить сказать - в том я хоть направлении иду или нет?

Теги:

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

Рейтинг@Mail.ru

Поиск