Имя: Пароль:
1C
1С v8
Расшифровка в СКД
0 seraf
 
12.09.13
12:15
Привет, помогите до ума отчет довести.

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


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

&НаСервере
Функция ПолучитьЗначениеРасшифровки(Расшифровка)
    
    КоллекцияРасшифровки = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
    
    КоллекцияПолей = КоллекцияРасшифровки.Элементы[Расшифровка].ПолучитьПоля();
    
    Если КоллекцияПолей.Количество() > 0 Тогда
        Возврат КоллекцияПолей[0].Значение;
    КонецЕсли;
    
КонецФункции

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачПер"));
    Параметр.Значение = СтандартныйПериод.ДатаНачала;
    Параметр.Использование = Истина;
        
    Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонПер"));
    Параметр.Значение = СтандартныйПериод.ДатаОкончания;
    Параметр.Использование = Истина;                                    
    
КонецПроцедуры


Один вопрос - при открытии расшифровки сначала отрабатывает ПриКомпоновкеРезультата, а только потом задаются даты в процедуре ПриОткрытии. Как передать их до того?

И второй, параметр структуры КлючВариант, он на что-то влияет? У меня походу нет, хотя ожидалось что задаст вариант открытия отчета.
1 seraf
 
12.09.13
12:21
Если я передаю настройки Владельца не в Пользовательские, а в Фиксированные настройки, тогда с датами работает, но не с первого раза почему-то и при попытке дальше с открытым отчетом что-то сделать выдает "Невозможно применить фиксированные настройки. Совпадают значения параметра."
2 seraf
 
12.09.13
12:22
А с Пользовательскими всё неплохо, кроме того что период не передался
3 Chin
 
12.09.13
12:23
(0) А "ПриСозданииНаСервере" не пойдет?
4 seraf
 
12.09.13
12:33
(3) Вроде нет, я же не знаю владельца формы при этом событии, даты копирую из него
5 Chin
 
12.09.13
12:37
(4) А в параметрах передать даты не пробовал?
6 seraf
 
12.09.13
12:42
не очень тут плаваю

вроде ж копирую параметры владельца в новый отчет

        ПараметрыОтчета = Новый Структура("СформироватьПриОткрытии, Отбор, ПользовательскиеНастройки", Истина, Отбор, НастройкиВладельца);
        ОткрытьФормуМодально("Отчет.АнализЗатрат.Форма", ПараметрыОтчета, ЭтаФорма);


Как их правильно передавать?
7 seraf
 
12.09.13
14:17
Вроде справился с этим, только не пойму куда в расшифровку отбор передается, т.к. через изменить вариант я уже установленный отбор не вижу и изменить не могу
Основная теорема систематики: Новые системы плодят новые проблемы.