|
Расшифровка СКД тем же отчетом, но с другой схемой СКД | ☑ | ||
---|---|---|---|---|
0
Наська72
21.08.13
✎
06:16
|
Имеется отчет, его расшифровка - этот же отчет, но построенный по неосновной схеме.
Есть два макета и две формы. В первой форме пользователь кликает для расшифровки: СтандартнаяОбработка = Ложь; ЭлементРасшифровкиДанных = ДанныеРасшифровки.Элементы[Расшифровка]; ЭлементРасшифровкиДанныхПоля = ЭлементРасшифровкиДанных.ПолучитьПоля()[0]; НовыйОтчет = Отчеты[ЭтотОбъект.Метаданные().Имя].Создать(); ФормаОтчета = НовыйОтчет.ПолучитьФорму("ФормаРасшифровки"); ФормаОтчета.Объект = НовыйОтчет; ФормаОтчета.Ссылка = ЭлементРасшифровкиДанных.ПолучитьПоля()[0].Значение; ФормаОтчета.Открыть(); В новом объекте в форме расшифровки пишу: СхемаКомпоновкиДанных = Объект.ПолучитьМакет("Макет"); Объект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); Объект.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; ПараметрСсылка = Объект.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Ссылка")); ПараметрСсылка.Использование = Истина; ПараметрСсылка.Значение = Ссылка; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Объект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); Результат = ЭлементыФормы.Результат; Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Получаю новую форму с шапкой отчета, но сами данные как будто пусты. Что делаю не так? Пробовала другим вариантом в форме расшифровки: Объект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); ПараметрСсылка = Объект.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Ссылка")); ПараметрСсылка.Использование = Истина; ПараметрСсылка.Значение = Ссылка; Объект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); работает с основной схемой компоновки =( |
|||
1
Наська72
21.08.13
✎
06:19
|
Пробовала запросом из СКД посмотреть по полученной ссылке есть ли там данные - всё в порядке
|
|||
2
1Cv8_accepted
21.08.13
✎
06:25
|
(0) Тот же самый отчёт получить в качестве нового объекта и параметр задать программно.
|
|||
3
1Cv8_accepted
21.08.13
✎
06:26
|
+ Объект ВСЕГО собственно отчёта.
|
|||
4
Наська72
21.08.13
✎
06:27
|
(2) а разве я не это делаю:
НовыйОтчет = Отчеты[ЭтотОбъект.Метаданные().Имя].Создать(); ... ФормаОтчета.Ссылка = ЭлементРасшифровкиДанных.ПолучитьПоля()[0].Значение; А потом: ПараметрСсылка = Объект.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Ссылка")); ПараметрСсылка.Использование = Истина; ПараметрСсылка.Значение = Ссылка; |
|||
5
Наська72
21.08.13
✎
06:28
|
(3) что Вы имеете ввиду?
|
|||
6
Наська72
21.08.13
✎
06:37
|
Так кажется параметр не передается.
СхемаКомпоновкиДанных = Объект.ПолучитьМакет("Макет"); Объект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); Объект.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); ПараметрСсылка = Объект.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Ссылка")); ПараметрСсылка.Использование = Истина; ПараметрСсылка.Значение = Ссылка; Правильно задаю параметр? Потом делаю МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Объект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки); Не перетирает? |
|||
7
Наська72
21.08.13
✎
07:28
|
Вот так пробую:
ПараметрСсылка = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Ссылка")); ПараметрСсылка.Значение = Ссылка; Объект.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Объект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки); Всё равно параметр в заголовке не виден, отчет пустой |
|||
8
Наська72
21.08.13
✎
07:50
|
Ни в какую не хочет получать параметр:
СхемаКомпоновкиДанных = Объект.ПолучитьМакет("Макет"); Объект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); Объект.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); ПараметрСсылка = Объект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0]; ПараметрСсылка.Значение = Ссылка; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Объект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); Результат = ЭлементыФормы.Результат; Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Помогите, пожалуйста! |
|||
9
Наська72
21.08.13
✎
08:02
|
СхемаКомпоновкиДанных = Объект.ПолучитьМакет("Макет");
Объект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); Объект.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; ПараметрСсылка = Настройки.ПараметрыДанных.Элементы[0]; ПараметрСсылка.Использование = Истина; ПараметрСсылка.Значение = Ссылка; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); //В макете МакетКомпоновки.ЗначенияПараметров значение параметра установлено. ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); Результат = ЭлементыФормы.Результат; Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Если в макетеКомпоновки есть значение параметра. почему я его не вижу в отчете и отчет не формируется? |
|||
10
Xatori
21.08.13
✎
08:03
|
ПараметрСсылка = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Ссылка")) Так не правильно, нужно
ПараметрСсылка = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ИмяПараметра")); ПараметрСсылка.Значение = Ссылка; |
|||
11
Xatori
21.08.13
✎
08:04
|
Собственно поэтому наверное у тебя и данные пустые, т.к. параметр есть и скорей всего стоит использование и значение параметра пустая ссылка.
|
|||
12
Xatori
21.08.13
✎
08:08
|
Хотя собственно не очень понятно зачем делать разные схемы, когда можно сделать другой вариант и его использовать.
|
|||
13
Наська72
21.08.13
✎
08:09
|
(10) Нет "Ссылка" - это "ИмяПараметра".
Немного выше написала, что вижу в макете компоновки значение параметра (9) |
|||
14
Наська72
21.08.13
✎
08:11
|
В МакетКомпоновки.ЗначенияПараметров преспокойно лежит значение параметра, а вот в наборе данных МакетКомпоновки.НаборыДанных[0].ЗначенияПараметров пусто.(
|
|||
15
Xatori
21.08.13
✎
08:12
|
Вот подсказка
Объект.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; ПараметрСсылка = Настройки.ПараметрыДанных.Элементы[0]; ПараметрСсылка.Использование = Истина; ПараметрСсылка.Значение = Ссылка; Ты загружаешь настройки в Компановщик, потом в этих настройках меняешь что то, в компановщике будут изменения? |
|||
16
Наська72
21.08.13
✎
08:15
|
(15) перенести загрузку настроек ниже?
Я потом делаю МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); Где Настройки - это СхемаКомпоновкиДанных.НастройкиПоУмолчанию КомпоновщикНастроек где будет использован? |
|||
17
Наська72
21.08.13
✎
08:24
|
(15) Ситуация прежняя. В МакетКомпоновки.ЗначенияПараметров есть параметр, а в наборе данных МакетКомпоновки.НаборыДанных[0].ЗначенияПараметров нет
|
|||
18
Xatori
21.08.13
✎
08:25
|
Поменяй местами
Объект.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); С Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; ПараметрСсылка = Настройки.ПараметрыДанных.Элементы[0]; ПараметрСсылка.Использование = Истина; ПараметрСсылка.Значение = Ссылка; |
|||
19
Наська72
21.08.13
✎
08:37
|
(18) сделала, результат в (17)
|
|||
20
Наська72
21.08.13
✎
08:40
|
(18) Объясните, пожалуйста, почему у МакетКомпоновки параметры есть а в НабореДанных в этом же МакетеКомпоновки их нет.
|
|||
21
Xatori
21.08.13
✎
08:47
|
Почитай про программное формирование СКД, очень долго объяснять.
|
|||
22
Наська72
21.08.13
✎
08:57
|
(21) Читала. Можно конкретизировать что отвечает за заполнение МакетеКомпоновки.НаборДанных[0].ЗначенияПараметров? КомпоновщикНастроек или СхемаКомпоновкиДанных.НастройкиПоУмолчанию?
|
|||
23
Наська72
21.08.13
✎
09:22
|
Вот в этом месте Объект.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); настройки не закгружаются в Компоновщик. В настройках по умолчанию они стоят. Как быть???
|
|||
24
Наська72
21.08.13
✎
10:03
|
с (23) в этом месте решила. Но вот в наборданных параметры не передаются
|
|||
25
Xatori
21.08.13
✎
10:05
|
Эх, ну вот тебе, программное создание и заполнение нового отчёта, тут единственное отличие используется другой вариант той же схемы, но принципиального отличия нет, только нужные настройки передать нужно будет
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) Перем ВыполненноеДействие; Перем ДополнительныеДействия; Перем НайденныйОтбор; СтандартнаяОбработка = Ложь; ЭлементыРасшифровки = ЭтаФорма.ДанныеРасшифровки.Элементы[Расшифровка]; ПоляРасшифровки = ЭлементыРасшифровки.ПолучитьПоля(); ЗначениеПолеРасшифровки = ПоляРасшифровки[0].Поле; ДоступныеДействия = Новый Массив(); ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать); ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить); ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение); МассивПоля = Новый Массив; МассивПоля.Добавить("Период"); МассивПоля.Добавить("Цена"); МассивПоля.Добавить("ЕдХранения"); Настройки = КомпоновщикНастроек.Настройки.Отбор.Элементы; КоличествоЭлементовОтбора = Настройки.Количество(); Если МассивПоля.Найти(ЗначениеПолеРасшифровки) = Неопределено И ЭтотОбъект.ПолучитьФорму("ФормаОтчета").ЭлементыФормы.Результат.Рисунки.Количество() = 0 Тогда ДополнительныеДействия = Новый СписокЗначений; ДополнительныеДействия.Добавить("График","Открыть график"); КонецЕсли; ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ЭтаФорма.ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); Настройки = ОбработкаРасшифровки.Выполнить(Расшифровка, ВыполненноеДействие, ДоступныеДействия, ДополнительныеДействия); Если Настройки <> Неопределено Тогда Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить Тогда КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); СформироватьОтчет(ЭтаФорма.ЭлементыФормы.Результат, ЭтаФорма.ДанныеРасшифровки, ДатаНачало, ДатаКонец); ИначеЕсли ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать Тогда Отчет = ВнешниеОтчеты.Создать(ИспользуемоеИмяФайла); Форма = Отчет.ПолучитьФорму("ФормаОтчета"); Форма.Открыть(); Форма.ДатаНачало = ДатаНачало; Форма.ДатаКонец = ДатаКонец; Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); Отчет.СформироватьОтчет(Форма.ЭлементыФормы.Результат, Форма.ДанныеРасшифровки, ДатаНачало, ДатаКонец); КонецЕсли; ИначеЕсли ВыполненноеДействие = "График" Тогда Настройки = КомпоновщикНастроек.Настройки.Отбор.Элементы; КоличествоЭлементовОтбора = Настройки.Количество(); Отчет = ВнешниеОтчеты.Создать(ИспользуемоеИмяФайла); Форма = Отчет.ПолучитьФорму("ФормаОтчета"); Форма.Открыть(); Форма.ДатаНачало = ДатаНачало; Форма.ДатаКонец = ДатаКонец; НастройкиГрафик = СхемаКомпоновкиДанных.ВариантыНастроек.Найти("График").Настройки; Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиГрафик); Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить(); Для Каждого Эл ИЗ Настройки Цикл НовыйОтбор = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйОтбор.ВидСравнения = Эл.ВидСравнения; НовыйОтбор.Использование = Эл.Использование; НовыйОтбор.ЛевоеЗначение = Эл.ЛевоеЗначение; НовыйОтбор.ПравоеЗначение = Эл.ПравоеЗначение; НовыйОтбор.Представление = Эл.Представление; КонецЦикла; ОтборыСКД = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы; // ПРоверка на Количество Уровней группировок в данных расшифровки сРодители = ПолучитьРодителейРасшифровки(ЭлементыРасшифровки, сРодители); // Функция получает всех Родителей ячейки Парам1 = ЭлементыРасшифровки, Парам2 - Структура // Установка отборов Для каждого Эл Из сРодители Цикл Для Счетчик=0 По ОтборыСКД.Количество()-1 Цикл Отбор = ОтборыСкд[счетчик]; Если Эл.Ключ = Строка(Отбор.ЛевоеЗначение) Тогда Отбор.Использование = Истина; Отбор.ПравоеЗначение = Эл.Значение; Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; КонецЕсли; КонецЦикла; КонецЦикла; Отчет.СформироватьОтчет(Форма.ЭлементыФормы.Результат, Форма.ДанныеРасшифровки, ДатаНачало, ДатаКонец); КонецЕсли; КонецПроцедуры |
|||
26
Xatori
21.08.13
✎
10:08
|
Вот с этого момента тебя должно интересовать
ИначеЕсли ВыполненноеДействие = "График" Тогда |
|||
27
Наська72
21.08.13
✎
10:19
|
Мне кажется есть существенная разница, если схема используется другая.
Подытожу мой код: СхемаКомпоновкиДанных = Объект.ПолучитьМакет("Макет"); Объект.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; ПараметрСсылка = Настройки.ПараметрыДанных.Элементы[0]; ПараметрСсылка.Использование = Истина; ПараметрСсылка.Значение = Ссылка; ПараметрСсылка1 = СхемаКомпоновкиДанных.Параметры[0]; ПараметрСсылка1.Значение = Ссылка; Объект.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Объект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки);//Настройки, ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); Результат = ЭлементыФормы.Результат; Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); В отчет параметр так и не пришел. Подозреваю проблема в МакетеКомпоновки.НаборДанных1.Парметры |
|||
28
Xatori
21.08.13
✎
10:32
|
Кинь отчет
|
|||
29
Xatori
21.08.13
✎
10:35
|
Можно и на Инфостарте :)
|
|||
30
Наська72
21.08.13
✎
10:44
|
(29) он весь нетиповой https://docs.google.com/file/d/0Bwa1kNXZy3nQUGNNRkoyZmdTQ3M/edit?usp=sharing
|
|||
31
Наська72
21.08.13
✎
11:04
|
Всем спасибо. Сама разобралась.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |