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