Приветствую Вас ГостьВоскресенье, 19.05.2024, 04:16

Каталог статей


Настройка расшифровки в СКД

Настройка расшифровки в макете

Если для оформления ячейки в СКД используется макет, то можно задать значение расшифровки прямо в свойствах ячейки. Свойство называется "Параметр расшифровки". Здесь укажем идентификатор параметра (это может быть имя нужного поля или любое другое имя). Слева внизу в списке параметров макета появится введенный нами идентификатор. В ячейке "Выражение" надо заполнить:

  • "Основное действие" = "Открыть значение",
  • Имя поля форму которого надо открыть, например "Регистратор",
  • выражение - совпадает с именем поля. 

В результате при двойном нажатии на эту ячейку, программа откроет форму значения поля, которое соответствует выражению идентификатора параметра.

Настройка расшифровки в форме отчета

Если надо выполнять более сложное действие при двойном клике на ячейке, то надо создать форму СКД отчета. При создании формы отчета надо обязательно указать "Использовать систему компоновки данных", тогда не придется придумывать способы отображения настроек отчета на форме.

В результате на созданной форме будет реквизит "Результат" типа табличное поле.

У табличного поля есть 2 события:

  • ОбработкаРасшифровки для переопределения действия, происходящее при двойном щелчке мыши на поле отчета
  • ОбработкаДополнительнойРасшифровки для переопределения действия, вызываемого при нажатии правой кнопки мыши.

ОбработкаРасшифровки

Расшифровка включает в себя набор действий, которые можно настроить по собственному желанию.

Ниже код процедуры, которая оставляет доступным только действие "Открыть" и выполняет различные действия в зависимости от типа выбранного элемента:

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

Пояснения:

Объявляем переменные, в которые будут записаны выбранное действие и значение выбранного элемента:

    Перем ВыбранноеДействие;
    Перем ПараметрыВыбранногоДействия;

Отменяем стандартную расшифровку и создаем объект ОбработкаРасшифровки в который передаются данные расшифровки нашего отчета:

    СтандартнаяОбработка = Ложь;
    ОбработкаРасшифровки =  Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет));

Определяем список действий в расшифровке:

    ДоступныеДействия = Новый Массив();
    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);

Вызываем метод ВыбратьДействие для определения выбора действия пользователем. В параметрах указываем массив доступных действий и ИспользоватьОсновноеДействие = Истина (в этом случае если пользователь просто щелкнет два раза по ячейке, то будет считаться, что выбрано действие ОткрытьЗначение)

    ОбработкаРасшифровки.ВыбратьДействие(Расшифровка, ВыбранноеДействие, ПараметрыВыбранногоДействия,ДоступныеДействия,,Истина );

После выбора пользователем действия расшифровки значение выбранного действия возвращается во втором параметре ВыбранноеДействие. Если выбрано действие Открыть, то третий параметр ПараметрыВыбранногоДействия содержит значение, которое нужно открыть. Если выбрано действие Расшифровать, Отфильтровать, Упорядочить, Сгруппировать, Оформить, то параметр ПараметрыВыбранногоДействия содержит настройки, применяемые к отчету. Если выбрано дополнительное действие, то параметр не заполняется.

Далее, если выбранное действие Открыть, то выполняем открытие значения в зависимости от типа значения (для оборудования открывается форма с параметром ДоступностьИзменения = Истина. Можно назначить любую другую форму.)

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

Вместо ВыбратьДействие можно использовать аналог

  Оповещение = Новый ОписаниеОповещения("РезультатОбработкаРасшифровки_Продолжение", ЭтаФорма, Расшифровка);               ОбработкаРасшифровки.ПоказатьВыборДействия(Оповещение, Расшифровка, ДоступныеДействия, , Истина);

В этом случае должна быть объявлена экспортная процедура РезультатОбработкаРасшифровки_Продолжение()

&НаКлиенте

Процедура РезультатОбработкаРасшифровки_Продолжение(ВыполненноеДействие, ПараметрВыполненногоДействия, ДополнительныеПараметры) Экспорт

  Если ПараметрВыполненногоДействия <> Неопределено Тогда

    Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда

       ПоказатьЗначение(,ПараметрВыполненногоДействия);

    КонецЕсли;

  КонецЕсли;

КонецПроцедуры

Действие Расшифровать

Если надо обработать действие Расшифровать, то расшифровку можно обработать 2 разными способами:

  1. Открыть новую форму этого же отчета указав в его параметрах параметры расшифровки
  2. Переформировать отчет в текущей форме.

1. Пример открытия новой формы:

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

Параметр СформироватьПриОткрытии, установленный в значение Истина, обеспечивает формирование отчета сразу при открытии формы.

В параметре Расшифровка описывается расшифровка, которую нужно применить к открываемому отчету. Затем данные расшифровки, идентификатор расшифровки и новые настройки (ПараметрыВыбранногоДействия), применяемые к отчету, передаются в конструктор объекта ОписаниеОбработкиРасшифровкиКомпоновкиДанных.

2. Пример переформирования отчета:

&НаКлиенте
Процедура РезультатОбработкаДополнительнойРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
   ...

   ОтработатьРасшифровку(Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Расшифровка, ПараметрыВыбранногоДействия));

   ...

КонецПроцедуры

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

В процедуре создается обработчик расшифровки – объект ОбработкаРасшифровкиКомпоновкиДанных и инициализируется данными расшифровки отчета и источником доступных настроек для отчета.

Отчет в параметре Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет) - это основной реквизит формы отчета.

Для применения настроек расшифровки используется метод этого объекта ПрименитьНастройки(). Метод ПрименитьНастройки() может вернуть как полные настройки компоновки данных, так и пользовательские настройки компоновки данных. Пользовательские настройки расшифровки могут быть получены, если применяемые настройки можно полностью применить в пользовательских настройках. Метод ПрименитьНастройки() имеет ограничения, поэтому следует использовать его с осторожностью.

Затем полученные настройки расшифровки применяются к отчету методом компоновщика настроек ЗагрузитьНастройки(), и отчет формируется методом формы отчета СкомпоноватьРезультат().


Пример решения задачи, когда по строке отчета надо сформировать печатную форму с данными строки.

Первым делом надо добавит дополнительное действие. Потом, при выборе действия, надо получить данные текущей строки и сформировать табличный документ.


В модуле формы:

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

    ОписаниеРасшифровка = Новый ОписаниеОповещения("ОбработкаВыбораРасшифровки", ЭтаФорма, Расшифровка);
    ОбработкаРасшифровки.ПоказатьВыборДействия(ОписаниеРасшифровка,Расшифровка, ДоступныеДействия, ДополнительныеДействия,, Элемент);

КонецПроцедуры

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

        ПоказатьЗначение(,ПараметрДействия);

    ИначеЕсли ВыполненноеДействие = "СформироватьАнкету" Тогда

        СтруктураРасшифровки = Новый Структура();
        ПолучитьДанныеРасшифровкиСоСтруктурой(ИдентификаторРасшифровки,СтруктураРасшифровки);        
        СформироватьАнкету(СтруктураРасшифровки);
    КонецЕсли;

КонецПроцедуры
 

//Получаем данные текущей строки без учета группировок
&НаСервере
Функция ПолучитьДанныеРасшифровкиСоСтруктурой(Расшифровка,СтруктураВозврата);
    Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); 
    
    МассивРодителей = Данные.Элементы[Расшифровка].ПолучитьРодителей();
    ИдентификаторБлижайшейГруппы = 0;
    Для каждого нРодитель из МассивРодителей Цикл
        ИдентификаторЧисло = Число(нРодитель.Идентификатор);
        Если ИдентификаторБлижайшейГруппы < ИдентификаторЧисло Тогда
            ИдентификаторБлижайшейГруппы = ИдентификаторЧисло;
        КонецЕсли;        
    КонецЦикла;
    
    ПервоеПолеСтроки = Данные.Элементы[ИдентификаторБлижайшейГруппы+1].ПолучитьПоля()[0].Поле;

    // смотрим предыдущие поля строки
    ИдентификаторЧисло = Число(Расшифровка);
    ТекущееПоле = Данные.Элементы[Расшифровка].ПолучитьПоля()[0];
    Пока ТекущееПоле.Поле <> ПервоеПолеСтроки И ИдентификаторЧисло > ИдентификаторБлижайшейГруппы Цикл        
        СтруктураВозврата.Вставить(ИсправитьИмя(ТекущееПоле.Поле),ТекущееПоле.Значение);
        ИдентификаторЧисло = ИдентификаторЧисло -1;
        ТекущееПоле = Данные.Элементы[ИдентификаторЧисло].ПолучитьПоля()[0];
    КонецЦикла;
    
    // смотрим предыдущие поля строки
    ИдентификаторЧисло = Число(Расшифровка);
    ВсегоЭлементов = Данные.Элементы.Количество();
    ТекущееПоле = Данные.Элементы[Расшифровка].ПолучитьПоля()[0];
    Пока ТекущееПоле.Поле <> ПервоеПолеСтроки И ИдентификаторЧисло <= ВсегоЭлементов Цикл        
        СтруктураВозврата.Вставить(ИсправитьИмя(ТекущееПоле.Поле),ТекущееПоле.Значение);
        ИдентификаторЧисло = ИдентификаторЧисло +1;
        ТекущееПоле = Данные.Элементы[ИдентификаторЧисло].ПолучитьПоля()[0];
    КонецЦикла;
    
КонецФункции

// Формируем табличный документ

&НаКлиенте
Процедура СформироватьАнкету(СтруктураРасшифровки)
     ТабДОкумент = СформироватьАнкетуНаСервере(СтруктураРасшифровки);
    ТабДОкумент.Показать("Анкета");
КонецПроцедуры

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

// Вспомогательная функция

// убираем точку из имени поля для добавления в структуру. Точка встречается в имени служебных полей

&НаСервере
Функция ИсправитьИмя(знач пИмя)
    пИмя = СтрЗаменить(пИмя,".","");
    Возврат пИмя;
КонецФункции

РезультатОбработкаДополнительнойРасшифровки

Так как при нажатии правой кнопки мыши выходит контекстное меню, то его можно отредактировать: изменить список доступных действий и добавить дополнительные действия.

Например:

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

КонецПроцедуры

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

Пояснения:

Начало аналогично первому примеру. Далее  определяем список основных действий (Открыть значение, Расшифровать и Отфильтровать) и дополнительных действий (Дейстиве1, Дейстиве2, Дейстиве3). Передаем эти списки в метод ОбработкаРасшифровки.ВыбратьДействие().

В результате при нажатии на правую кнопку мыши пользователь увидит меню:

После выбора пользователем действия расшифровки мы получаем значение выбранного действия во втором параметре ВыбранноеДействие. Если выбрано действие Открыть, то третий параметр ПараметрыВыбранногоДействия содержит значение, которое нужно открыть. Если выбрано действие Расшифровать, Отфильтровать, Упорядочить, Сгруппировать, Оформить, то параметр ПараметрыВыбранногоДействия содержит настройки, применяемые к отчету. Если выбрано дополнительное действие, то параметр не заполняется.

В зависимости от выбранного действия (ВыбранноеДействие) мы либо открываем выбранное значение, либо формируем новую форму отчета с параметрами СформироватьПриОткрытии и Расшифровка.

В параметре Расшифровка мы описываем расшифровку, которую нужно применить к открываемому отчету, и передаем в конструктор объекта ОписаниеОбработкиРасшифровкиКомпоновкиДанных данные расшифровки (реквизит формы ДанныеРасшифровки), идентификатор расшифровки (параметр Расшифровка обработчика события ОбработкаРасшифровки) и новые настройки, применяемые к отчету (ПараметрыВыбранногоДействия).

Настройка расшифровки при программном формировании отчета

Для того чтобы при выводе отчета объект ДанныеРасшифровки был заполнен, следует его создать при компоновке макета и передать в процессор компоновки данных. Для этого при вызове метода Выполнить компоновщика макета следует передать переменную, в которую требуется поместить созданный объект.

Для того чтобы данные расшифровки заполнились при формировании результата, необходимо передать объект ДанныеРасшифровки в метод Инициализировать процессора компоновки данных.

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

Получение данных отбора расшифровки

Иногда надо в качестве расшифровки ячейки запустить другой отчет. Хорошо, если расшифровку запустили на поле с ссылочным значением, тогда можно получить значение текущего поля и сформировать отчет. Другое дело, если запускают расшифровку по полю с ресурсом. Здесь возникает проблема получить данные группировок, по которым сформировались итоги ресурса

Выше описанный пример работает в этом случае не корректно. Он определит текущую группировку, но, если есть родительская группировка, то могут быть пролемы.

В процессе поиска решения я отталкивался от того, то если запускать стандартную расшифровку, то запускается отчет в параметрах отбора которого указываются группировки по выбранному ресурсу.  Т.е. чтобы получить параметры для нового отчета, надо сформировать настройки компоновки данных стандартными методами и считать параметры и отбор.

Текст функции:

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

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

    //Заполняем элементы отбора. В элементы отбора попадают в том числе отбор основного отчета
    Для Каждого СтрокаОтбора Из НастройкиРасшифровки.Отбор.Элементы Цикл
        СтруктураОтбора.Вставить(СтрокаОтбора.ЛевоеЗначение, СтрокаОтбора.ПравоеЗначение);
    КонецЦикла;       
    

    //Заполняем параметры основного отчета, которые тоже могут потребоваться для отчета расшифровки 
    Для Каждого СтрокаПараметра из НастройкиРасшифровки.ПараметрыДанных.Элементы Цикл
        СтруктураОтбора.Вставить(СтрокаПараметра.Параметр, СтрокаПараметра.Значение);
    КонецЦикла;         
    
    Возврат СтруктураОтбора;
    
КонецФункции

Функция запускается из процедуры РезультатОбработкаРасшифровки() в модуле формы отчета


Дополнительно по обработке расшифровки можно посмотреть здесь:

https://its.1c.ru/db/metod8dev/content/3728/hdoc

https://infostart.ru/1c/articles/703526/

https://helpf.pro/faq/view/1055

https://wiki.programstore.ru/obrabotka-rasshifrovki-v-skd/

Категория: СКД | Добавил: leshic (21.04.2021)
Просмотров: 4461 | Рейтинг: 0.0/0
Всего комментариев: 0
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [41]
Администрирование [35]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0