Хранение настроек компоновки данных.

1. kaliuzhnyi 135 17.03.20 13:18 Сейчас в теме
Добрый день коллеги. Сил моих больше нет...
Описание ситуации.

Есть справочник, в справочнике в реквизите(тип ХранилищеЗначения) я храню НастройкиКомпоновкиДанных, все хранится все замечательно.

Есть Макет (тип - СхемаКомпоновкиДанных) к которому храню выше указанные НастройкиКомпоновкиДанных.

Далее в определенный момент времени использую выше указанные НастройкиКомпоновкиДанных, мне необходимо получить данные которые выбираются в выше указанном Макете. Использую следующий код:
	НастройкиКомпоновкиДанных = Условие.НастройкиКомпоновкиДанных.Получить();
	Если НастройкиКомпоновкиДанных = Неопределено Тогда
		// Для условия не назначены настройки компоновки данных.
		Возврат;	
	КонецЕсли;

	// Инициализация макета компоновки данных.
	СхемаКомпоновкиДанных = Справочники.УсловияПередачиДоговоровКоллекторам.ПолучитьМакет("Договоры");
	
	КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
	КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
	КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных);
	
	Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТекущаяДата");
	Если Параметр <> Неопределено Тогда
		Параметр.Использование = Истина;
		Параметр.Значение = ТекущаяДатаСеанса();
	КонецЕсли;
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
		КомпоновщикНастроек.ПолучитьНастройки(),,,
		Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"),
		Ложь);
		
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,, Истина);

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

	ДанныеОтчета = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Показать


Ну как бы ничего необычного, и код этот отрабатывает, и я получаю свои данные.
НО ЕСТЬ ОДИН ОЧЕНЬ ИНТЕРЕСНЫЙ МОМЕНТ.
Мне захотелось переделать запрос в выше указанном макете и в запросе я добавил еще одно поле которое хочу выбрать, также добавил это поле в СКД-Настройки-Выбранные поля, и потом при использовании старой(та которая была сохранена до того как я поменял запрос) НастройкиКомпоновкиДанных, у меня не выбирается это новое поле...
Кто сталкивался? Подскажите плиз.
На сколько я понял, где-то на этом этапе
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
		КомпоновщикНастроек.ПолучитьНастройки(),,,
		Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"),
		Ложь);

перезатирается текст запроса и спользуется текст запроса который был в момент сохранения этих настроек - НастройкиКомпоновкиДанных.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 17.03.20 16:35 Сейчас в теме
(1) Пересохраните настройки.
3. kaliuzhnyi 135 17.03.20 17:04 Сейчас в теме
(2)
Я пересохранял, для сохранения использую простой как пять копеек код:
ТекущийОбъект.НастройкиКомпоновкиДанных = Новый ХранилищеЗначения(КомпоновщикНастроек.ПолучитьНастройки());
4. serg-lom89 76 15.08.23 19:58 Сейчас в теме
(3)Добрый день
таже проблема
нашли решение?
5. user1880116 15.08.23 23:38 Сейчас в теме
(1)
добавил это поле в СКД-Настройки-Выбранные поля
Этим самым ты изменил настройки по умолчанию схемы.

А потом ты героически загружаешь настройки из компоновщика, которые точно так же содержат в себе и выбранные поля и структуру и порядок и отборы и т.п. Всё это применяется поверх настроек по умолчнию. Результат вполне ожидаем - процессор компоновки видит, что ты не собираешся выводить это поле и выбрасывает его из запроса.

Ты уж определись какую часть настроек откуда брать.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот