Back to top

Как сделать Расшифровку в табличном документе

Опубликовано e-1c@mail.ru - вс, 05/14/2017 - 08:43

Расшифровки бывают стандартные и нестандартные.

I) Стандартные:

может использоваться как непосредственно в табличном документе, так и в объекте ПолеТабличногоДокумента (т.е.табличный документ, размещенный не в отдельном окне, а непосредственно на форме).

Чтобы Расшифровка сработала, должны выполняться 3 условия:

1) Для ячейки табличного документа, из которой мы хотим вызвать Расшифровку, должно быть установлено свойство ПараметрРасшифровки. Например, мы хотим, чтобы по двойному щелчку на ячейке с названием контрагента открывалась форма элемента справочника Контрагента, чтобы можно было уточнить какие-то данные, которые в отчет не выводятся. Задаем свойству ПараметрРасшифровки какое-нибудь значение, например, РасшифровкаКонтрагента.

2) В процессе вывода областей макета в результирующий табличный документ нужно ОБЯЗАТЕЛЬНО ПРИСВОИТЬ параметру расшифровки значение нужного типа, например:

 ТабДок = Новый ТабличныйДокумент;
Выборка = Справочники.Контрагенты.Выбрать();
Пока Выборка.Следующий() Цикл
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.Контрагент = Выборка.Наименование;
// .................................................
Область.Параметры.РасшифровкаКонтрагента = Выборка.Ссылка;
ТабДок.Вывести(Область);
КонецЦикла;   

3) Должен быть обеспечен запрет редактирования ячейки с расшифровкой, т.е. нужно указать

ТабДок.ТолькоПросмотр = Истина;

В свойствах самой ячейки параметр "Защита" в группе "Основные", необходимо установить в Истина (включить флаг).

II) Нестандартные:

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

1) Вывод табличного документа должен осуществляться в объект ПолеТабличногоДокумента;

2) Должно быть присвоено значение свойству ячейки ПараметрРасшифровки, например, РасшифровкаКонтрагента.

3) Параметру расшифровки РасшифровкаКонтрагента присваивается заполненный при формировании табличного документа нужными значениями СписокЗначений или чаще Структура. В частности, может передаваться имя стандартного отчета конфигурации и параметров, которые нужно задать в форме отчета, например, период дат, номер счета и т.д. А потом этот отчет вызывается как процедура.

4) Для объекта ПолеТабличногоДокумента свойство ТолькоПросмотр нужно установить в значение Истина.

5) Код пользовательской процедуры помещается в процедуру

ПолеТабличногоДокумента1ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
// первой строкой в ней должна быть такая:

СтандартнаяОбработка = Ложь;   

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

 
Процедура КнопкаСформироватьНажатие(Кнопка)
Контрагенты = Справочники.Контрагенты;
Выборка = Контрагенты.Выбрать();
Таб = ЭлементыФормы.ПолеТабличногоДокумента1;
Макет = ПолучитьМакет("Макет"); 
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа = Ложь Тогда
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.Контрагент = Выборка.Наименование;
.................................................................................................
СтруктураРасшифровки = Новый Структура;
СтруктураРасшифровки.Вставить("Контрагент",Выборка.Ссылка);
СтруктураРасшифровки.Вставить(".......",.........);
.........................................................................
Область.Параметры.РасшифровкаКонтрагента = СтруктураРасшифровки;
ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(Область);
Иначе
Продолжить;
КонецЕсли;
КонецЦикла;
ЭлементыФормы.ПолеТабличногоДокумента1.ТолькоПросмотр = Истина;
КонецПроцедуры
 
Процедура ПолеТабличногоДокумента1ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Договоры = Справочники.Договоры.ПолучитьФормуСписка();
Договоры.ПараметрОтборПоВладельцу = Расшифровка.Контрагент;
Договоры.Открыть();
КонецПроцедуры