Столкнулся с ситуацией когда надо в табличный документ вывести результат выполнения системы компоновки данных - на первый взгляд все просто, но давайте вместе разберемся шаг за шагом.
1. Необходимо получить нужный макет СКД
2. Проинициализировать компоновщик настроек.
Можно обойтись и без компоновщика, передавая параметры напрямую, но тогда в настройках необходимо их скрыть, и присваивать напрямую
3. Установить параметры компоновщика настроек
4. Получить макет компоновки
5. Инициировать процессор компоновки данных, процессор вывода и вывести в коллекцию значений или в табличный документ
1. Необходимо получить нужный макет СКД
СхемаКомпоновкиДанных = ПолучитьМакет(ИмяМакетаСКД);
2. Проинициализировать компоновщик настроек.
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных); КомпоновщикНастроек.Инициализировать(ИсточникНастроек);
Можно обойтись и без компоновщика, передавая параметры напрямую, но тогда в настройках необходимо их скрыть, и присваивать напрямую
СхемаКомпоновкиДанных.Параметры.Период.Значение = Период
3. Установить параметры компоновщика настроек
Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период")); Если Не Параметр = Неопределено Тогда Параметр.Использование = Истина; Параметр.Значение = ЗначениеПараметра; КонецЕсли;
4. Получить макет компоновки
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Настройки = КомпоновщикНастроек.Настройки; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
5. Инициировать процессор компоновки данных, процессор вывода и вывести в коллекцию значений или в табличный документ
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки); ЭлементыФормы.ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Спасибо, не понимал как в обработке передать "Отбор" из СКД в КомпановщикНастроек, статья помогла разобраться.
ОтветитьУдалитьОчень рад что пригодилось :)
УдалитьКонстантин спасибо огромное!!!
ОтветитьУдалитьКонстантин спасибо, но для решения моей задачи данный метод не сработал.
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалить8.2
ОтветитьУдалитьСуть задачи. Нужно изменить внешний вид формы отбора для стандартной формы отчета. Для этого создается общая форма и в нее нужно передать настройки. Ваш метод работает, в отладчике в методе общей формы ПриСозданииНаСервере я вижу как передаются в мой компоновщик настройки, но уже вклиентском методе ПриОткрытии часть настроек, а также интересующие меня настройки отбора мистическим образом пропадают.
Нашел решение вот тут http://www.develplatform.com/2013/05/blog-post_31.html
Там все тоже самое, за исключением того что сюда ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных); передается не сама СКД а Адрес во временном хранилище.
Вот мой код:
Адрес = Параметры.Адрес; //Адрес временного хранилища
Источник = Новый ИсточникДоступныхНастроекКомпоновкиДанных(Адрес);
КомпоновщикНастроек.Инициализировать(Источник);
И о чудо заработало, дальше уже можно накладывать настройки отбора.
Потратил не мало часов на решение данного вопроса, ваша статься хорошо проиндексирована гуглом, может кто столкнется с вопросом, аналогичным моему и найдет эту страницу, надеюсь буду тоже полезен :)
Спасибо! Очень помогли!
ОтветитьУдалитьПремного благодарен, что избавили от создания отчёта.
ОтветитьУдалить