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