|   |   | 
| 
 | СКД: Не работает расшифровка при программном выводе | ☑ | ||
|---|---|---|---|---|
| 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) Тогда хуже. Но в типовых есть функция, которая все выводит.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |