|
Программное добавление/удаление параметров СКД | ☑ | ||
---|---|---|---|---|
0
manti
30.10.14
✎
15:09
|
Есть отчет на СКД. В зависимотси от выбранного там параметра другой должен удаляться из списка параметров а также инициализироваться вновь. Как это сделать?
Есть пример, но он для типа отбора: Если ЭтаФорма.Элементы.КомпоновщикНастроекПользовательскиеНастройки.ТекущиеДанные.Настройка = "Партнер" Тогда ИДНастройкаТипаКвоты = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Партнер").ИдентификаторПользовательскойНастройки; НастройкаПартнер = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ИДНастройкаТипаКвоты); Если НастройкаПартнер <> Неопределено Тогда Если НастройкаПартнер.Значение = Истина И НастройкаПартнер.Использование = Истина Тогда Для Каждого ЭлементОтбора Из Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент") Тогда Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Удалить(ЭлементОтбора); КонецЕсли; КонецЦикла; Иначе //проверим на присутствие отбора МожноДелатьОтбор = Истина; Для Каждого ЭлементОтбора Из Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент") Тогда МожноДелатьОтбор = Ложь; КонецЕсли; КонецЦикла; Если МожноДелатьОтбор Тогда ЭлементОтбора = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент"); //ЭлементОтбора.ВидСравнения = ВидСравнения.Равно; //ЭлементОтбора.ПравоеЗначение = Значение; ЭлементОтбора.Использование = Ложь; ЭлементОтбора.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;//"b8c89ee2-36e4-43b3-929f-ed8a7b740b4b"; ЭлементОтбора.ПредставлениеПользовательскойНастройки = "Контрагент"; ЭтаФорма.ОбновитьОтображениеДанных(); КонецЕсли; КонецЕсли; КонецЕсли КонецЕсли; |
|||
1
DrZombi
гуру
30.10.14
✎
15:17
|
(0)Очень просто... Но параметры обычно берутся из Запроса, так что тут обстоит дело в Динамическом запросе :)
А так, если запрос статичен, то заполняются параметры так: http://1cskd.ru/2014/06/smena-tipa-nabora-dannyx-skd-s-soxraneniem-polej/ В "ПриКомпоновкеРезультата" добавляешь код, типо: НастройкиКомпоновщика = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки(); ЭлемПользНастр = ЭтотОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы; Если НастройкиКомпоновщика.ПараметрыДанных.Элементы.Количество()>0 ТОгда Для каждого Элемент Из НастройкиКомпоновщика.ПараметрыДанных.Элементы Цикл Если Элемент.Использование=Истина тогда Если Сокрлп(Элемент.Параметр)="СмещениеСервер" тогда Элемент.Использование = Истина; //Получать только на сервере :) УнВремя=УниверсальноеВремя(ТекущаяДата()); СмещениеСервер = МестноеВремя(УнВремя) - УнВремя; //4 часа для Москвы Элемент.Значение = СмещениеСервер; //Отобразим для пользователя НайденЭлемент = ЭлемПользНастр.Найти(Элемент.ИдентификаторПользовательскойНастройки); Если НайденЭлемент <> Неопределено Тогда НайденЭлемент.Значение = Элемент.Значение; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; //.... //Макет компоновки КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(ЭтотОбъект.СхемаКомпоновкиДанных, НастройкиКомпоновщика, ДанныеРасшифровки); |
|||
2
DrZombi
гуру
30.10.14
✎
15:18
|
+(0)Пример с динамическим запросом:
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=633633 |
|||
3
manti
30.10.14
✎
15:31
|
(1) это пример установки значения для параметра.
(2) что то там неясно что они делают) Есть более конкретный пример? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |