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