Программная установка Схемы компоновки данных отчета в Управляемой форме. Как?

1. 32 13.04.12 18:05 Сейчас в теме
Вечер добрый.

Делаю так (Модуль формы)

Процедура ВнешнийОтчетПриИзмененииНаСервере()
	
	ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
	ОтчетОбъект.УстановитьСхемуКомпоновкиДанных();
	ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(ОтчетОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
	ЗначениеВРеквизитФормы(ОтчетОбъект, "Отчет");
КонецПроцедуры

&НаКлиенте
Процедура ВнешнийОтчетПриИзменении(Элемент)
	
	ВнешнийОтчетПриИзмененииНаСервере();
	ЭтаФорма.СкомпоноватьРезультат(РежимКомпоновкиРезультата.Фоновый);
КонецПроцедуры
Показать


При формировании ошибка "Не найдено поле", При завершении метода на стороне сервера

Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора.Элементы - содержит перечень всех полей схемы

При возвращении на клиент

Перечень полей пуст. Сами настройки схемы есть.
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. xzorkiix 32 13.04.12 18:28 Сейчас в теме
Повторил инициализацию Компоновщика Настроек на клиенте, так


Процедура ВнешнийОтчетПриИзмененииНаСервере()
	
	ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
	ОтчетОбъект.УстановитьСхемуКомпоновкиДанных();
	ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(ОтчетОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
	ЗначениеВРеквизитФормы(ОтчетОбъект, "Отчет");
	
	АдресХранилища = ПоместитьВоВременноеХранилище(ОтчетОбъект.СхемаКомпоновкиДанных, УникальныйИдентификатор);
КонецПроцедуры

&НаКлиенте
Процедура ВнешнийОтчетПриИзменении(Элемент)
	
	ВнешнийОтчетПриИзмененииНаСервере();
	Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресХранилища));
	
	ЭтаФорма.СкомпоноватьРезультат(РежимКомпоновкиРезультата.Фоновый);
КонецПроцедуры
Показать

После чего Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора.Элементы - содержит перечень доступных полей, но при вызове формы настройки варианта отчета доступных полей нет. Отчет так же сообщает "не найдено поле"
3. nvv1970 17.10.13 18:02 Сейчас в теме
Тема актуальна.
СКД устанавливается, но не возвращается в "отчет". Почему?
&НаСервере
Процедура УстановитьСКД()
	ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
	ОтчетОбъект.СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет("Макет");
	ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(ОтчетОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
	ЗначениеВРеквизитФормы(ОтчетОбъект, "Отчет");
КонецПроцедуры
Показать
4. brato4karik 06.11.13 11:38 Сейчас в теме
Поддерживаю последний пост, и мне актуально)
5. Bukaska 134 06.11.13 17:14 Сейчас в теме
7. f333 1 18.08.14 16:47 Сейчас в теме
8. yku 351 02.11.15 15:20 Сейчас в теме
У меня тоже не получилось динамически изменять. У меня получилось только один раз устанавливать настройки. Если форма уже открылась, то всё - настройки не обновляются что только не пробовал.

Получилось выйти из ситуации только открытием формы каждый раз. Настройки устанавливаю в "ПриСозданииНаСервере"
9. insurgut 194 03.11.15 08:36 Сейчас в теме
Делайте все в модуле обработки, и будет вам счастье. Что-то вроде такого будет выглядеть в модуле обработки:

Процедура ИзменитьЗапрос()
	
	ТекстЗапроса = ЭтотОбъект.СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос;
	
	... алгоритм изменения текста запроса...
	
	ЭтотОбъект.СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос = ТекстЗапроса;
	
КонецПроцедуры

ИзменитьЗапрос();
Показать


Из формы вы ничего сделать не сможете, т.к. схема уже распакована на стороне сервера.
dbachinsky; +1 Ответить
10. Mnemonik 16.03.20 17:07 Сейчас в теме
У меня управляемая форма отчета, в модуле объекта описана процедура ПриКомпоновкеРезультата()
Почему для пользователей в Компоновщике настроек отсутствуют доступные поля выбора?

в отладке проверяю:
НастрокаПоУмолчанию = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикНастроек.ЗагрузитьНастройки(НастрокаПоУмолчанию);


тоже самое и с таким вариантом:
КомпоновщикНастроек.Настройки



В основной схеме компоновке данных у полей Набора данных нет ограничений.

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

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

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

	КомпоновщикНастроек.ЗагрузитьНастройки(НастрокаПоУмолчанию);
Показать
Оставьте свое сообщение
Вопросы с вознаграждением