|
Свернуть группировки в отчете на скд | ☑ | ||
---|---|---|---|---|
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) Ну так в отладке и смотри, почему в итоге лезет в УправлениеОтчетамиВрем и как этого избежать (поворота в эту сбойную ветку).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |