Програмное изменение запроса СКД и установка параметров
02.09.15, 13:17
Завсегдатай
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 20 раз
Рейтинг: 0
Всем привет!
Нужно програмно менять запрос в отчете на скд, в зависимости от настроек пользователя.
Запрос поменял, но не могу установить параметр "ОсновнойМенеджер", в параметрах данных его нет. Подскажите как сделать.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Настройки = КомпоновщикНастроек.Настройки; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос = ИзмененныйЗапрос; // здесь в запрос добавляю строку: Контрагент.ОсновнойМенеджер В(ОсновнойМенеджер) Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ОсновнойМенеджер", Менеджер); //здесь ошибка, не найден параметр "ОсновнойМенеджер" МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); // Скомпонуем результат ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки); ДокументРезультат.Очистить(); // Выводим результат в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры
02.09.15, 14:15
Общительный
Группа: Пользователи
Сообщений: 44
Из: Харьков
Спасибо сказали: 12 раз
Рейтинг: 0
Цитата(DrLivsi @ 02.09.15, 14:54)
У" ПараметрыДанных" нет метода Добавить()
Пробовал следующий код, но ничего не поменялось
ПараметрДанных = СхемаКомпоновкиДанных.Параметры.Добавить(); ПараметрДанных.Имя = "ОсновнойМенеджер"; ПараметрДанных.Использование = ИспользованиеПараметраКомпоновкиДанных.Всегда; ПараметрДанных.Заголовок = "Основной менеджер"; ПараметрДанных.Значение = ОсновнойМенеджер;
Если уж хотите программно добавить параметр, то его нужно не СхемеКомпоновки добавлять, а Настройкам.
02.09.15, 15:30
Живет на форуме
Группа: Местный
Сообщений: 2908
Из: Київ, Україна
Спасибо сказали: 1159 раз
Рейтинг: 1244.5
Цитата(DrLivsi @ 02.09.15, 14:54)
У" ПараметрыДанных" нет метода Добавить()
Конечно нет. Он есть у "ПараметрыДанных.Элементы".
Допрацьовую: - "Бухгалтерія для України 2.1"; - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
02.09.15, 16:42
Общительный
Группа: Пользователи
Сообщений: 44
Из: Харьков
Спасибо сказали: 12 раз
Рейтинг: 0
Цитата(DrLivsi @ 02.09.15, 17:13)
Получился у меня следующий код:
ПараметрКомпоновки = Настройки.ПараметрыДанных.Элементы.Добавить(); ПараметрКомпоновки.Параметр = Новый ПараметрКомпоновкиДанных("ОсновнойМенеджер"); ПараметрКомпоновки.Использование = Истина; ПараметрКомпоновки.Значение = ПараметрыСеанса.ТекущийПользователь;
Теперь в первой строке вылетает ошибка:
Коллекция значений параметров не может изменять свой состав, так как она связана с доступными параметрами.
Получите настройки из СхемыКомпоновки, добавьте в них параметр, а потом Настройки.ЗагрузитьПараметры(ВашиПараметры)
03.09.15, 11:34
Ветеран
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0
Делал отчет, в котором две схемы СКД, в зависимости от выбранного переключателя подставляется нужный макет СКД.
Если ВходВыходКОДОС Тогда МакетВходыВыходы = ПолучитьМакет("ВходыВыходыКОДОС"); Настройки = МакетВходыВыходы.НастройкиПоУмолчанию; Для Инд1 = 0 По Настройки.Отбор.Элементы.Количество() - 1 Цикл Настройки.Отбор.Элементы[Инд1].ВидСравнения = КомпоновщикНастроек.Настройки.Отбор.Элементы[Инд1].ВидСравнения; Настройки.Отбор.Элементы[Инд1].ПравоеЗначение = КомпоновщикНастроек.Настройки.Отбор.Элементы[Инд1].ПравоеЗначение; Настройки.Отбор.Элементы[Инд1].Использование = КомпоновщикНастроек.Настройки.Отбор.Элементы[Инд1].Использование; КонецЦикла; //Параметры Для Инд1 = 0 По Настройки.ПараметрыДанных.Элементы.Количество() - 1 Цикл Настройки.ПараметрыДанных.Элементы[Инд1].Значение.Вариант = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[Инд1].Значение.Вариант; Настройки.ПараметрыДанных.Элементы[Инд1].Значение.Дата = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[Инд1].Значение.Дата; КонецЦикла; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(МакетВходыВыходы, Настройки,ДанныеРасшифровки,,,,); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,ИСТИНА); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.ОтображатьПроцентВывода = Истина; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ИначеЕсли ОтработанноеВремяКОДОС Тогда ..............................................
Не нашли ответа на свой вопрос?
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!