Расшифровка табличного документа 1с 8.2.

Вопрос: Подскажите пожалуйста, каким образом можно сделать следующее.

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

Я хочу чтобы при двойном клике на ячейку выполнялась процедура которая к примеру запускает отчет по расшифровке ячейки.

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

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

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

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

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

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

Код 1C v 8.х ТабДок = Новый ТабличныйДокумент;
Выборка = Справочники.Контрагенты.Выбрать();



// .................................................
Область.Параметры.РасшифровкаКонтрагента = Выборка.Ссылка;
ТабДок.Вывести(Область);
КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

К примеру, как я сформировал макеты для .

Я зашёл в форму обработки и перешёл на закладку "Макеты":

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

Во многих моментах работа в редакторе похожа на работу в программе Excel, но есть свои особенности, на которых я бы хотел остановиться.

Что я понимаю под областью? Это и несколько строк и несколько ячеек, в общем любая часть табличного документа, которая может быть выделена нами, используя левую кнопку мыши.

Вот выделенная область из двух строк:

А вот выделенная область из 2 столбцов:

А сейчас мы выделим область на пересечении первых двух строк и первых двух столбцов:

Так вот. Если мы сумели выделить нужную нам область, то, нажав на ней правой кнопкой и выбрав пункт "Свойства", мы сможем присвоить ей имя, по-которому мы будем к ней обращаться из нашего кода, формируя печатную форму:

Это базовый навык, которым мы должны овладеть, чтобы суметь делать табличные макеты.

Как посмотреть уже назначенные имена

А давайте посмотрим какие имена областям уже назначены в макете?

Для этого из меню конфигуратора выбираем:

Вот она наша только что назначенная область "Шапка":

А если сейчас выделим её в диалоге и нажмём "Выбрать", то в редакторе будет выбрана соотв. область ячеек:

Как задать параметр области

Часто при формировании печатной области требуется не просто вывести область из макета. Нужно ещё и заполнить определенные ячейки определенными параметрами.

Эти параметры мы задаём у области и заданные значения автоматически попадают в нужные ячейки.

Для этого в свойствах нужной нам ячейки (куда будет выводиться значение параметра)...

Указываем в поле "Заполнение" значение "Параметр", а в поле "Параметр" пишем имя, по которому мы будем обращаться к этому параметру из кода:

Если же указать в заполнении не "Параметр", а "Шаблон", то можно будет в самой ячейке указать какой-то текст (шаблон) с использованием имени параметра в квадратных скобках:

В этом случае имя параметра (и его позиция в шаблоне) указывается в квадратных скобках.

Как задать параметр расшифровки?

Имя параметра расшифровки задаётся всё в тех же свойствах ячейки:

Уже потом из кода мы присвоим этому параметру (по имени "РасшифровкаНоменклатуры") нужное значение (ссылку на элемент номенклатуры).

И когда пользователь сделает двойной щелчок на этой ячейки - ему откроется значение, присвоенное параметру расшифровки (в данном случае откроется форма элемента номенклатуры).

Дальнейшее напутствие

Мы рассмотрели необходимые основы. А теперь внимательно исследуйте .

Скачайте и эту базу. в ней обработку "ОбработкаДляИспытаний".

В её макетах есть табличные варианты. Исследуйте их как можно тщательнее, опираясь на приёмы, которые мы рассмотрели чуть выше.