|
СКД: объединение 2-х отчетов в 1 | ☑ | ||
---|---|---|---|---|
0
extrim-style
18.08.16
✎
11:25
|
Подскажите, как лучше объединить 2 отчета, имеющих разные источники данных, в 1 с возможностью выбора необходимого отчета через параметр.
Есть условия: не создавать свою форму, использовать минимум кода. |
|||
1
extrim-style
18.08.16
✎
12:00
|
1. Создал 2 макета СКД.
2. В каждом макете создал параметр со списком наименований макетов и вывел его в пользовательские настройки. 3. В модуль объекта добавил следующий код: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) НаименованиеПараметра = "Продукт"; ИдентификаторПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(НаименованиеПараметра).ИдентификаторПользовательскойНастройки; НастройкаПараметра = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ИдентификаторПараметра); Параметр = ?(НастройкаПараметра <> Неопределено, НастройкаПараметра.Значение, КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(НаименованиеПараметра).Значение); Схема = ПолучитьМакет(Параметр); ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки; КомпоновщикНастроек.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию); КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(ПользовательскиеНастройки); КонецПроцедуры Вроде бы работает. Всем спасибо за внимание). |
|||
2
extrim-style
19.08.16
✎
14:47
|
Обнаружил еще способ: использование вложенных схем.
1. Создал новую схему без данных, добавил в неё необходимые параметры. 2. Создал необходимые вложенные схемы (через сохранить/загрузить). 3. Параметры вложенных схем привязал к основным параметрам. 4. В настройках (в структуре отчета) добавил 2 вложенных (в виде схем) ранее отчета. 5. Включение/отключение необходимых флагов структуры делаю следующим образом: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) НаименованиеПараметра = "Продукт"; ИдентификаторПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(НаименованиеПараметра).ИдентификаторПользовательскойНастройки; НастройкаПараметра = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ИдентификаторПараметра); Параметр = ?(НастройкаПараметра <> Неопределено, НастройкаПараметра.Значение, КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(НаименованиеПараметра).Значение); Для каждого Эл из КомпоновщикНастроек.Настройки.Структура Цикл Эл.Использование = Эл.ИдентификаторОбъекта = Параметр; КонецЦикла; КонецПроцедуры Не знаю, какой из этих способов лучше. Хотелось бы обойтись совсем без кода. |
|||
3
extrim-style
22.08.16
✎
09:12
|
+(2) сократил код (Программно узнать используется ли параметр в отчете):
Настройки = КомпоновщикНастроек.ПолучитьНастройки(); Продукт = Настройки.ПараметрыДанных.Элементы.Найти("Продукт").Значение; Для каждого Эл из КомпоновщикНастроек.Настройки.Структура Цикл Эл.Использование = Эл.ИдентификаторОбъекта = Продукт; КонецЦикла; |
|||
4
DrZombi
гуру
22.08.16
✎
09:16
|
Молодца, нечего непонятно, но я рад за вас :)
|
|||
5
DrZombi
гуру
22.08.16
✎
09:17
|
Для справки и более подробно
Использование нескольких схем компоновки данных в одном отчете http://1cskd.ru/2010/07/ispolzovanie-neskolkix-sxem-komponovki-dannyx-v-odnom-otchete/ |
|||
6
vicof
22.08.16
✎
09:17
|
Вариант отчета не?
|
|||
7
extrim-style
22.08.16
✎
09:17
|
(4) спасибо, я знал, что я не напрасно тружусь)
|
|||
8
extrim-style
22.08.16
✎
09:18
|
(6) не, т.к. нет быстрого выбора
|
|||
9
extrim-style
22.08.16
✎
09:18
|
(5) устарело...
|
|||
10
DrZombi
гуру
22.08.16
✎
09:37
|
(9) Чем устарело? 1С новее нечего не придумало :)
|
|||
11
extrim-style
22.08.16
✎
09:44
|
(10) кнопки "Выбрать вариант..." раньше не было на форме по умолчанию, а так - http://catalog.mista.ru/public/173309/
|
|||
12
extrim-style
22.08.16
✎
09:47
|
+(3) надо добить обработкой флага использования:)
Продукт = КомпоновщикНастроек.ПолучитьНастройки().ПараметрыДанных.Элементы.Найти("Продукт"); Для каждого Эл из КомпоновщикНастроек.Настройки.Структура Цикл Эл.Использование = ?(Продукт.Использование, Эл.ИдентификаторОбъекта = Продукт.Значение, Ложь); КонецЦикла; |
|||
13
extrim-style
22.08.16
✎
09:50
|
(12) вобще лучше использование "всегда" сделать...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |