Универсальный отчет по метаданным, практика использования.

1. egorover 114 21.05.15 17:50 Сейчас в теме
Возникла необходимость сделать 4-е простых отчета по движениям 4-х регистров, может кто делал обращение к "Универсальный отчет по метаданным" с передачей в него параметров?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ture 613 21.05.15 17:51 Сейчас в теме
(1) какая функциональность у отчета ожидается?
3. egorover 114 21.05.15 17:53 Сейчас в теме
(2) ture, забыл, 4 регистра накопления по остаткам
5. ture 613 21.05.15 17:58 Сейчас в теме
(3) измерения регистров одинаковые?
СКД
все 4 регистра через union all с типом
+4 настройки, которые параметрами накладывают фильтры так. что выбираются строки какого-то одного регистра.

по деревенски, верно?
7. egorover 114 21.05.15 18:00 Сейчас в теме
(5) ture, СКД хорош, но для пользователей сложноват
8. ture 613 21.05.15 18:02 Сейчас в теме
(7)тогда программно СКД с отборами из СКД, а менять вариант отчета запретить.
10. egorover 114 21.05.15 18:04 Сейчас в теме
(8) ture, я думал как же можно использовать "Универсальный отчет по метаданным"
4. egorover 114 21.05.15 17:55 Сейчас в теме
функциональность, как в "Универсальном отчете" 8.2, в свое время на них было все написано
6. egorover 114 21.05.15 17:59 Сейчас в теме
НачОст Приход Расход КонОст

Группировка N
9. egorover 114 21.05.15 18:02 Сейчас в теме
нужно заложить так чтобы пользователю осталось выбрать период нажать "Сформировать", а измерения регистров разные
11. ture 613 21.05.15 18:06 Сейчас в теме
(9)
//1. создаем схему компоновки данных 
    СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
    
   //1.1 определяем источник данных для схемы 
   //для наших целей - текущая ИБ 
    Источник = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
    Источник.Имя = "ЛокальнаяБаза";
    Источник.СтрокаСоединения = "";
    Источник.ТипИсточникаДанных = "Local";
    
   //1.2 определяем набор данных 
     НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
    НаборДанных.Имя = "Продажи";
    НаборДанных.ИсточникДанных = "ЛокальнаяБаза";
    НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина;
    НаборДанных.Запрос = (
        "ВЫБРАТЬ
        |    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
        |    РеализацияТоваровУслугТовары.Сумма КАК СтоимостьОборот
        |ИЗ
        |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары"
    );
    
   //1.2.1 добавляем поля 
    ПолеНоменклатуры = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    ПолеНоменклатуры.Заголовок = "Номенклатура";
    ПолеНоменклатуры.ПутьКДанным = "Номенклатура";
    ПолеНоменклатуры.Поле = "Номенклатура";
    ПолеСтоимости = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    ПолеСтоимости.Заголовок = "Стоимость";
    ПолеСтоимости.ПутьКДанным = "СтоимостьОборот";
    ПолеСтоимости.Поле = "Номенклатура";
                       
   //1.3 определяем ресурсы 
    ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить();
    ПолеРесурса.Выражение = "Сумма(СтоимостьОборот)";
    ПолеРесурса.ПутьКДанным = "СтоимостьОборот";
    
    
   //2. создаем настройки для схемы 
    НастройкиКомпоновкиДанных = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
    
   //2.1 определяем структуру 
   //2.1.1 добавляем группировку "Номенклатура" 
    ГруппировкаНоменклатуры = НастройкиКомпоновкиДанных.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    ПолеГруппировки = ГруппировкаНоменклатуры.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));    
    ПолеГруппировки.Использование = Истина;
    ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
    
   //2.2 определим выбранные поля 
    ВыбранноеПоле = НастройкиКомпоновкиДанных.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    ВыбранноеПоле.Заголовок = "Стоимость";
    ВыбранноеПоле.Использование = Истина;
    ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("СтоимостьОборот");
    
   //3. компонуем 
    КомпНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных);
    НастройкиКомпоновкиДанных = КомпНастроек.ПолучитьНастройки();
    
   //4. готовим макет 
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных);
    
   //5. исполняем макет 
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(Макет);
    ПроцессорКомпоновки.Сбросить();
    
   //6. выводим результат 
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ТабДок = Новый ТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ТабДок);
    ПроцессорВывода.НачатьВывод();
    ЭлементРезультата =  ПроцессорКомпоновки.Следующий();
    Пока ЭлементРезультата <> Неопределено Цикл
        ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
        ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    КонецЦикла;
    ПроцессорВывода.ЗакончитьВывод();
    
    ТабДок.Показать();
Показать
13. egorover 114 22.05.15 09:34 Сейчас в теме
(11) ture, Спасибо большое, придется делать на СКД, наверное нету пока вариантов с Универсальным отчетом, в 1С теперь все будет на СКД
12. ture 613 21.05.15 18:07 Сейчас в теме
это полностью программно, но можно выбрать регистр на форме, а остальное дорисовать по метаданным - запрос, отборы и пр.
Оставьте свое сообщение

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