|
Отчет на СКД в новой форме | ☑ | ||
---|---|---|---|---|
0
first_may
20.01.17
✎
16:30
|
Добрый день.
Есть некоторая обработка с формой - Форма. Есть схема компоновки данных - МакетОтчет. Есть еще одна форма - ФормаОтчета. В этой форме добавил реквизит КомпоновщикНастроек типа КомпоновщикНастроекКомпоновкиДанных, а также на форму поместил ТабличноеПоле с данными КомпоновщикНастроек.Настройки.Отбор и типом ОтборКомпоновкиДанных. На первой форме (самой обработке) есть кнопка, при нажатии выполняется код: СхемаКомпоновкиДанных = ПолучитьМакет("МакетОтчет");// макет СКД Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; // получить настройки схемы компоновки данных ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; // помещаем в переменную данные о расшифровке данных ПараметрДатаОтчета = Настройки.ПараметрыДанных.Элементы.Найти("ДатаОтчета"); ПараметрДатаОтчета.Использование = Истина; ПараметрДатаОтчета.Значение = ДатаОтчета; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; // создаем компоновщик макета МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); // создадим и инициализируем процессор компоновки данных ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки); // выведем отчет в табличный документ "Результат" ФормаОтчета = ЭтотОбъект.ПолучитьФорму("ФормаОтчетах"); ФормаОтчета.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); ФормаОтчета.ДанныеРасшифровки = ДанныеРасшифровки; Результат = ФормаОтчета.ЭлементыФормы.ДокументРезультат; Результат.Очистить(); // выводим результат в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); ФормаОтчета.Открыть(); Но когда открывается вторая форма, отчет формируется нормально, а в ТабличноеПоле отображаются отборы, но с красным крестиком и указать отбор не получается. Как передать отбор указанный в скд на новую форму и что бы им можно было пользоваться в ней? |
|||
1
first_may
20.01.17
✎
16:55
|
Прошу помощи.
|
|||
2
Windyhead
20.01.17
✎
17:06
|
Компоновщик настроек нужно проинициализировать (тот который на форму кинул)
АдресСхемы = ПоместитьВоВременноеХранилище(Схема,УНикальныйИдентификатор); КомпоновщикНастроек.Инициализировать(новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы )); КомпоновщикНастроек.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию); |
|||
3
first_may
20.01.17
✎
19:08
|
(2) про этот
"Есть еще одна форма - ФормаОтчета. В этой форме добавил реквизит КомпоновщикНастроек типа КомпоновщикНастроекКомпоновкиДанных"? |
|||
4
first_may
20.01.17
✎
19:34
|
(2) добавил
АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, Новый УникальныйИдентификатор); и ФормаОтчета.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы)); получилось то, что хотел. Спасибо!!! |
|||
5
first_may
20.01.17
✎
19:56
|
(2) а еще..
Вот в новой форме я добавил кнопку Сформировать. И если установить отбор, то что надо написать в кнопке сформировать, что бы скд обновилось, но уже с отбором? |
|||
6
first_may
21.01.17
✎
08:17
|
Подскажите пож, как сделать обновление скд с отбором.
|
|||
7
first_may
21.01.17
✎
09:29
|
Нашел пример, вот:
тОтчет = Отчеты.ОтчетПоЦенамИНаценкам.Создать(); НастройкиКД = тОтчет.КомпоновщикНастроек.ПолучитьНастройки(); ПолеНоменклатура = тОтчет.КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Номенклатура"); //поле отбора присутствует в СКД ПолеНоменклатураСкидка = тОтчет.КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("НоменклатураСкидка"); //поле отбора присутствует в СКД НовыйОтбор = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйОтбор.ЛевоеЗначение = ПолеНоменклатура.Поле; НовыйОтбор.ПравоеЗначение = ЭлементыФормы.Список.ТекущаяСтрока; НовыйОтбор.Использование = Истина; НовыйОтбор = НастройкиКД.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйОтбор.ЛевоеЗначение = ПолеНоменклатураСкидка.Поле; НовыйОтбор.ПравоеЗначение = ЭлементыФормы.Список.ТекущаяСтрока; НовыйОтбор.Использование = Истина; тОтчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКД); тФорма = тОтчет.ПолучитьФорму("ФормаОтчета"); тОтчет.СкомпоноватьРезультат(тФорма.ЭлементыФормы.Результат); //таб док на форме тФорма.Открыть(); Но у меня нет отчет. Есть только СКД, основная форма и дополнительная (вторая). Вот на второй надо установить отбор и сформировать отчет на скд. Как передать параметры отбора сделать получилось, а вот как как с установленными обновить отчет - нет. Подскажите пожалуйста, как это сделать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |