Dev ›
Отбор с использованием СКД на форме ›
#1
17.11.20 10:00
Доброго времени суток.
Пробую создать универсальный отбор на СКД,
создаю Макет с набором данных запрос
Код |
---|
ВЫБРАТЬ
Контрагенты.Ссылка КАК Контрагент,
NULL КАК Номенклатура,
NULL КАК Склад
{ВЫБРАТЬ
Контрагент.*,
Номенклатура.*,
Склад.*}
ИЗ
Справочник.Контрагенты КАК Контрагенты
{ГДЕ
Контрагенты.Ссылка.* КАК Контрагент}
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
NULL,
Номенклатура.Ссылка,
NULL
ИЗ
Справочник.Номенклатура КАК Номенклатура
{ГДЕ
Номенклатура.Ссылка.* КАК Номенклатура}
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
NULL,
NULL,
Склады.Ссылка
ИЗ
Справочник.Склады КАК Склады
{ГДЕ
Склады.Ссылка.* КАК Склад}
|
называю его основной макет СКД
в макете в настройке вывожу отбор по полям контрагент, номенклатура, склад
добавляю реквизит объекта тип "компоновщик настроек"
вывожу на форму пользовательские настройки компоновщика настроек
пишу на форме
Код |
---|
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
АдресСхемыКомпоновкиДанных = ИнициализироватьКомпоновщик(Объект.КомпоновщикНастроек, "ОсновнойМакетСКД", УникальныйИдентификатор);
КонецПроцедуры
&НаСервере
Функция ИнициализироватьКомпоновщик(Компоновщик, ИмяМакета, УникальныйИдентификатор)
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
СхемаКомпоновкиДанных = ОбработкаОбъект.ПолучитьМакет(ИмяМакета);
АдресСКД = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор);
ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСКД);
Компоновщик.Инициализировать(ИсточникНастроек);
Компоновщик.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
Возврат АдресСКД;
КонецФункции // ИнициализироватьКомпоновщик()
&НаКлиенте
Процедура Команда1(Команда)
// Вставить содержимое обработчика.
ЗаполнитьНаСервереРаньше()
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНаСервереРаньше()
// Получим данные по настроенной СКД
СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСхемыКомпоновкиДанных);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
Объект.КомпоновщикНастроек.ПолучитьНастройки(),
,
,
Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
// Таблица с данными, полученными из СКД
ТаблицаНом = Новый ТаблицаЗначений;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаНом);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ВремДТ = Новый ТабличныйДокумент;
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных=Новый ОписаниеИсточникаДанных(ТаблицаНом);
Построитель.Вывести(ВремДТ);
ЭтаФорма.ТабДокумент.Вывести(ВремДТ);
ЭтаФорма.ТекущийЭлемент = Элементы.Заказник;
КонецПроцедуры
|
и таблица пустая.
причем если в скд одна таблица, только номенклатура, то тз заполняется.
режим совместимости конфы 8.3.12
подскажите плиз, куда копать.