Интерактивные возможности табличного документа

Табличный документ 1С:Предприятия 8 служит не только для печати документов и отчетов. Он имеет расширенные возможности, которые превращают его в интерактивное средство взаимодействия с пользователем. К таким возможностям относятся:

Стоит заметить, что к интерактивным возможностям табличного документа можно также отнести сводные таблицы и элементы управления, располагающиеся в ячейках, но сейчас мы не будем на них останавливаться, а подробнее рассмотрим вышеперечисленные механизмы.


Расшифровки

Система "1С:Предприятие 8" поддерживает механизм расшифровок (drill-down, drill-through), когда пользователь щелкает на строке или ячейке отчета и получает более детальный отчет, если конечно это предусмотрено программистом.

Расшифровки делятся на стандартные и нестандартные. Стандартные расшифровки обрабатываются системой автоматически и не требуют дополнительных усилий от программиста, например, для документов будет открыта форма документа, а для элементов справочника будет открыта форма элемента. Если справочник редактируется в списке, то курсор будет установлен на текущем элементе в форме списка. Для выполнения нестандартной расшифровки предназначено событие ОбработкаРасшифровки.

Событие "ОбработкаРасшифровки" можно обработать, только если табличный документ помещен в форму как элемент управления, а не открывается в отдельном окне, поскольку это событие существует только у элемента управления "ПолеТабличногоДокумента". Ниже показаны категория свойств "События" элемента управления "ПолеТабличногоДокумента", где назначается процедура-обработчик расшифровки:

Сама процедура "РасшифроватьСтроку" может выглядеть следующим образом (как пример):

Копировать в буфер обмена
Процедура РасшифроватьСтроку(Элемент, Расшифровка, СтандартнаяОбработка)
	Если ТипЗнч(Расшифровка) = Тип("ДокументСсылка.ДоговорПродажи") Тогда

		СтандартнаяОбработка = Ложь;
		Отчет = Отчеты.АнализДоговора.Создать();
  		Отчет.Договор = Расшифровка; //заполняем реквизит отчета
  		Отчет.Сформировать(ЭлементыФормы.ПолеТабличногоДокумента1);
  		
  	КонецЕсли; 
КонецПроцедуры

Примечание 1. В модуле приложения (аналог глобального модуля в версии 7.7) больше нет события ОбработкаЯчейкиТаблицы. Вся обработка расшифровок должна быть произведена в модуле формы, где располагается элемент управления "ПолеТабличногоДокумента".

Примечание 2. Событие "ОбработкаРасшифровки" возникает при щелчке на ячейке или рисунке, содержащих расшифровку. Не путайте его с событием "Выбор", возникающим для всех ячеек и рисунков при двойном щелчке мыши или нажатии клавиши Enter, причем, сначала возникает событие "Выбор", а потом "ОбработкаРасшифровки".


Группировки

В 1С:Предприятии 8 появилась возможность группировать данные в отчете. Группировки могут быть горизонтальные и вертикальные, тогда слева и сверху появляются специальные маркеры, позволяющие пользователю разворачивать и сворачивать группы, как показано на следующем рисунке:

Самый простой способ добавить группировки в отчет — доверить эту задачу системе, тогда от программиста потребуются минимальные усилия. Необходимо всего лишь применить методы НачатьАвтоГруппировкуСтрок/НачатьАвтоГруппировкуКолонок и ЗакончитьАвтоГруппировкуСтрок/ЗакончитьАвтоГруппировкуКолонок, которые включают режим автоматической группировки строк или колонок соответственно. В этом режиме при вызове методов Вывести (для строк) и Присоединить (для колонок) указываются дополнительные параметры для группировки:

Вывести(<Таблица>, <Уровень>, <Имя группы>, <Открыта>)
Присоединить(<Таблица>, <Уровень>, <Имя группы>, <Открыта>)

При использовании группировок очень полезно установить свойство ячейки "АвтоОтступ" в какое-нибудь ненулевое значение, например, 5. Тогда система будет автоматически добавлять заданное количество пробелов слева текста ячейки, основываясь на текущем уровне группировки. В результате отчет приобретет удобный внешний вид для отображения иерархии данных.

Следующий пример выводит список товаров с группировками:

Копировать в буфер обмена
ТабДок = Новый ТабличныйДокумент;
Макет = Справочники.Номенклатура.ПолучитьМакет("Каталог");
Область = Макет.ПолучитьОбласть("Строка");

Выборка = Справочники.Номенклатура.ВыбратьИерархически();
ТабДок.НачатьАвтоГруппировкуСтрок();
Пока Выборка.Следующий() Цикл
	Область.Параметры.Номенклатура = Выборка.Ссылка;
   	ТабДок.Вывести(Область, Выборка.Ссылка.Уровень(), Выборка.Наименование, Истина);	
КонецЦикла;

ТабДок.ЗакончитьАвтоГруппировкуСтрок();
ТабДок.Показать();

Примечания

Ячейки табличного документа могут иметь примечания, тогда в правом верхнем углу ячейки выводится маленький красный треугольник. При наведении курсора мыши на ячейку примечание показывается во всплывающем окне:

Программная установка примечаний реализуется следующим образом:

Копировать в буфер обмена
ТабДок = ЭлементыФормы.ПолеТабличногоДокумента1;
ТабДок.Очистить();

Макет = Справочники.Номенклатура.ПолучитьМакет("Каталог");
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл

	ОбластьЯчеекМакета = Макет.Область("ЯчейкаНаименование");
	ОбластьЯчеекМакета.Примечание.Текст = Выборка.Ссылка.Комментарий;

	ОбластьТабДок = Макет.ПолучитьОбласть("Строка"); 
	ОбластьТабДок.Параметры.Номенклатура = Выборка.Ссылка;
	ТабДок.Вывести(ОбластьТабДок); 

КонецЦикла;

Обратите внимание, что свойство "Примечание" у объекта "ОбластьЯчеекМакета" является объектом типа "Рисунок", а не простой строкой. Через этот объект можно редактировать внешний вид примечания, шрифт и цвет текста, фон, линии и т.д.


Резюме


См. также:

Основы формирования табличного документа на основе макета