helpf.pro
Регистрация

v8.2 УП: Вариант настроек

KorolyovSS
02.04.2015 11:35Прочитано: 4920

8.2.14.519 УП тонкий клиент.

Добрый вечер. В основной схеме компоновки данных 3 варианта настроек. Перед печатью постоянно приходится менять ландшафт на портрет (или на оборот). Хочу делать это программно (менять свойство ТД Результат) скажем в модуле отчета ПриКомпоновкеРезультата(). Но для этого необходимо знать представление выбранного на исполнение варианта отчета. Подскажите, плиз, как до него добраться? Или есть другая возможность (может на уровне настроек задавать параметры результата)? 

Заранее благодарен.

Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
03.04.2015 01:26Ответ № 1

Как-то озадачивался этим вопросом, выкрутился следующим способом - пришлось к отчету добавить реквизит и устанавливать его при ПриЗагрузкеВариантаНаСервере. 

Отчет.ВыбранныйВариант=НаименованиеТекущегоВарианта;

еще Примеры кода для работы с вариантами:

Код 1C v 8.х
 Процедура ЗаполнитьВарианты()
    Для каждого Вар из СхемаКомпоновкиДанных.ВариантыНастроек Цикл
        СЗВариантов.Добавить(Вар,Вар.Представление);
    КонецЦикла;    
КонецПроцедуры    


Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    СписокВар = ХранилищеВариантовОтчетов.ПолучитьСписок("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля");    
    Для каждого вар из СписокВар Цикл
        ТекВар = СхемаКомпоновкиДанных.ВариантыНастроек.Найти(вар.Значение);
        Если ТекВар = Неопределено Тогда
            СхемаКомпоновкиДанных.ВариантыНастроек.Добавить();
            ТекВар = СхемаКомпоновкиДанных.ВариантыНастроек[СхемаКомпоновкиДанных.ВариантыНастроек.Количество()-1];
            ТекВар.Имя = вар.Значение;
            ТекВар.Представление = вар.Представление;            
        КонецЕсли;    
    КонецЦикла;    
    
    ЗаполнитьВарианты();
    ИмяТекВар = СокрЛП(СЗВариантов[0].Значение.Имя);
    ВыбВариант = СЗВариантов[0].Значение.Представление;
    ТекН = ХранилищеВариантовОтчетов.Загрузить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля",СокрЛП(СЗВариантов[0].Значение.Имя));
    Если ТекН = Неопределено Тогда
        КомпоновщикНастроек.ЗагрузитьНастройки(СЗВариантов[0].Значение.Настройки);    
    Иначе
        КомпоновщикНастроек.ЗагрузитьНастройки(ТекН);    
    КонецЕсли;    
КонецПроцедуры


Процедура ВыбВариантНачалоВыбора(Элемент, СтандартнаяОбработка)
    Он = Новый ОписаниеНастроек;
    Он.Представление =  СокрЛП(ВыбВариант);
    ХранилищеВариантовОтчетов.Сохранить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля", СокрЛП(ИмяТекВар), КомпоновщикНастроек.Настройки, Он);
    Форм = ПолучитьФорму("Форма");
    Форм.Схема = СхемаКомпоновкиДанных;
    Форм.Компановщ = КомпоновщикНастроек;    
    Форм.Варианты =  СЗВариантов;
    ТекВар = Форм.ОткрытьМодально();
    Если НЕ(ТекВар = Неопределено) Тогда
        ВыбВариант = ТекВар.Представление;
        ИмяТекВар = СокрЛП(ТекВар.Имя);
    КонецЕсли;    
КонецПроцедуры


Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    Он = Новый ОписаниеНастроек;
    Он.Представление =  СокрЛП(ВыбВариант);    
    ХранилищеВариантовОтчетов.Сохранить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля", СокрЛП(ИмяТекВар), КомпоновщикНастроек.Настройки, СокрЛП(ВыбВариант));
КонецПроцедуры
///////////////////////////////////////


 
//Код в форме выбора:


////////////////////////


Перем Схема Экспорт;
Перем Компановщ Экспорт;


Процедура КоманднаяПанель1Добавить(Кнопка)
    имя = "";
    Если ВвестиСтроку(имя) Тогда
        Схема.ВариантыНастроек.Добавить();
        Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Представление = имя;
        Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Имя = СокрЛП(Схема.ВариантыНастроек.Количество()); 
        Варианты.Добавить(Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1],Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Представление);
        
        Он = Новый ОписаниеНастроек;
        Он.Представление =  СокрЛП(имя);
        
        ХранилищеВариантовОтчетов.Сохранить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля", СокрЛП(Схема.ВариантыНастроек.Количество()), Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Настройки, Он);
    КонецЕсли;
КонецПроцедуры


Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    
КонецПроцедуры


Процедура ВариантыВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    ТекН = ХранилищеВариантовОтчетов.Загрузить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля",СокрЛП(Элемент.ТекущиеДанные.Значение.Имя));
    Если ТекН = Неопределено Тогда
        Компановщ.ЗагрузитьНастройки(Элемент.ТекущиеДанные.Значение.Настройки);    
    Иначе
        Компановщ.ЗагрузитьНастройки(ТекН);    
    КонецЕсли;    
    ЭтаФорма.Закрыть(Элемент.ТекущиеДанные.Значение);
КонецПроцедуры


Процедура КоманднаяПанель1Удалить(Кнопка)
    ТекДан = ЭлементыФормы.Варианты.ТекущиеДанные;
    Если НЕ (ТекДан = Неопределено) Тогда
        ХранилищеВариантовОтчетов.Удалить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля",ТекДан.Значение.Имя,ПользователиИнформационнойБазы.ТекущийПользователь().Имя);
        Варианты.Удалить(Варианты.НайтиПоЗначению(ТекДан.Значение));
    КонецЕсли;    
КонецПроцедуры


Процедура ВариантыПередУдалением(Элемент, Отказ)
    ХранилищеВариантовОтчетов.Удалить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля",Элемент.ТекущиеДанные.Значение.Имя,ПользователиИнформационнойБазы.ТекущийПользователь().Имя);
КонецПроцедуры


Процедура КоманднаяПанель1Копировать(Кнопка)
    Если НЕ(ЭлементыФормы.Варианты.ТекущиеДанные = Неопределено) Тогда
        имя = "";
        Если ВвестиСтроку(имя) Тогда
            Схема.ВариантыНастроек.Добавить();
            Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Представление = имя;
            Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Имя = СокрЛП(Схема.ВариантыНастроек.Количество()); 
            Варианты.Добавить(Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1],Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Представление);
            
            НастройкиСохранения = Схема.ВариантыНастроек[Схема.ВариантыНастроек.Количество()-1].Настройки;
            
            ТекН = ХранилищеВариантовОтчетов.Загрузить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля",СокрЛП(ЭлементыФормы.Варианты.ТекущиеДанные.Значение.Имя));        
            Если НЕ(ТекН = Неопределено) Тогда
                НастройкиСохранения = ТекН;    
            КонецЕсли;    
            
            Он = Новый ОписаниеНастроек;
            Он.Представление =  СокрЛП(имя);
            
            ХранилищеВариантовОтчетов.Сохранить("ЭтотОтчетОтчетПоПроизведеннойНекондицииЛяляля", СокрЛП(Схема.ВариантыНастроек.Количество()),НастройкиСохранения , Он);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
KorolyovSS
03.04.2015 12:00Ответ № 2

Слишком мудрено. Решил просто анализировать в модуле отчета в процедуре ПриКомпоновкеРезультата() Заголовок отчета

Код 1C v 8.2 УП
 Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
ПараметрыВывода = КомпоновщикНастроек.Настройки.ПараметрыВывода;
Заголовок = ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Заголовок"));
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДокументРезультат.АвтоМасштаб = Истина;
Если Заголовок <> Неопределено Тогда
Если СокрЛП(Заголовок.Значение) = "Количество по тематике обращений" Тогда
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ИначеЕсли СокрЛП(Заголовок.Значение) = "Распределение документов по тематике обращений" Тогда
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ИначеЕсли СокрЛП(Заголовок.Значение) = "Количество обращений по месяцам" Тогда
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
КонецЕсли;
КонецЕсли;
КонецПроцедуры

конечно не очень правильно, но есть надежда, что после меня никто не будет менять заголовки отчетов.

Спасибо за ответ

Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.