|
Запуталась с расшифровкой в СКД | ☑ | ||
---|---|---|---|---|
0
tlg25
11.11.15
✎
10:14
|
Первый раз делаю расшифровку в СКД, Хрусталёву читала, но не смола до конца разобраться: решаема ли моя задача и как.
Есть Отчёт с СКД-макетом (В макете "Детальные записи". И потом ещё будет строка с итогами). Специального объекта "Отчёт" не было, просто по кнопке форме элемента я создавала табличный документ и связывала его с СКД-макетом: СКД = Справочники.ДоговораДМС.ПолучитьМакет("МакетВыплатыКлиента"); НастройкаСКД = СКД.НастройкиПоУмолчанию; Расшифровка = Новый ДанныеРасшифровкиКомпоновкиДанных; Компоновщик = Новый КомпоновщикМакетаКомпоновкиДанных; Параметр1 = НастройкаСКД.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Клиент")); Параметр1.Значение = Застрахованный; Параметр1.Использование = Истина; Параметр = НастройкаСКД.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("СтрокаПрейскуранта")); Параметр.Значение = СтрокаПрейскуранта; Параметр.Использование = Истина; Макет = Компоновщик.Выполнить(СКД, НастройкаСКД, Расшифровка); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет, , , Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДок); ПроцессорВывода.Вывести(ПроцессорКомпоновки); А теперь конечный пользователь захотел расшифроку. По двойному клику переход в документ/справочник ссылка на который есть в детальных данных в строке отчёта. Вроде поняла, после Хрусталёвой и гугления, что нельзя сделать расшифровку без специального объекта отчёт и созданной в нём формы. И что никакие стандартные расшифровки не будут работать для детальных записей. Я создала отчёт и форму в нём, я могу там прописать своё событие обработка расшифровки. НО мне надо, чтобы в эту в СКД |
|||
1
tlg25
11.11.15
✎
10:17
|
(0) НО мне надо, что с СКД этой формы параметры передавались из формы справочника по кнопке автоматом, чтобы конечный пользователь эту форму отчёта в глаза не видел и ничего не должен был в ней нажимать, а для него по прежнему сразу как и раньше при нажатии на кнопку выдавался уже отчёт готовый, но в нём по двойному клику работала прописанная мной расшифровка.
|
|||
2
DmitrO
11.11.15
✎
10:22
|
Специальный объект Отчет для решения задачи и не нужен. Нужна просто специальная форма, в которой надо разместить табличный документ, и которая будет хранить и обрабатывать расшифровку.
|
|||
3
tlg25
11.11.15
✎
10:44
|
(2) Спасибо. Создала на форме невидимый реквизит типа "ТабличныйДокумент" и его использую. Правда пока нет ни пункта меню "расшифровать"(В конце концов расшифровку, конечно, надо по двойному клику, без дом. пунктов меню), ни реакции на событие "Выбор" у табличного документа. (не попадает в событие Выбор ) Но хотя бы никаких лишних объектов отчёт/форм, для пользователя. Но может какие-то свойства у него не выставила, буду сейчас смотреть/экспериментировать.
|
|||
4
tlg25
11.11.15
✎
11:31
|
(2) Да, Вы правы по специальную форму, увы. Невидимый объект "табличный документ", как я хотела - не работает. Отчёт выводится, как и выводился, но нет никакой реакции на нажатие. И только если этот табличный документ сделать видимым и кликать не в получающийся с его помощью отчёт, а в видимый реквизит на форме, происходит попадание в событие.
|
|||
5
ИС-2
naïve
11.11.15
✎
11:38
|
(4) у табличного документа должно быть установлено толькопросмотр = истина, чтобы работала расшифровка
|
|||
6
ViSo76
11.11.15
✎
11:39
|
Перем пРасшифровка;
// Замени Расшифровка = Новый ДанныеРасшифровкиКомпоновкиДанных; на: пРасшифровка = Новый ДанныеРасшифровкиКомпоновкиДанных; Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) Перем ВыполненноеДействие; Если ТипЗнч( Расшифровка ) = Тип( "ИдентификаторРасшифровкиКомпоновкиДанных" ) Тогда СтандартнаяОбработка = Ложь; ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных( пРасшифровка, Новый ИсточникДоступныхНастроекКомпоновкиДанных( СхемаКомпоновкиДанных ) ); ДоступныеДействия = Новый Массив; ДоступныеДействия.Добавить( ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение ); ОбработкаРасшифровки.Выполнить( Расшифровка, ВыполненноеДействие, ДоступныеДействия ); КонецЕсли; КонецПроцедуры В ТабДок формы в событие "Обработка расшифровки" вставь название процедуры - РезультатОбработкаРасшифровки |
|||
7
ИС-2
naïve
11.11.15
✎
11:40
|
не знаю что такое ТабДок. Но лучше нормально вывести на форму табличный документ и
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.ТабДок); |
|||
8
ViSo76
11.11.15
✎
11:46
|
(7) ТабДок это и есть ЭлементыФормы.Результат;
Просто в коде нет присвоения, но это и так понятно. |
|||
9
tlg25
11.11.15
✎
12:22
|
(5) Спасибо, стояло изначально. Чтобы пользователь ничего там не правил.
|
|||
10
tlg25
11.11.15
✎
12:34
|
(8) Почти так и есть. Просто не весь код привела. Только у меня этот реквизит формы, имеющий тип "табличные документ", не "результат" называется, а по-своему, но это роли не играет. У меня не форма объекта отчёт теперь, когда сказали, что так извращаться не обязательно, а просто произвольная форма с реквизитом типа "табличный документ"
Спасибо за пример в (6). В нём не определена переменная СхемаКомпоновкиДанных, но я сама определила и положила свой СКД-макет (СхемаКомпоновкиДанных = Справочники.ДоговораДМС.ПолучитьМакет("МакетВыплатыКлиента");)Буду с этим примером разбираться. |
|||
11
ViSo76
11.11.15
✎
15:25
|
(10) Если изначально это отчёт, а не обработка, то СхемаКомпоновкиДанных уже инициализирована "Основной схемой компоновки данных"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |