Имя: Пароль:
1C
1С v8
СКД.Помогите с расшифровкой
0 PCcomCat
 
24.07.18
00:37
Доброго времени, уважаемые!
Понимаю, что тема банальна. Но я топчусь на месте - пните в нужном направлении!
Отчет на скд, расшифровка по-сути показывает нужные данные. Но необходимо убрать некоторые поля из расшифровки. Как это реализовать?
Заранее благодарю.
1 PCcomCat
 
24.07.18
10:22
Подниму...
Пытаюсь уже при ПриКомпоновкеРезультата подменить схему для расшифровки - не выходит.

Где можно подсмотреть реализацию?
2 Tonik992
 
24.07.18
10:49
Попробуйте не схему компоновки подменивать, а изменить настройки компоновки.
3 PCcomCat
 
24.07.18
16:27
Реализовала так:

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

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

КонецФункции

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