Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Свернуть группировки в отчете на скд

Свернуть группировки в отчете на скд
Я
   bebibo
 
29.01.21 - 10:03
Здравствуйте!
В какой процедуре при открытии скрыть группировки отчета построенного на СКД?
Так не работает:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    КоличествоУровней = ДокументРезультат.КоличествоУровнейГруппировокСтрок();
    Для Уровень = 1 По КоличествоУровней - 1 Цикл
        ДокументРезультат.ПоказатьУровеньГруппировокСтрок(КоличествоУровней - Уровень);
    КонецЦикла;
КонецПроцедуры
   bebibo
 
1 - 29.01.21 - 10:05
КоличествоУровней = 0
   bebibo
 
2 - 29.01.21 - 10:26
Есть мысль создать форму и там результат отчета группировать, но не понятно в какое событие
   bebibo
 
3 - 29.01.21 - 10:33
Никто не знает?
   fisher
 
4 - 29.01.21 - 10:38
(0) Конечно, так не работает. Ты ведь стандартную обработку не отключал.
Это сработает, только если ты отключишь стандартную обработку, сделаешь компоновку програмно и потом вот это вот.
   bebibo
 
5 - 29.01.21 - 10:44
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    ДокументРезультат.ПоказатьУровеньГруппировокСтрок(2);// тут указать нужный уровень 

    СтандартнаяОбработка = Ложь;
КонецПроцедуры


При таком коде в программном коде возникает ошибка: "Синтаксическая ошибка УправлениеОтчетамиВРем.ПреобразоватьУИД"
   bebibo
 
6 - 29.01.21 - 10:45
(4) По нажатию на кнопку сформировать ничего не происходит, если так написать:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;

    КоличествоУровней = ДокументРезультат.КоличествоУровнейГруппировокСтрок();
    Для Уровень = 1 По КоличествоУровней - 1 Цикл
        ДокументРезультат.ПоказатьУровеньГруппировокСтрок(КоличествоУровней - Уровень);
    КонецЦикла;
КонецПроцедуры
   bebibo
 
7 - 29.01.21 - 10:57
(5) Что не так в этом коде? ((
   ДенисЧ
 
8 - 29.01.21 - 11:04
(6) А где формирование табдока?
У тебя этот код выполняется ДО компоновки...
   ДенисЧ
 
9 - 29.01.21 - 11:04
Точнее, вместо...
   bebibo
 
10 - 29.01.21 - 11:05
Вот с этим кодом нет ошибки, но группировка не меняется
СтандартнаяОбработка = Ложь;
КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
//ДокументРезультат.ПоказатьУровеньГруппировокСтрок(YYYYY);

ДокументРезультат.ПоказатьУровеньГруппировокСтрок(2);
   fisher
 
11 - 29.01.21 - 11:06
(10) Нормальный код. Воткни вместо последней строки сабжевую конструкцию.
   bebibo
 
12 - 29.01.21 - 11:10
(11) Какаю, какую конструкцию?)))
   toypaul
 
13 - 29.01.21 - 11:10
Точно сработает если у отчета есть форма. И в ней сделать свою кнопку формирования, в которой вызвать

СкомпоноватьРезультат

а потом уже все что хочешь

некоторые моменты не работают в ПриКомпоновкеРезультата
   bebibo
 
14 - 29.01.21 - 11:12
(13) Добавить кнопку и в ней добавить этот код?

СтандартнаяОбработка = Ложь;
КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
//ДокументРезультат.ПоказатьУровеньГруппировокСтрок(YYYYY);


ДокументРезультат.ПоказатьУровеньГруппировокСтрок(2);
   fisher
 
15 - 29.01.21 - 11:15
(12) Которая в твоей теме была описана
КоличествоУровней = ДокументРезультат.КоличествоУровнейГруппировокСтрок();
Для Уровень = 1 По КоличествоУровней - 1 Цикл
     ДокументРезультат.ПоказатьУровеньГруппировокСтрок(КоличествоУровней - Уровень);
КонецЦикла;

   bebibo
 
16 - 29.01.21 - 11:21
(15) Почему то количество группировок = 2..В программном коде смотрю..
   bebibo
 
17 - 29.01.21 - 11:21
(16) Это не так, у меня их 4
   fisher
 
18 - 29.01.21 - 11:23
(17) Ну, у меня работает вообще вот такой тупой код:
    // свернем группировки

    Для ОтрицательныйНомер = -9 По 0 Цикл
        ДокументРезультат.ПоказатьУровеньГруппировокСтрок(-ОтрицательныйНомер);
        ДокументРезультат.ПоказатьУровеньГруппировокКолонок(-ОтрицательныйНомер);
    КонецЦикла;

   repin_mike
 
19 - 29.01.21 - 11:28
У меня работает так:


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Настройки = КомпоновщикНастроек.Настройки;
    ЭД = Настройки.ПараметрыДанных.Элементы.Найти("Номенклатура");
    ЭД.Значение = Справочники.НоменклатураОбмена.Ололо.Номенклатура;
    ЭД.Использование = Истина;
    
    Настройки = КомпоновщикНастроек.Настройки;
    ЭД = Настройки.ПараметрыДанных.Элементы.Найти("Склад");
    ЭД.Значение = Справочники.Склады.НайтиПоНаименованию("Основной склад");
    ЭД.Использование = Истина;
    
    КомпоновщикНастроекДанныхОтчета = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроекДанныхОтчета.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроекДанныхОтчета.ЗагрузитьНастройки(Настройки);
    КомпоновщикНастроекДанныхОтчета.ЗагрузитьПользовательскиеНастройки(КомпоновщикНастроек.ПользовательскиеНастройки);
    КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = КомпоновщикМакетаОСКД.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекДанныхОтчета.ПолучитьНастройки());
    
    
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    ДокументРезультат.ПоказатьУровеньГруппировокСтрок(0);  //Уровень 1

КонецПроцедуры
   bebibo
 
20 - 29.01.21 - 11:28
(18) С таким кодом в отчет выводит только название колонок, полей нет, группировок тоже соответственно
   fisher
 
21 - 29.01.21 - 11:30
(20) Понятия не имею, в чем у тебя проблема. У меня все работает отлично годами.
Как вариант, форма отчета переопределена и там еще какая-то магия происходит.
   fisher
 
22 - 29.01.21 - 11:34
(20) Попробуй не по 0, а по -1 или по -2, как вариант. У меня довольно старый релиз. Возможно в новых поведение несколько изменили.
   bebibo
 
23 - 29.01.21 - 11:34
(19) Мне настройки не нужны. Делаю так, по нажатию кнопки, ничего не происходит
СтандартнаяОбработка = Ложь;
    //Настройки = КомпоновщикНастроек.Настройки;

    //ЭД = Настройки.ПараметрыДанных.Элементы.Найти("Номенклатура");

    //ЭД.Значение = Справочники.НоменклатураОбмена.Ололо.Номенклатура;

    //ЭД.Использование = Истина;

    //

    //Настройки = КомпоновщикНастроек.Настройки;

    //ЭД = Настройки.ПараметрыДанных.Элементы.Найти("Склад");

    //ЭД.Значение = Справочники.Склады.НайтиПоНаименованию("Основной склад");

    //ЭД.Использование = Истина;

    
    КомпоновщикНастроекДанныхОтчета = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроекДанныхОтчета.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    //КомпоновщикНастроекДанныхОтчета.ЗагрузитьНастройки(Настройки);

    КомпоновщикНастроекДанныхОтчета.ЗагрузитьПользовательскиеНастройки(КомпоновщикНастроек.ПользовательскиеНастройки);
    КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = КомпоновщикМакетаОСКД.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекДанныхОтчета.ПолучитьНастройки());
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    ДокументРезультат.ПоказатьУровеньГруппировокСтрок(0);  //Уровень 1
   bebibo
 
24 - 29.01.21 - 11:37
(22) Вот что в результате:
https://dropmefiles.com/DsKq2

При таком коде:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);

Для ОтрицательныйНомер = -9 По -2 Цикл
        ДокументРезультат.ПоказатьУровеньГруппировокСтрок(-ОтрицательныйНомер);
        ДокументРезультат.ПоказатьУровеньГруппировокКолонок(-ОтрицательныйНомер);
    КонецЦикла;
КонецПроцедуры
   fisher
 
25 - 29.01.21 - 11:38
(23) Нафига ты настройки перехерил? Используй свод код из (14), экспериментатор хренов.
   bebibo
 
26 - 29.01.21 - 11:40
(25) Настройки убраны, потому что что мне там искать?? У меня в них период, дата начала и дата окончания. Что мне писать в них (в примере номенклатура и склад)
   fisher
 
27 - 29.01.21 - 11:41
Замени 
Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
на
Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);
   fisher
 
28 - 29.01.21 - 11:42
В (5) у тебя был вариант, похожий на правильный.
   fisher
 
29 - 29.01.21 - 11:44
В КомпоновщикНастроек.Настройки - не применяются пользовательские настройки. А в КомпоновщикНастроек.ПолучитьНастройки() - применяются.
   fisher
 
30 - 29.01.21 - 11:45
Короче, добейся сначала корректной программной компоновки, а потом свертку добавляй.
 
 Рекламное место пустует
   bebibo
 
31 - 29.01.21 - 11:50
При нажатии на кнопку "Сформировать" ошибка:
https://dropmefiles.com/5sjHO

При таком коде:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
//ДокументРезультат.ПоказатьУровеньГруппировокСтрок(YYYYY);


КоличествоУровней = ДокументРезультат.КоличествоУровнейГруппировокСтрок();
    Для Уровень = 1 По КоличествоУровней - 1 Цикл
        ДокументРезультат.ПоказатьУровеньГруппировокСтрок(КоличествоУровней - Уровень);
    КонецЦикла;
КонецПроцедуры
   fisher
 
32 - 29.01.21 - 11:59
(31) Скорее всего, в основной форме отчета (заданной к корне конфы) переопределена кнопка компоновки и после твоей компоновки чего-то еще делается. Ну и в итоге туда ныряет по какой-то причине (чего-то ему нехватает). Отладчик в руки, короче. Еще можно найти точки использования этого общего модуля и расставить точки останова в подозрительных местах.
   fisher
 
33 - 29.01.21 - 12:02
Если по точке останова попадешь - тогда просто открываешь стек вызовов и смотришь, откуда туда выполнение пришло и почему.
   bebibo
 
34 - 29.01.21 - 12:46
(33) из общего модуля "ВариантыОтчетов" идет в модуль моего отчета
   fisher
 
35 - 29.01.21 - 13:44
(34) Ну так в отладке и смотри, почему в итоге лезет в УправлениеОтчетамиВрем и как этого избежать (поворота в эту сбойную ветку).


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.