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