|
данные Расшифровки Компоновки Данных | ☑ | ||
---|---|---|---|---|
0
Vvvvv
04.03.15
✎
15:02
|
Создавал до этого тему, но не корректно выразился чего хотел.
Во внешним отчете использую СКД. Сначала заполняю табличную часть, а потом ее вывожу в СКД. Сам отчет выводится нормально, но расшифровки нету. Я имею ввиду, когда на отчете щелкаю по номенклатуре или контрагенту, что бы из отчета открыть ссылку на объект. не работает стандартная расшифровка. Полазил в конфигураторе, в процедуре: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ТЗ = ОбработкаТЗИтог(); // заполняется табличная часть СхемаКомпоновкиДанных = ПолучитьМакет("МакетТЗ"); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; //ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки); ВнешнийНаборДанных = Новый Структура("Свойства", тз); ВнешнийНаборДанных.Вставить("тзИтог",тз); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); этот код заполняет СКД из Таблицы значений. Я посмотрел, мне нужна "ДанныеРасшифровки" с типом "данныерасшифровкикомпоновкиданных" для дальнейшего использования. "ДанныеРасшифровки" изначально пустая, как ее заполнить? |
|||
1
ShoGUN
04.03.15
✎
15:05
|
(0) Юзай СкомпоноватьРезультат(это метод у ОтчетОбъект).
|
|||
2
ShoGUN
04.03.15
✎
15:06
|
Это вместо ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент юзай, в смысле.
|
|||
3
Vvvvv
04.03.15
✎
15:17
|
(1) честно не понятно,
СкомпоноватьРезультат(ДокументРезультат, ДанныеРасшифровки); ТЫ про это говоришь, можешь подсказать как это использовать? |
|||
4
ShoGUN
04.03.15
✎
15:22
|
(3) Данные расшифровки у формы отчета есть - это свойство у расширения формы отчёта. После того, как СкомпоноватьРезультат(ДокументРезультат, ДанныеРасшифровки); отработает, в ДокументРезультат будет помещён табличный документ с результатом, а в ДанныеРасшифровки - расшифровка для него.
|
|||
5
ShoGUN
04.03.15
✎
15:24
|
У меня так написано(это правда, обычные формы, в управляемых чуть сложней)
ФормаОтчета = ОтчетРасшифровка.ПолучитьФорму(); ФормаОтчета.ЭлементыФормы.Результат.Очистить(); ОтчетРасшифровка.СкомпоноватьРезультат(ФормаОтчета.ЭлементыФормы.Результат, ФормаОтчета.ДанныеРасшифровки); ФормаОтчета.Открыть(); |
|||
6
Vvvvv
04.03.15
✎
15:40
|
(5) ОтчетРасшифровки мне нигде не доступно.
Нашел другое ОтчетОбъект.ПолучитьФорму().ДанныеРасшифровки.Элементы Но он тоже пустой. |
|||
7
ShoGUN
04.03.15
✎
15:49
|
(6) ОтчетРасшифровки - это моя переменная, до этого создается. Это кусок из рабочего модуля.
ОтчетОбъект.ПолучитьФорму().ДанныеРасшифровки - вот это и есть то, что нужно передавать в СкомпоноватьРезультат вторым параметром(без Элементы). |
|||
8
Vvvvv
04.03.15
✎
16:30
|
(7) можешь код целиком скинуть хочу посмотреть, а то что ты говоришь не работает.
ОтчетРасшифровка = ОтчетОбъект.ПолучитьФорму().ДанныеРасшифровки; ФормаОтчета = ОтчетРасшифровка.ПолучитьФорму(); ФормаОтчета.ЭлементыФормы.Результат.Очистить(); ОтчетРасшифровка.СкомпоноватьРезультат(ФормаОтчета.ЭлементыФормы.Результат, ФормаОтчета.ДанныеРасшифровки); ФормаОтчета.Открыть(); |
|||
9
ShoGUN
04.03.15
✎
16:59
|
(8) Да пожалста :) Заодно посмотришь рекурсивную функцию для получения всех значений группировок. Этот кусок вызывает другой отчёт для расшифровки текущего. (ПолучитьВсехРодителейРасшифровки)
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПоляРасшифровки = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей(); СтруктураРасшифровки = ПолучитьВсехРодителейРасшифровки(Расшифровка); ОтчетРасшифровка = Отчеты.ВедомостьПоТоварамНаСкладахСКДПоРегистратору.Создать(); ОтчетРасшифровка.КомпоновщикНастроек.ЗагрузитьНастройки(ОтчетРасшифровка.СхемаКомпоновкиДанных.НастройкиПоУмолчанию); ДатаНач = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода")).Значение; ДатаКон = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода")).Значение; ОтчетРасшифровка.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода",ДатаНач); ОтчетРасшифровка.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода",ДатаКон); Для Каждого ЭлементРасшифровки Из СтруктураРасшифровки Цикл Для Каждого ЭлементОтбора Из ОтчетРасшифровка.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ЭлементРасшифровки.Ключ) Тогда ЭлементОтбора.ПравоеЗначение = ЭлементРасшифровки.Значение; ЭлементОтбора.Использование = Истина; КонецЕсли; КонецЦикла; КонецЦикла; ФормаОтчета = ОтчетРасшифровка.ПолучитьФорму(); ФормаОтчета.ЭлементыФормы.Результат.Очистить(); ОтчетРасшифровка.СкомпоноватьРезультат(ФормаОтчета.ЭлементыФормы.Результат, ФормаОтчета.ДанныеРасшифровки); ФормаОтчета.Открыть(); //ОбработкаРасшифровки(СтруктураРасшифровки, ОтчетРасшифровка); КонецПроцедуры Функция ПолучитьВсехРодителейРасшифровки(ИД, СтруктураРасшифровки = Неопределено) Если СтруктураРасшифровки = Неопределено Тогда СтруктураРасшифровки = Новый Структура; КонецЕсли; ПолеРасшифровки = ДанныеРасшифровки.Элементы[ИД]; Если ТипЗнч(ПолеРасшифровки) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда ЗначенияПолей = ПолеРасшифровки.ПолучитьПоля(); Для Каждого ЗначениеПоля Из ЗначенияПолей Цикл СтруктураРасшифровки.Вставить(ЗначениеПоля.Поле, ЗначениеПоля.Значение); КонецЦикла; РодителиГруппировка = ПолеРасшифровки.ПолучитьРодителей(); Для Каждого Родитель Из РодителиГруппировка Цикл ПолучитьВсехРодителейРасшифровки(Родитель.Идентификатор, СтруктураРасшифровки); КонецЦикла; ИначеЕсли ТипЗнч(ПолеРасшифровки) = Тип("ЭлементРасшифровкиКомпоновкиДанныхГруппировка") Тогда РодителиГруппировка = ПолеРасшифровки.ПолучитьРодителей(); Для Каждого Родитель Из РодителиГруппировка Цикл ПолучитьВсехРодителейРасшифровки(Родитель.Идентификатор, СтруктураРасшифровки); КонецЦикла; КонецЕсли; Возврат СтруктураРасшифровки; КонецФункции |
|||
10
ShoGUN
04.03.15
✎
17:01
|
Тьфу ты, я имел в виду, что тут обработка расшифровки вызывает другой отчёт, а ПолучитьВсехРодителейРасшифровки получает все значения группировок.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |