|   |   | 
| 
 | Свернуть группировки в отчете на скд | ☑ | ||
|---|---|---|---|---|
| 0
    
        bebibo 29.01.21✎ 10:03 | 
        Здравствуйте!
 В какой процедуре при открытии скрыть группировки отчета построенного на СКД? Так не работает: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) КоличествоУровней = ДокументРезультат.КоличествоУровнейГруппировокСтрок(); Для Уровень = 1 По КоличествоУровней - 1 Цикл ДокументРезультат.ПоказатьУровеньГруппировокСтрок(КоличествоУровней - Уровень); КонецЦикла; КонецПроцедуры | |||
| 1
    
        bebibo 29.01.21✎ 10:05 | 
        КоличествоУровней = 0     | |||
| 2
    
        bebibo 29.01.21✎ 10:26 | 
        Есть мысль создать форму и там результат отчета группировать, но не понятно в какое событие     | |||
| 3
    
        bebibo 29.01.21✎ 10:33 | 
        Никто не знает?     | |||
| 4
    
        fisher 29.01.21✎ 10:38 | 
        (0) Конечно, так не работает. Ты ведь стандартную обработку не отключал.
 Это сработает, только если ты отключишь стандартную обработку, сделаешь компоновку програмно и потом вот это вот. | |||
| 5
    
        bebibo 29.01.21✎ 10:44 | 
        Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
 КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ДокументРезультат.ПоказатьУровеньГруппировокСтрок(2); // тут указать нужный уровень СтандартнаяОбработка = Ложь; КонецПроцедуры При таком коде в программном коде возникает ошибка: "Синтаксическая ошибка УправлениеОтчетамиВРем.ПреобразоватьУИД" | |||
| 6
    
        bebibo 29.01.21✎ 10:45 | 
        (4) По нажатию на кнопку сформировать ничего не происходит, если так написать:
 Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; КоличествоУровней = ДокументРезультат.КоличествоУровнейГруппировокСтрок(); Для Уровень = 1 По КоличествоУровней - 1 Цикл ДокументРезультат.ПоказатьУровеньГруппировокСтрок(КоличествоУровней - Уровень); КонецЦикла; КонецПроцедуры | |||
| 7
    
        bebibo 29.01.21✎ 10:57 | 
        (5) Что не так в этом коде? ((     | |||
| 8
    
        ДенисЧ 29.01.21✎ 11:04 | 
        (6) А где формирование табдока?
 У тебя этот код выполняется ДО компоновки... | |||
| 9
    
        ДенисЧ 29.01.21✎ 11:04 | 
        Точнее, вместо...     | |||
| 10
    
        bebibo 29.01.21✎ 11:05 | 
        Вот с этим кодом нет ошибки, но группировка не меняется
 СтандартнаяОбработка = Ложь; КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); //ДокументРезультат.ПоказатьУровеньГруппировокСтрок(YYYYY); ДокументРезультат.ПоказатьУровеньГруппировокСтрок(2); | |||
| 11
    
        fisher 29.01.21✎ 11:06 | 
        (10) Нормальный код. Воткни вместо последней строки сабжевую конструкцию.     | |||
| 12
    
        bebibo 29.01.21✎ 11:10 | 
        (11) Какаю, какую конструкцию?)))     | |||
| 13
    
        toypaul гуру 29.01.21✎ 11:10 | 
        Точно сработает если у отчета есть форма. И в ней сделать свою кнопку формирования, в которой вызвать
 СкомпоноватьРезультат а потом уже все что хочешь некоторые моменты не работают в ПриКомпоновкеРезультата | |||
| 14
    
        bebibo 29.01.21✎ 11:12 | 
        (13) Добавить кнопку и в ней добавить этот код?
 СтандартнаяОбработка = Ложь; КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); //ДокументРезультат.ПоказатьУровеньГруппировокСтрок(YYYYY); ДокументРезультат.ПоказатьУровеньГруппировокСтрок(2); | |||
| 15
    
        fisher 29.01.21✎ 11:15 | 
        (12) Которая в твоей теме была описана
 
 | |||
| 16
    
        bebibo 29.01.21✎ 11:21 | 
        (15) Почему то количество группировок = 2..В программном коде смотрю..     | |||
| 17
    
        bebibo 29.01.21✎ 11:21 | 
        (16) Это не так, у меня их 4     | |||
| 18
    
        fisher 29.01.21✎ 11:23 | 
        (17) Ну, у меня работает вообще вот такой тупой код:
 
 | |||
| 19
    
        repin_mike 29.01.21✎ 11:28 | 
        У меня работает так:
 Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Настройки = КомпоновщикНастроек.Настройки; ЭД = Настройки.ПараметрыДанных.Элементы.Найти("Номенклатура"); ЭД.Значение = Справочники.НоменклатураОбмена.Ололо.Номенклатура; ЭД.Использование = Истина; Настройки = КомпоновщикНастроек.Настройки; ЭД = Настройки.ПараметрыДанных.Элементы.Найти("Склад"); ЭД.Значение = Справочники.Склады.НайтиПоНаименованию("Основной склад"); ЭД.Использование = Истина; КомпоновщикНастроекДанныхОтчета = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроекДанныхОтчета.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); КомпоновщикНастроекДанныхОтчета.ЗагрузитьНастройки(Настройки); КомпоновщикНастроекДанныхОтчета.ЗагрузитьПользовательскиеНастройки(КомпоновщикНастроек.ПользовательскиеНастройки); КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакетаОСКД.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекДанныхОтчета.ПолучитьНастройки()); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ДокументРезультат.ПоказатьУровеньГруппировокСтрок(0); //Уровень 1 КонецПроцедуры | |||
| 20
    
        bebibo 29.01.21✎ 11:28 | 
        (18) С таким кодом в отчет выводит только название колонок, полей нет, группировок тоже соответственно     | |||
| 21
    
        fisher 29.01.21✎ 11:30 | 
        (20) Понятия не имею, в чем у тебя проблема. У меня все работает отлично годами.
 Как вариант, форма отчета переопределена и там еще какая-то магия происходит. | |||
| 22
    
        fisher 29.01.21✎ 11:34 | 
        (20) Попробуй не по 0, а по -1 или по -2, как вариант. У меня довольно старый релиз. Возможно в новых поведение несколько изменили.     | |||
| 23
    
        bebibo 29.01.21✎ 11:34 | 
        (19) Мне настройки не нужны. Делаю так, по нажатию кнопки, ничего не происходит
 СтандартнаяОбработка = Ложь; //Настройки = КомпоновщикНастроек.Настройки; //ЭД = Настройки.ПараметрыДанных.Элементы.Найти("Номенклатура"); //ЭД.Значение = Справочники.НоменклатураОбмена.Ололо.Номенклатура; //ЭД.Использование = Истина; // //Настройки = КомпоновщикНастроек.Настройки; //ЭД = Настройки.ПараметрыДанных.Элементы.Найти("Склад"); //ЭД.Значение = Справочники.Склады.НайтиПоНаименованию("Основной склад"); //ЭД.Использование = Истина; КомпоновщикНастроекДанныхОтчета = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроекДанныхОтчета.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); //КомпоновщикНастроекДанныхОтчета.ЗагрузитьНастройки(Настройки); КомпоновщикНастроекДанныхОтчета.ЗагрузитьПользовательскиеНастройки(КомпоновщикНастроек.ПользовательскиеНастройки); КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакетаОСКД.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекДанныхОтчета.ПолучитьНастройки()); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ДокументРезультат.ПоказатьУровеньГруппировокСтрок(0); //Уровень 1 | |||
| 24
    
        bebibo 29.01.21✎ 11:37 | 
        (22) Вот что в результате:
 https://dropmefiles.com/DsKq2 При таком коде: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); Для ОтрицательныйНомер = -9 По -2 Цикл ДокументРезультат.ПоказатьУровеньГруппировокСтрок(-ОтрицательныйНомер); ДокументРезультат.ПоказатьУровеньГруппировокКолонок(-ОтрицательныйНомер); КонецЦикла; КонецПроцедуры | |||
| 25
    
        fisher 29.01.21✎ 11:38 | 
        (23) Нафига ты настройки перехерил? Используй свод код из (14), экспериментатор хренов.     | |||
| 26
    
        bebibo 29.01.21✎ 11:40 | 
        (25) Настройки убраны, потому что что мне там искать?? У меня в них период, дата начала и дата окончания. Что мне писать в них (в примере номенклатура и склад)     | |||
| 27
    
        fisher 29.01.21✎ 11:41 | 
        Замени 
 Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки); на Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки); | |||
| 28
    
        fisher 29.01.21✎ 11:42 | 
        В (5) у тебя был вариант, похожий на правильный.     | |||
| 29
    
        fisher 29.01.21✎ 11:44 | 
        В КомпоновщикНастроек.Настройки - не применяются пользовательские настройки. А в КомпоновщикНастроек.ПолучитьНастройки() - применяются.     | |||
| 30
    
        fisher 29.01.21✎ 11:45 | 
        Короче, добейся сначала корректной программной компоновки, а потом свертку добавляй.     | |||
| 31
    
        bebibo 29.01.21✎ 11:50 | 
        При нажатии на кнопку "Сформировать" ошибка:
 https://dropmefiles.com/5sjHO При таком коде: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); //ДокументРезультат.ПоказатьУровеньГруппировокСтрок(YYYYY); КоличествоУровней = ДокументРезультат.КоличествоУровнейГруппировокСтрок(); Для Уровень = 1 По КоличествоУровней - 1 Цикл ДокументРезультат.ПоказатьУровеньГруппировокСтрок(КоличествоУровней - Уровень); КонецЦикла; КонецПроцедуры | |||
| 32
    
        fisher 29.01.21✎ 11:59 | 
        (31) Скорее всего, в основной форме отчета (заданной к корне конфы) переопределена кнопка компоновки и после твоей компоновки чего-то еще делается. Ну и в итоге туда ныряет по какой-то причине (чего-то ему нехватает). Отладчик в руки, короче. Еще можно найти точки использования этого общего модуля и расставить точки останова в подозрительных местах.     | |||
| 33
    
        fisher 29.01.21✎ 12:02 | 
        Если по точке останова попадешь - тогда просто открываешь стек вызовов и смотришь, откуда туда выполнение пришло и почему.     | |||
| 34
    
        bebibo 29.01.21✎ 12:46 | 
        (33) из общего модуля "ВариантыОтчетов" идет в модуль моего отчета     | |||
| 35
    
        fisher 29.01.21✎ 13:44 | 
        (34) Ну так в отладке и смотри, почему в итоге лезет в УправлениеОтчетамиВрем и как этого избежать (поворота в эту сбойную ветку).     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |