|
Запрос в СКД. Выбор Источника | ☑ | ||
---|---|---|---|---|
0
raytan
26.01.15
✎
13:40
|
Есть работающий запрос в СКД. Данные берутся из регистра ПланыПроизводства1. Хотелось бы по галочке менять источник данных. Имеется ввиду брать информацию уже из регистраПланыПроизводства2. Возможно ли сделать что то типо такого:
Выбрать * Из Выбор Когда &Флаг Тогда РегистрыСведений.ПланыПроизводства1 как ПланыПроизводства Иначе РегистрыСведений.ПланыПроизводства2 как ПланыПроизводства Конец или Выбрать * Из Выбор Когда &Флаг Тогда РегистрыСведений.ПланыПроизводства1 Иначе РегистрыСведений.ПланыПроизводства2 Конец как ПланыПроизводства Просто в тексте программы было бы просто реализовать нечто подобное. Но как это сделать в СКД ? Есть такой работающий вариант: Выбрать Выбор Когда &Флаг Тогда ПланыПроизводства1.Номенклатура Иначе ПланыПроизводства2.Номенклатура Конец как Номенклатура Из РегистрыСведений.ПланыПроизводства1 как ПланыПроизводства1, РегистрыСведений.ПланыПроизводства2 как ПланыПроизводства2 Но отчет начинает работать раза 3-4 медленнее, что уже неприемлимо. |
|||
1
raytan
26.01.15
✎
13:43
|
Возможна реализация за счет разных НаборовДанных и соответственно разных вариантов настроек. Но это решение некрасиво и в случае дополнительных настроек пользователем, ему придется их дублировать два раза. Да и вообще плохой вариант ((
|
|||
2
raytan
26.01.15
✎
14:14
|
Ни у кого нет никаких мыслей ?
|
|||
3
Garykom
гуру
26.01.15
✎
14:38
|
(2) разные СКД с синхронизацией настроек?
|
|||
4
Mankubus
26.01.15
✎
14:40
|
поменять текст запроса при компоновке не подходит?
|
|||
5
raytan
26.01.15
✎
14:57
|
(4) Подходит, но я надеялся услышать ответ, что можно реализовать за счет конструкции типа "Если... Тогда" :)) А менять текст запроса, достаточно сложно, так как он ОЧЕНЬ большой и не все поля совпадают в этих регистрах (((
(3) Я так еще не делала ни разу, так что мне не совсем ясно как это реализовать. |
|||
6
raytan
26.01.15
✎
15:00
|
(4) Наверное пока лучшее решение.
|
|||
7
raytan
27.01.15
✎
11:00
|
Может кому то пригодится. Реализовал изменением запроса в событии ПриКомпоновкеРезультата
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка=Ложь; Настройки = КомпоновщикНастроек.ПолучитьНастройки(); //мой код Если Настройки.ПараметрыДанных.Элементы.Найти("ФлагУтвержденные").Значение Тогда Если СхемаКомпоновкиДанных.НаборыДанных.Количество() > 0 Тогда СхемаКомпоновкиДанных.НаборыДанных[0].Запрос = СтрЗаменить(СхемаКомпоновкиДанных.НаборыДанных[0].Запрос, "РегистрНакопления.ПланыПроизводства", "РегистрСведений.УтвержденныеПланыПроизводства"); СхемаКомпоновкиДанных.НаборыДанных[0].Запрос = СтрЗаменить(СхемаКомпоновкиДанных.НаборыДанных[0].Запрос, "МЕСЯЦ(ПланыПроизводства.Период)", "МЕСЯЦ(ПланыПроизводства.ПериодПланирования)"); КонецЕсли; КонецЕсли; //мой код КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.НачатьВывод(); ЭлементРезультата = ПроцессорКомпоновки.Следующий(); Пока ЭлементРезультата <> Неопределено Цикл ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); ЭлементРезультата = ПроцессорКомпоновки.Следующий(); КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); КонецПроцедуры Параметр "ФлагУтвержденные" меняю по чекбоксу на форме. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |