Отбор с использованием СКД на форме

1. AlexY 10 17.11.20 10:00 Сейчас в теме
Доброго времени суток.
Пробую создать универсальный отбор на СКД,
создаю Макет с набором данных запрос

ВЫБРАТЬ
	Контрагенты.Ссылка КАК Контрагент,
	NULL КАК Номенклатура,
	NULL КАК Склад
{ВЫБРАТЬ
	Контрагент.*,
	Номенклатура.*,
	Склад.*}
ИЗ
	Справочник.Контрагенты КАК Контрагенты
{ГДЕ
	Контрагенты.Ссылка.* КАК Контрагент}

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	NULL,
	Номенклатура.Ссылка,
	NULL
ИЗ
	Справочник.Номенклатура КАК Номенклатура
{ГДЕ
	Номенклатура.Ссылка.* КАК Номенклатура}

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	NULL,
	NULL,
	Склады.Ссылка
ИЗ
	Справочник.Склады КАК Склады
{ГДЕ
	Склады.Ссылка.* КАК Склад}
Показать

называю его основной макет СКД
в макете в настройке вывожу отбор по полям контрагент, номенклатура, склад

добавляю реквизит объекта тип "компоновщик настроек"

вывожу на форму пользовательские настройки компоновщика настроек

пишу на форме


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

&НаСервере
Функция ИнициализироватьКомпоновщик(Компоновщик, ИмяМакета, УникальныйИдентификатор) 

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

	Возврат АдресСКД;
	
КонецФункции // ИнициализироватьКомпоновщик()


&НаКлиенте
Процедура Команда1(Команда)
	// Вставить содержимое обработчика.
	ЗаполнитьНаСервереРаньше()
КонецПроцедуры

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


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

Показать


и таблица пустая.
причем если в скд одна таблица, только номенклатура, то тз заполняется.
режим совместимости конфы 8.3.12
подскажите плиз, куда копать.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dhurricane 17.11.20 10:28 Сейчас в теме
Поставьте точку останова на следующей строке:
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
и посмотрите отладчиком, какой конечный запрос получился при установленных отборах в макете компоновки. Подозреваю, что СКД накладывает все отборы на каждую из таблиц объединения. В результате получаются условия вроде таких:
NULL = &Контрагент
FatPanzer; +1 Ответить
3. MuxaH 17.11.20 13:28 Сейчас в теме
Так вроде условия в схеме явно прописаны.. Но какой запрос формирует СКД всё равно интересно, да.
4. AlexY 10 17.11.20 13:47 Сейчас в теме
все вроде перешерстил отладчиком, но тела получившегося запроса так и не увидел. не подскажете где он?
процессор компоновки не смотрится отладчиком, в макете компоновки тоже нет тела запроса. беда прям.
5. AlexY 10 17.11.20 13:53 Сейчас в теме
https:// /news/2016-04-28-skd-free-video/
тут есть похожее описание, как сделать, но у меня не срабатывает , зараза такая.
Оставьте свое сообщение

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