как добавить колонки в СКД с произвольным запросом

1. sys1c 15.08.24 03:41 Сейчас в теме
Есть Запрос который собирается "программно", его результат в ТаблицеЗначений - меня полностью устраивает.
В запросе изначально не известно сколько будет в итоге Колонок и как они будут называться.
(типа Март_2024, Апрель_2024)

Но на этот запрос надо в пользовательском режиме накладывать произвольные отборы типа:
Номенклатура в группе, не в группе, в списке, тоже самое по складу и т.п..

Это может сделать, насколько понимаю только КомпоновщикНастроекСКД-Настройки-Отбор.
Положил на форму Обработки - КомпоновщикНастроекСКДНастройкиОтбор, далее


	
ТекстЗапроса = ТекстЗапроса();
	
	СхемаКомпоновкиДанных = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

	СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос = ТекстЗапроса();
	
	НастройкиКомпоновки = КомпоновщикНастроекСКД.ПолучитьНастройки();
	НастройкиКомпоновки.ПараметрыДанных.УстановитьЗначениеПараметра("Период",   НаДату);
	НастройкиКомпоновки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", Период.ДатаНачала);
	НастройкиКомпоновки.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода",  Период.ДатаОкончания);

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


в Макет СКД засунул текст запроса с минимально возможными колонками, и в результате на выходе, ловлю только эти колонки...
а как быть с остальными?
я знаю как они будут называться, как их программно добавить в СКД?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. RustamZz 15.08.24 08:30 Сейчас в теме
(1) Проблема в
результат в ТаблицеЗначений - меня полностью устраивает
, а вот не должен. Еще в прошлом веке описали принципы нормальности БД. И она им не соответствует и в этом корень проблем.
2. truba 15.08.24 08:28 Сейчас в теме
1) Все обязательные поля в отчете пишешь отдельным запросом или внешним источником данных с описанием полей и их типов.
2) Аттачишь к нему в источниках данных свой произвольный источник данных по опять же обязательным в отчете полям. После этого выносишь свои настройки отборов куда надо. Но попадутся в отборы только они, т.к. динамически получаемый запрос и его поля на этом моменте еще не известен
3) Запрос или добавляешь в источник данных перед компоновкой или вообще данные во внешнюю таблицу построителем запроса выгружаешь а потом
3а) Пробегаешь по колонкам этой таблицы (результирующего запроса) и создаешь в источнике данных поля СКД с нужным типом и свойствами.
4) Определяешь программно вычисляемые поля
5) Определяешь программно ресурсы
6) Определяешь программно настройки - группировки, поля, отборы, сортировки, пользовательские поля.
7) Определяешь программно условное оформление
Вызываешь всю цепочку работы с СКД до получения результата.

Как по мне - оно того не стоит. Март24, Апрель24 это значения 2х столбцов "Месяц","Данныемесяца", который в настройках Таблицей выводишь.
4. sys1c 15.08.24 08:31 Сейчас в теме
(2) Таблицу в ТаблицуЗначений не выгрузить.

про программное формирование Схемы уже прочитал, там пошли уже другие вопросы. Спасибо.
5. truba 15.08.24 08:55 Сейчас в теме
(4) Результат запроса не выгрузить в ТаблицуЗначений? Поймите меня правильно - звучит странно

Но тут сейчас не очень понятна сама концепция действия. СКД хороша тем, на что на основе описания источника данных позволяет автоматизировать сложные графические варианты вывода, которые в свою очередь влияют на источник.

Т.е. схема такая:
Этап настроек отчета:
1) Декларативное описание источника (запросы, объединения, внешние источники) ОБЯЗАТЕЛЬНОЕ
2) Декларативное описание преобразования данных и их ролей, влияющих на настройки
3) Настройки вывода данных на основе 1+2.

Этап исполнения отчета
4) Преобразование Источника согласно настройкам 3)
5) Компоновка полученных данных
6) итд.

Давайте опишем Вашу схему:
1) Этап предварительных настроек запроса - обязательные поля
2) Описание этих полей
3) Настройки вывода
4) Анализ пользовательских настроек (какие он запросил периоды?) и на основе анализа изменение п 1).
- Вот тут сразу рисуется зацикленность. Условный выход из этого цикла это когда источники данных в п1) и после п4) остаются одинаковыми

Как по мне тянуть такое концептуальное изменение работы СКД ради местечкового запроса - очень спорный вопрос. Легче сразу задать избыточность по полям, включив туда все возможные вообще варианты, все равно в результирующий запрос они не попадут, если пользователь их не выберет.
6. sys1c 15.08.24 09:03 Сейчас в теме
(5) Подскажите что не так делаю с
6) Определяешь программно настройки - группировки, поля, отборы

с добавлением отбора (в соседней теме)
Оставьте свое сообщение

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