|
СКД: Не работает расшифровка при программном выводе | ☑ | ||
---|---|---|---|---|
0
LevelUP
16.09.11
✎
10:26
|
Скармливаю ТаблицуЗначений СКД. Программно заполняю доступные поля и структуру группировок. Вывожу в табличное поле. Все выводится нормально, но не работает стандартная расшифровка.
Оно пользователю вроде и не надо, но мне интересно что нужно сделать чтоб заработала? Раньше выводил программно и все работало, правда там не было программного заполнения полей, да и источник данных был запрос, а не таблица. |
|||
1
lubja
16.09.11
✎
10:30
|
я писала что-то типа
Перем ВыполненноеДействие; СтандартнаяОбработка = Ложь; ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки,Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); ДоступныеДействия = Новый Массив; // заполняем доступные действия, если параметр не указан, то будут доступны все действия ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение); ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить); //НастройкиРасшифровки = ОбработкаРасшифровки.Выполнить(Расшифровка, ВыполненноеДействие, ДоступныеДействия); НастройкиРасшифровки = ОбработкаРасшифровки.Выполнить(Расшифровка, ВыполненноеДействие); Если НастройкиРасшифровки <> Неопределено Тогда КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиРасшифровки); ОбновитьОтчет(); КонецЕсли; |
|||
2
fisher
16.09.11
✎
10:34
|
(0) Вроде стандартная расшифровка сама работает только ежели в объекте "Отчет" интегрированную СКД юзать. В других случаях обработчик надо тулить.
|
|||
3
LevelUP
16.09.11
✎
10:35
|
(1) ну это перехват стандартной вроде. Мне интересно почему сама стандартная не открывается
|
|||
4
LevelUP
16.09.11
✎
10:36
|
(2) а ну вот и ответ
|
|||
5
fisher
16.09.11
✎
11:14
|
(3) Это, скорее, как раз и есть стандартная расшифровка. Просто объект "Отчет" подобный обработчик сам неявно навешивает.
|
|||
6
LevelUP
16.09.11
✎
11:25
|
Странное дело, у меня в процедуру назначенную событию ОбработкаРасшифровки ТП вообще не заходит, как будто за этими ячейками и нет ничего. Может я добавляя поля их не типизировал должным образом, или еще что.
|
|||
7
LevelUP
16.09.11
✎
11:42
|
+6 убрал вообще программное заполнение полей и группировок, все настроил вручную в самом макете компановки. Все равно не заходит в ОбработкуРасшифровки. Может дело в настройках ТП, но сколько нибудь подходящего свойства у него не нашел.
|
|||
8
GANR
16.09.11
✎
11:57
|
В режиме тонкого клиента расшифровку универсального отчета я сделал так:
&НаКлиенте Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) Перем ВыполненноеДействие, ПараметрВыполненногоДействия; Если ЭтоАдресВременногоХранилища(АдресРасшифровки) И ЭтоАдресВременногоХранилища(АдресСКД) Тогда СтандартнаяОбработка = Ложь; ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(АдресРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСКД)); ДоступныеДействия = Новый Массив; ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение); ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать); ОбработкаРасшифровки.ВыбратьДействие(Расшифровка, ВыполненноеДействие, ПараметрВыполненногоДействия, ДоступныеДействия); Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда ОткрытьЗначение(ПараметрВыполненногоДействия); ИначеЕсли ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать Тогда НКД_Расшифровки = ПолучитьНКД(Расшифровка, АдресРасшифровки, АдресСКД, ПараметрВыполненногоДействия); АдресХоронилища = СохранитьНастройкиНовойФормы(); Если НКД_Расшифровки <> Неопределено Тогда ФормаРасшифровки = ПолучитьФорму(ИмяФормы, Новый Структура("РежимРасшифровки, АдресХоронилища", Истина, АдресХоронилища), ЭтаФорма); ФормаРасшифровки.Открыть(); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьНКД(Расшифровка, АдресРасшифровки, АдресСКД, Настройки) ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(АдресРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСКД)); Возврат ОбработкаРасшифровки.ПрименитьНастройки(Расшифровка, Настройки); КонецФункции &НаСервере Функция СохранитьНастройкиНовойФормы() ПараметрыОтчета = Новый Структура; ПараметрыОтчета.Вставить("ГруппировкиСтрок", ГруппировкиСтрок.Выгрузить()); ПараметрыОтчета.Вставить("ГруппировкиКолонок", ГруппировкиКолонок.Выгрузить()); ПараметрыОтчета.Вставить("РесурсыОтчета", РесурсыОтчета.Выгрузить()); ПараметрыОтчета.Вставить("ИдентификаторПараметраРегистра", ИдентификаторПараметраРегистра); ПараметрыОтчета.Вставить("НКД_Расшифровки", НКД_Расшифровки); ПараметрыОтчета.Вставить("Период", Период); ПараметрыОтчета.Вставить("Периодичность", Периодичность); Разрез = ""; Структура = НКД_Расшифровки.Структура[0]; Попытка Разрез = Структура.Строки[0].ПоляГруппировки.Элементы[0].Поле; Исключение КонецПопытки; Попытка Разрез = ?(Разрез = "", Структура.ПоляГруппировки.Элементы[0].Поле, Разрез); Исключение КонецПопытки; ПараметрыОтчета.Вставить("Разрез", Строка(Разрез)); Возврат ПоместитьВоВременноеХранилище(ПараметрыОтчета); КонецФункции |
|||
9
LevelUP
16.09.11
✎
12:00
|
(8)у меня не заходит в эту процедуру
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) и клиент кстати обычный |
|||
10
fisher
16.09.11
✎
12:04
|
(9) При программной компоновке данные расшифровки не забыл указать?
|
|||
11
LevelUP
16.09.11
✎
12:09
|
>>При программной компоновке данные расшифровки не забыл указать?
Вот мой код уже без программной настройки полей. Может действительно что-то не указал. ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("Таблицка",тт1); СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); Настройки = КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных,ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(докк); КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
12
fisher
16.09.11
✎
12:18
|
КомпоновщикМакетаКомпоновкиДанных (DataCompositionTemplateComposer)
Выполнить (Execute) Синтаксис: Выполнить(<Схема>, <Настройки>, <ДанныеРасшифровки>, <МакетОформления>, <ТипГенератора>, <ПроверятьДоступностьПолей>, <ПараметрыФункциональныхОпций>) Параметры: <ДанныеРасшифровки> (необязательный) Тип: ДанныеРасшифровкиКомпоновкиДанных. Содержит переменную, в которую будут помещены данные расшифровки. Если параметр не указан, расшифровка заполняться не будет. |
|||
13
GenV
16.09.11
✎
12:20
|
(11) ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; - убил расшифровку
|
|||
14
LevelUP
16.09.11
✎
12:31
|
(12)Да действительно проморгал. Спасибо!
|
|||
15
fisher
16.09.11
✎
12:32
|
(14) Ты это в отчете делаешь? Тогда всё на порядок проще можно сделать.
|
|||
16
LevelUP
16.09.11
✎
12:33
|
(15) да в отчете. Что именно проще?
|
|||
17
Defender aka LINN
16.09.11
✎
12:39
|
(16) гугли СП на тему "СкомпоноватьРезультат"
|
|||
18
fisher
16.09.11
✎
12:50
|
(16) Соврал, не на порядок. Но... Как-то так:
ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("Таблицка",тт1); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных,ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(докк); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); (17) Ему надо внешние источники данных подключить. |
|||
19
fisher
16.09.11
✎
12:52
|
Расширение формы отчета уже имеет свойство "ДанныеРасшифровки", а у отчета есть свойство "СхемаКомпоновкиДанных", связанное с интегрированным компоновщиком настроек.
|
|||
20
LevelUP
16.09.11
✎
12:57
|
(18) а если схем несколько и настройки у них разные? В свойстве "СхемаКомпоновкиДанных" будет сидеть только основная.
|
|||
21
fisher
16.09.11
✎
13:02
|
(20) Тогда не канает, ессно. При нескольких схемах преимущества использования отчета практически к нулю сводятся. Хоть обработкой выводи.
|
|||
22
Defender aka LINN
16.09.11
✎
13:07
|
(18) Тогда хуже. Но в типовых есть функция, которая все выводит.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |