Табличный документ предоставляет пользователю возможность работы с расшифровкой - детализацией информации, располагающейся в ячейке документа. В данной статье описываются некоторые особенности механизма расшифровок табличного документа.
Основное назначение расшифровки - получение дополнительной информации об объекте, отображенном в табличном документе. Например, пользователь выбрал ячейку отчета, содержащую название контрагента. По двойному щелчку левой кнопки мыши может быть открыт диалог, содержащий дополнительную информацию о данном контрагенте. Например, может быть запущен новый отчет по всем документам данного контрагента, или открыто контекстное меню, в котором пользователю выдаются возможные варианты расшифровки и т.д.
Для того чтобы воспользоваться расшифровкой, пользователю необходимо навести курсор мыши на нужную ячейку. Если для данной ячейки существует расшифровка, то при этом должен измениться вид курсора. Расшифровка может быть вызвана при помощи двойного щелчка левой кнопкой мыши, либо при помощи клавиши Enter. Дальнейшее действие по обработке расшифровки будет зависеть от того, какая расшифровка была предусмотрена в программе.
Получение расшифровки возможно только в том случае, если табличный документ находится в режиме "Только просмотр" или в режиме защиты. В остальных случаях при двойном щелчке мыши табличный документ будет переходить в режим редактирования содержимого ячейки.
Расшифровка представляет собой значение, которое присвоено свойству "Расшифровка" области ячеек табличного документа или рисунку табличного документа. Заполнить данное свойство можно одним из следующих способов:
1. Непосредственно присвоив данному свойству значение.
Этот способ может быть удобным в том случае, если табличный документ заполняется при помощи встроенного языка без использования макета и построителя отчета.
ЭлементыФормы.ПолеТабличногоДокумента1.Область(1,1).Расшифровка = "Текст расшифровки";
В данном примере расшифровка устанавливается первой ячейке первой строки поля табличного документа.
2. Использовать параметр расшифровки и метод "Вывести".
Часто табличный документ заполняется при помощи макета и метода табличного документа "Вывести". В таком случае в ячейке макета можно указать свойство "Параметр расшифровки". При вызове метода "Вывести", этот параметр будет использован для заполнения значения свойства расшифровки.
Отчет выводится при помощи макета. В некоторой ячейке области "Запись" табличного документа содержится параметр расшифровки "Номенклатура". Результатом выполнения следующего кода будет помещение в данную ячейку значения переменной Номенклатура.
Макет = ПолучитьМакет("Макет"); ОбластьЗапись = Макет.ПолучитьОбласть("Запись"); ОбластьЗапись.Параметры.Номенклатура = Номенклатура; ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОбластьЗапись);
Отметим, что с параметром расшифровки работа ведется также как и с обычными параметрами, размещенными в ячейках макета.
В случае если необходимо поместить в значение расшифровки несколько значений, следует поместить нужные значения в коллекцию, после чего поместить коллекцию в расшифровку.
Пример того, как это можно сделать, воспользовавшись объектом Структура:
Копировать в буфер обменаМакет = ПолучитьМакет("Макет"); ОбластьЗапись = Макет.ПолучитьОбласть("Запись"); Структура = Новый Структура; Структура.Вставить("Номенклатура", Номенклатура); Структура.Вставить("Контрагент", Контрагент); ОбластьЗапись.Параметры.Расшифровка = Структура; ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОбластьЗапись);
Аналогично выполняется заполнение расшифровки рисунка табличного документа.
Обратите внимание на свойство "ИспользованиеРасшифровки" ячейки табличного документа. Это свойство указывает, для какой области будет возможно вызвать расшифровку. Если данное свойство имеет значение "Ячейка", обработка расшифровки будет выполняться только для этой ячейки. Если "Строка", то расшифровка будет обрабатываться для всей строки, в которой расположена данная ячейка. Если же данное свойство имеет значение "Без обработки", то расшифровка для данной ячейке не будет обрабатываться вовсе, даже если ячейка будет содержать значение расшифровки.
После того, как расшифровка заполнена, следует позаботиться об ее обработке.
Если табличный документ отображается в поле табличного документа, возможно переопределение поведения расшифровки. Для этого нужно создать обработчик события ОбработкаРасшифровки поля табличного документа. Это событие будет вызываться при каждой попытке пользователя вызвать расшифровку. В обработчик события будет передано поле табличного документа, для которого вызвана расшифровка, значение расшифровки и флаг стандартной обработки расшифровки. Если стандартная обработка расшифровки не нужна, следует присвоить флагу СтандартнаяОбработка значение "Ложь".
Процедура ПолеТабличногоДокумента1ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; КонецПроцедуры
В тексте обработчика события можно выполнить любые действия по обработке расшифровки. Например, запустить на исполнение некоторый отчет, передав ему в качестве параметра значение расшифровки.