Получить параметры и отбор СКД
Добрый день.
Подскажите/, помогите что делаю не так, нужно получить программно параметры отчета и отборы сформированные пользователем.
Дату начала не могу получить, возвращается пустая.
Подскажите/, помогите что делаю не так, нужно получить программно параметры отчета и отборы сформированные пользователем.
рДатаНачала = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода").Значение;
пДатаНачала = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода")).Значение;
Дату начала не могу получить, возвращается пустая.
По теме из базы знаний
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1)
нужно получить программно параметры отчета
СхемаКомпоновкиДанных = ПолучитьМакет("Макет");
ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных))
КомпановщикНастрок = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпановщикНастрок.Инициализировать(ИсточникДоступныхНастроек);
КомпановщикНастрок.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
//Из схемы возьмем настройки по умолчанию
Настройки = КомпановщикНастрок.ПолучитьНастройки();
Показать
Помогите теперь этот период передать в отчет. Код ниже:
Помогите до разобраться, как же передать Период теперь... уже все перепробовал. Если в открываемом отчете есть предустановленный в СКД период, то отчет вообще не формируется, а если нет... то не передается ни чего.
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
РасшифровкаПоРеальнымОстаткам = ?(Данные.Элементы[Расшифровка].ПолучитьПоля()[0].Поле = "ОстКонечныйОстаток"
ИЛИ Данные.Элементы[Расшифровка].ПолучитьПоля()[0].Поле = "ОстНачальныйОстаток"
ИЛИ Данные.Элементы[Расшифровка].ПолучитьПоля()[0].Поле = "ОстПриход"
ИЛИ Данные.Элементы[Расшифровка].ПолучитьПоля()[0].Поле = "ОстРасход",ИСТИНА,ЛОЖЬ);
РасшифровкаПоОрдернымОстаткам = ?(Данные.Элементы[Расшифровка].ПолучитьПоля()[0].Поле = "ОрдНачальныйОстаток"
ИЛИ Данные.Элементы[Расшифровка].ПолучитьПоля()[0].Поле = "ОрдПриход"
ИЛИ Данные.Элементы[Расшифровка].ПолучитьПоля()[0].Поле = "ОрдРасход"
ИЛИ Данные.Элементы[Расшифровка].ПолучитьПоля()[0].Поле = "ОрдКонечныйОстаток",ИСТИНА,ЛОЖЬ);
Если РасшифровкаПоРеальнымОстаткам ИЛИ РасшифровкаПоОрдернымОстаткам Тогда
СтандартнаяОбработка = Ложь;
//Получаем ссылку на номенклатуру
i=0;
Пока НЕ(ТипЗнч(Данные.Элементы[Расшифровка - i].ПолучитьПоля()[0].Значение) = Тип("СправочникСсылка.Номенклатура")) цикл
i = i+1;
КонецЦикла;
СсылкаНоменклатуры = Данные.Элементы[Расшифровка - i].ПолучитьПоля()[0].Значение;
КомпоновщикНастроек = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
//Получаем период
Период = КомпоновщикНастроек.ПараметрыДанных.Элементы.Найти("Период");
//Получаем склад если есть отбор
Отбор = КомпоновщикНастроек.Отбор.Элементы;
Количество = Отбор.Количество()-1;
i=0;
ПолеКомпановкиСклад = Новый ПолеКомпоновкиДанных("Склад");
Пока НЕ(Отбор[Количество-i].ЛевоеЗначение = ПолеКомпановкиСклад) цикл
i = i+1;
КонецЦикла;
СсылкаСклад = Отбор[Количество-i].ПравоеЗначение;
ОтправитьОтбор = ?(СсылкаСклад = Неопределено,ЛОЖЬ,ИСТИНА);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СформироватьПриОткрытии",ИСТИНА);
УсловияОтбор = Новый Структура;
УсловияОтбор.Вставить("Номенклатура",СсылкаНоменклатуры);
Если ОтправитьОтбор Тогда УсловияОтбор.Вставить("Склад",СсылкаСклад); КонецЕсли;
ПараметрыФормы.Вставить("Отбор",УсловияОтбор);
ПараметрыФормы.Вставить("Период",Период);
КонецЕсли;
Если РасшифровкаПоРеальнымОстаткам Тогда ОткрытьФорму("Отчет.бгбТоварыОстаткиИОборотыСКДУпр.Форма", ПараметрыФормы); КонецЕсли;
Если РасшифровкаПоОрдернымОстаткам Тогда ОткрытьФорму("Отчет.бгбТоварыКПередачеСоСклада.Форма", ПараметрыФормы); КонецЕсли;
КонецПроцедуры
ПоказатьПомогите до разобраться, как же передать Период теперь... уже все перепробовал. Если в открываемом отчете есть предустановленный в СКД период, то отчет вообще не формируется, а если нет... то не передается ни чего.
УсловияОтбор = Новый Структура;
УсловияОтбор.Вставить("Номенклатура",СсылкаНоменклатуры);
Если ОтправитьОтбор Тогда УсловияОтбор.Вставить("Склад",СсылкаСклад); КонецЕсли;
УсловияОтбор.Вставить("Период",Период);
ПараметрыФормы.Вставить("Отбор",УсловияОтбор);
Тоже не работает(
Конечно тема ушла в оффтоп, но отпишусь тем кто в неё набредёт через гугл.
Просто так не смог передать как хотел параметр в отчет. Отбор легко передается через ПараметрыФормы, как Отбор,
что позволяет без вмешательства в передаваемый отчет, использовать его для своих нужд.
Но с параметром не нашел решения... может плохо читал.
Пришлось разобрать программно все получаемые параметры и отборы на стороне открываемых отчетов и программно сформировать отчет на основание СКД с заменой параметров и отборов на свои.
Просто так не смог передать как хотел параметр в отчет. Отбор легко передается через ПараметрыФормы, как Отбор,
что позволяет без вмешательства в передаваемый отчет, использовать его для своих нужд.
Но с параметром не нашел решения... может плохо читал.
Пришлось разобрать программно все получаемые параметры и отборы на стороне открываемых отчетов и программно сформировать отчет на основание СКД с заменой параметров и отборов на свои.
(13) Странно, что не нашел. Наверное у гугла старые примеры в топе. Вот из рабочего:
// пример получения значения параметра из пользовательских настроек
Сообщить(ПолучитьПользовательскийПараметр("НачалоПериода", КомпоновщикНастроек).Значение);
Функция ПолучитьПользовательскийПараметр(ИмяПараметра, КомпоновщикНастроек)
НайденныйПараметр = Неопределено;
НайденныйПараметрВарианта = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
Если НайденныйПараметрВарианта <> Неопределено Тогда
НайденныйПараметр = ПолучитьПредопределенныйЭлементПользовательскихНастроек(НайденныйПараметрВарианта, КомпоновщикНастроек.ПользовательскиеНастройки);
КонецЕсли;
Возврат НайденныйПараметр;
КонецФункции
Функция ПолучитьПредопределенныйЭлементПользовательскихНастроек(ЭлементНастроекВарианта, ПользовательскиеНастройки) Экспорт
НайденныйЭлемент = Неопределено;
Если ЭлементНастроекВарианта <> Неопределено Тогда
НайденныйЭлемент = ПользовательскиеНастройки.Элементы.Найти(ЭлементНастроекВарианта.ИдентификаторПользовательскойНастройки);
КонецЕсли;
Возврат НайденныйЭлемент;
КонецФункции
Показать