Имя: Пароль:
1C
1С v8
Программная расшифровка отчета
0 Manifest07
 
18.05.16
11:37
Привет всем. Есть задача добавить поле, например "Период" при расшифровке по регистратору. Изначально поле регистратор в отчет не попадает. Когда я навожу на нужное поле и хочу его расшифровать, выбираю Регистратор и получаю более детальный вид отчета.

Вопрос, как программно отловить этот момент, когда я расшифровку делаю именно по регистратору и хочу программно добавить еще одну колонку?
1 hhhh
 
18.05.16
12:01
ну там событие есть на форме вроде. обработка расшифровки или как то там.
2 Manifest07
 
19.05.16
11:47
да, нашел на сайте ИТС всю информацию как отловить нужный мне момент, но вот проблема теперь у меня в том, как в расшифрованный отчет программно добавить поле Период, оно есть в наборе данных.
3 Manifest07
 
19.05.16
11:51
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    
    Перем ВыбранноеДействие;
    Перем ПараметрыВыбранногоДействия;
    
    СтандартнаяОбработка = Ложь;
    ОбработкаРасшифровки =  Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет));
    
    ОбработкаРасшифровки.ВыбратьДействие(Расшифровка, ВыбранноеДействие, ПараметрыВыбранногоДействия);
    
    Если ВыбранноеДействие <> ДействиеОбработкиРасшифровкиКомпоновкиДанных.Нет Тогда
        Если ВыбранноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда
            ОткрытьЗначение(ПараметрыВыбранногоДействия);
        Иначе
            ОтработатьРасшифровку(Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Расшифровка, ПараметрыВыбранногоДействия));
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

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

Вот код, правильно ли я понимаю, что мне нужно редактировать именно РезультирующиеНастройки, которые я потом уже загружаю в отчет?
4 aleks_default
 
19.05.16
11:54
сделай другой вариант отчета с этим полем и по расшифровке открывай его
5 Manifest07
 
19.05.16
11:55
(4) Задача состоит именно в том, чтобы именно программно это реализовать. Вариант отчета конечно можно сделать.
6 Manifest07
 
19.05.16
16:54
Решение найдено, если кому пригодится...

[CODE]
&НаСервере
Процедура ОтработатьРасшифровку(ОписаниеОбработкиРасшифровки)
    
    ПолеПериодСекунда = ОписаниеОбработкиРасшифровки.ПрименяемыеНастройки.Структура[0].Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    
    ПолеПериодСекунда.Поле = Новый ПолеКомпоновкиДанных("ПериодСекунда");
    
    ДанныеРасшифровкиОбъект = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
    ОбработкаРасшифровки =  Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровкиОбъект, Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет));
    РезультирующиеНастройки = ОбработкаРасшифровки.ПрименитьНастройки(ОписаниеОбработкиРасшифровки.Идентификатор, ОписаниеОбработкиРасшифровки.ПрименяемыеНастройки);
    
    //РезультирующиеНастройки.Структура[0]
    
    Если ТипЗнч(РезультирующиеНастройки) = Тип("НастройкиКомпоновкиДанных") Тогда
        Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(РезультирующиеНастройки);
    ИначеЕсли ТипЗнч(РезультирующиеНастройки) = Тип("ПользовательскиеНастройкиКомпоновкиДанных") Тогда
        Отчет.КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(РезультирующиеНастройки);
    КонецЕсли;
    
    СкомпоноватьРезультат();
    
КонецПроцедуры
[/CODE]