Группировки
В 1С:Предприятии 8.0 появилась возможность группировать данные в отчете. Группировки могут быть горизонтальные и вертикальные, тогда слева и сверху появляются специальные маркеры, позволяющие пользователю разворачивать и сворачивать группы. Нажатием цифр 1234 можно развернуть сразу все группировки данного уровня и свернуть более детальные группировки:
Механизм группировок отличается от механизма расшифровок следующими аспектами:
-
Расшифровка обычно вызывает формирование нового отчета, открываемого в новом окне, а с помощью группировок можно раскрыть или свернуть текущую строку (колонку) в этом же окне.
-
Нестандартная расшифровка должна быть обработана программистом в процедуре-обработчике события ОбработкаРасшифровки для элемента управления ПолеТабличногоДокумента, а раскрытие и сворачивание группировок обрабатывается системой автоматически.
-
Расшифровки работают в режиме «только просмотр», а группировки в любом режиме.
Самый простой способ добавить группировки в отчет — доверить эту задачу системе, тогда от разработчика требуются минимальные усилия: необходимо всего лишь применить методы НачатьАвтоГруппировкуСтрок и ЗакончитьАвтоГруппировкуСтрок, которые включают режим автоматической группировки строк. В этом режиме при вызове методов Вывести и Присоединить указываются дополнительные параметры для группировки:
Вывести(<Таблица>, <Уровень>, <Имя группы>, <Открыта>)
Назначение параметров метода Вывести описано ниже:
Таблица
Выводимый фрагмент табличного документа.
Уровень
Этот параметр используется для автоматической группировки строк табличного документа с помощью методов Начать/ЗакончитьАвтоГруппировкуСтрок и Начать/ЗакончитьАвтоГруппировкуКолонок. Соседние строки с одинаковым уровнем будут отнесены к одной группе.
Имя группы
Имя группы, к которой относятся выводимые строки.
Открыта
Признак того, что выводимая группа будет открыта (развернута).
Следующий пример выводит список товаров с группировками в отчете:
ТабДок.НачатьАвтоГруппировкуСтрок();
Пока Выборка.Следующий();
ТабДок.Вывести(ОбластьТабДок, Выборка.Уровень(},
Выборка.Наименование, Ложь);
КонецЦикла;
ТабДок.ЗакончитьАвтоГруппировкуСтрок();
В качестве имени группировки назначается наименование товара. Все группы выводятся сначала свернутыми, но пользователь может развернуть любую группу с помощью маркера.
При использовании группировок будет очень удобно, если установить у ячейки свойство АвтоОтступ в какое-нибудь ненулевое значение, например, 5. Тогда система будет автоматически добавлять заданное количество пробелов слева текста ячейки, основываясь на текущем уровне группировки. В результате отчет будет иметь пригодный внешний вид для отображения иерархии данных.
Для ручного управления группами применяются следующие методы объекта ТабличныйДокумент:
НачатьГруппуСтрок
Начинает новую группу строк. Можно создавать вложенные группы строк.
ЗакончитьГруппуСтрок
Заканчивает последнюю из начатых ранее групп строк.
НачатьГруппуКолонок
Начинает новую группу колонок. Можно создавать вложенные группы колонок.
ЗакончитьГруппуКолонок
Заканчивает последнюю из начатых ранее групп колонок. С помощью свойств ИтогиСнизу и ИтогиСправа разработчик может изменять положение маркера группы (сверху или снизу для строк, слева или справа для колонок). Свойства ЦветТекстаГруппировки и ЦветФонаГруппировки позволяют легко управлять форматированием группировок.