helpf.pro
Регистрация

Группировка строк

Name1
02.11.2010 14:21Прочитано: 3522
Здравствуйте! Есть отчет на СКД, макет - предопределенный. Не получается сгруппировать строки. Вот процедура из модуля формы. Или здесь что-то не так, или при использовании предопределенных макетов это нельзя сделать?

Процедура СформироватьОтчет()Экспорт
КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровки=Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных=Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
ЭлементыФормы.Результат.Очистить();
ДокументРезультат=ЭлементыФормы.Результат;
ЭлементыФормы.Результат.ПоказатьУровеньГруппировокСтрок(1);
ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
02.11.2010 14:41Ответ № 1
(0) Гуппировка должна быть после вывода отчета:
Код 1C v 8.х
 Процедура СформироватьОтчет()Экспорт
КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровки=Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных=Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
ЭлементыФормы.Результат.Очистить();
ДокументРезультат=ЭлементыФормы.Результат;
ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

ЭлементыФормы.Результат.ПоказатьУровеньГруппировокСтрок(1);
КонецПроцедуры
Name1
02.11.2010 15:12Ответ № 2
Спасибо!
Допустим, группировки не раскрывали, изменили период и сформировали отчет по кнопке Сформировать - группировок нет. А здесь можно также сделать?
E_Migachev
02.11.2010 15:18Ответ № 3
Ты можешь в какой-нибудь переменной хранить заданную пользователем группировку, и использовать ее при кождом выводе отчета!
Name1
02.11.2010 15:31Ответ № 4
Извиняюсь, а нельзя подробнее, как записать переменную?
А куда мы обращаемся при нажатии кнопки "Сформировать"?
E_Migachev
02.11.2010 15:46Ответ № 5
(4) Я в отчетах иногда делаю так:
На форме делаю подменю Группировка, в нем Варианты:
- По Организации
- По Подразделению
- По Сотруднику
У каждого пункта в Пояснении попорядку ставлю номера: для Организации - 1, для Подразделения - 2 для Сотрудника - 3
И для Каждой этой Кнопки пишу Действие процедуру ГруппироватьРузультат с кодом:
Код 1C v 8.х
  Процедура ГруппироватьРузультат(Кнопка)
Уровень = Число(Кнопка.Пояснение);
ЭлементыФормы.Результат.ПоказатьУровеньГруппировокСтрок(Уровень);
КонецПроцедуры


В результате этого, пользователи могут быстро через меню менять группировку!

И еще если ты в начале модуля пропишешь чтобы переменная Уровень была доступна в любой процедуре:
Код 1C v 8.х
 Перем Уровень;   

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

ЭлементыФормы.Результат.ПоказатьУровеньГруппировокСтрок(Уровень);
КонецПроцедуры


То у пользователя он будет при переформировании отчета Группироваться по выбранной группировке!

вот как-то так



*13
Name1
02.11.2010 16:17Ответ № 6
Мне достаточно 2-го варианта. А все-таки куда мы попадаем при нажатии в отчете кнопки "Сформировать", неужели в процедуру модуля формы СформироватьОтчет?
Вообще-то пока не получилось.
E_Migachev
02.11.2010 16:41Ответ № 7
(6) Попадаем туда, что стоит в Действие кнопки сформировать!
Mokey
02.11.2010 17:45Ответ № 8
(7), Там же ничего не стоит, это же СКД, если только не переписывали форму
E_Migachev
02.11.2010 18:08Ответ № 9
(8) если скд, то Да, а если через процедуру Сформировать, как в вопросе, то должно быть *13
Mokey
03.11.2010 12:38Ответ № 10
(9), С этим полностью согласен *13
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.