Имя: Пароль:
1C
1С v8
Как программно сформировать отчет на СКД и вывести настройки в пользовательских
0 al_zzz
 
16.09.14
07:38
Хочу вывести сформированный отчет программно пользователю, чтоб были заполнены пользовательские настройки. Код такой: &НаКлиенте
Процедура ОткрытьКалендарьБронирования(Команда)
    Если Не ЗначениеЗаполнено(Объект.Подразделение) Тогда
        Предупреждение("Не выбран объект бронирования!")
    КонецЕсли;
    ПараметрКоманды = СтруктураКалендаряБронированияНаСервере();
    ОткрытьФорму("Отчет.КС_КалендарьБронирования.Форма",
    Новый Структура("КлючВарианта, КлючНазначенияИспользования, ПараметрыОтчета, СформироватьПриОткрытии", "ИзДокумента", ПараметрКоманды, ПараметрКоманды, Истина),
    ,
    "ДокументБронирования=" + Объект.Ссылка,
    
    );
КонецПроцедуры

&НаСервере
Функция СтруктураКалендаряБронированияНаСервере()
    Структура = Новый Структура;
    Структура.Вставить("НачалоПериода",НачалоДня(ТекущаяДата()));
    Структура.Вставить("КонецПериода",КонецДня(НачалоДня(ТекущаяДата())+30*24*60*60));
    Структура.Вставить("ТекущаяДата",ТекущаяДата());
    Структура.Вставить("Подразделение",Объект.Подразделение);
    Возврат Структура;
КонецФункции

В форме отчета:
&НаСервере
//  Процедура - обработчик события "ПриСозданииНаСервере" формы.
//
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    //Если Не Параметры.Свойство("Заказ") Тогда
    //    
    //    Сообщение = Новый СообщениеПользователю();
    //    Сообщение.Текст = НСтр("ru = 'Вызов отчета возможен только из документа ""Заказ покупателя""!'");
    //    Сообщение.Сообщить();
    //    
    //    Отказ = Истина;
    //    Возврат;
    //    
    //КонецЕсли;
    
    ПараметрыСКД = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных;
    ПараметрСКДТекДата = ПараметрыСКД.Элементы.Найти("ТекущаяДата");
    ПараметрСКДПодр    = ПараметрыСКД.Элементы.Найти("Подразделение");
    ПараметрСКДНП      = ПараметрыСКД.Элементы.Найти("НачалоПериода");
    ПараметрСКДКП      = ПараметрыСКД.Элементы.Найти("КонецПериода");
    
    Попытка
    //Если ПараметрСКД <> Неопределено Тогда
    Если ТипЗнч(Параметры.ПараметрыОтчета) = Тип("Структура") Тогда
        ПараметрыСКД.УстановитьЗначениеПараметра("Подразделение", Параметры.ПараметрыОтчета.Подразделение);
        ПараметрыСКД.УстановитьЗначениеПараметра("ТекущаяДата",Параметры.ПараметрыОтчета.ТекущаяДата);
        ПараметрыСКД.УстановитьЗначениеПараметра("НачалоПериода",Параметры.ПараметрыОтчета.НачалоПериода);
        ПараметрыСКД.УстановитьЗначениеПараметра("КонецПериода",Параметры.ПараметрыОтчета.КонецПериода);
    //КонецЕсли;
    
    СкомпоноватьРезультат();
    КонецЕсли;
Исключение
    КонецПопытки;
КонецПроцедуры // ПриСозданииНаСервере()

Если я включаю в варианте отчета "Основной" настройки в пользовательские, чтоб пользователь мог их скорректировать из своего сеанса, выводится пустой отчет с пустыми настройками. То же самое, если я добавляю новый вариант, скопированный с предыдущего.
ЧЯДНТ?
Конфа - УНФ.
1 al_zzz
 
16.09.14
08:28
Ап
AdBlock убивает бесплатный контент. 1Сергей