Имя: Пароль:
1C
1С v8
Расшифровка в табличном документе по уровням
0 deringpavel
 
30.06.20
07:55
Всем привет.

Есть вопрос - можно ли корректно реализовать расшифровку в табличном документе с уровнями?
Сначала вывести элемент на верхнем уровне.
При нажатии мышью на этот элемент - отображается элемент второго уровня.
При нажатии на элемент второго уровня - элемент третьего уровня.
И так далее.
1 PuhUfa
 
30.06.20
07:57
А что значит корректно? Чем стандартная не устраивает? Так принципиально нажимать на элемент а не на плюсик?
2 deringpavel
 
30.06.20
07:58
да, это требование заказчика
3 PuhUfa
 
30.06.20
08:52
Тогда только перерисовывать каждый раз ТД
4 Fedor-1971
 
30.06.20
10:15
(2) Развернуть - понятно, клацнули по элементу, а свернуть назад как?

Варианта 3:
- либо перегенерировать табличный документ (в 3 уже советовали), только задолбаешься запоминать, что расшифровано, а что нет
- либо открывать отдельную форму с расшифровкой, то же не айс, куча форм, пользователи будут путаться
- либо делаем форму отчёта, на которой, можно кнопкой вернуться к предыдущему виду. Т.е. генерим исходную таблицу, при клаце по элементу формируем новый табличный документ без дальнейшей расшифровки, старый прячем, по нажатии кнопки возврата показываем исходный табличный документ
5 Classic
 
30.06.20
10:19
(2)
А в требованиях заказчика есть требование об отсутствии плюса вообще?
6 Classic
 
30.06.20
10:30
(4)
- Именовать области и играться их видимостью
7 deringpavel
 
30.06.20
10:33
Процедура, формирующая ТД

<code>
&НаСервере
Процедура Расшифровка()
    ТабличныйДокумент.Очистить();
    ВыборкаДанных = ПолучитьРасшифровку();
    ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
    Макет = ОтчетОбъект.ПолучитьМакет("Макет");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");                                                                        
    ОбщаяСумма = 0;
    РезультатЗапросаУровень1 = ВыборкаДанных.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Уровень1");
    
    
    Пока РезультатЗапросаУровень1.Следующий() Цикл
        
        ОбластьШапка.Параметры.ОписаниеУровня = "АО «Газпромнефть-Аэро» высоко ценит профессиональный уровень и достижения каждого сотрудника. Уделяет особое внимание востребованности элементов Модели совокупного поощрения, предлагаемые Компанией в обмен на время, талант, усилия и результаты";
        ОбластьШапка.Параметры.Наименованиеуровня = "Совокупное поощрение";
        ОбластьЗаголовок.Параметры.НаименованияУровня = "Совокупное поощрение";
        ОбластьЗаголовок.Параметры.Год = "за " + Строка(Год(Период)) + " Год";
        ОбластьЗаголовок.Параметры.СуммаОбщая = ВычислениеИтогов("Уровень1");
        
        
        ОбластьСтрока.Параметры.N_ВидСовокупногоПоощренияВидПоощрения = РезультатЗапросаУровень1.Уровень1;
        ОбластьСтрока.Параметры.N_Сумма = РезультатЗапросаУровень1.Сумма;
        ОбластьСтрока.Параметры.N_Суммарублей = ЧислоПрописью(РезультатЗапросаУровень1.Сумма);
        
        //
        РезультатЗапросаУровень2 = РезультатЗапросаУровень1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Уровень2");
        //
        Пока РезультатЗапросаУровень2.Следующий() Цикл
            //    
            СтруктураРасшифровки = Новый Структура;
            СтруктураРасшифровки.Вставить("N_ВидСовокупногоПоощренияВидПоощрения", РезультатЗапросаУровень2.Уровень2);
            СтруктураРасшифровки.Вставить("N_Сумма", РезультатЗапросаУровень2.Сумма);
            СтруктураРасшифровки.Вставить("N_Суммарублей",ЧислоПрописью(РезультатЗапросаУровень2.Сумма));
            ОбластьСтрока.Параметры.Расшифровка = СтруктураРасшифровки;
            ТабличныйДокумент.Вывести(ОбластьСтрока);
            
            РезультатЗапросаУровень3 = РезультатЗапросаУровень2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Уровень3");
            Пока РезультатЗапросаУровень3.Следующий() Цикл
                Расшифровка = Новый Структура;
                Расшифровка.Вставить("N_ВидСовокупногоПоощренияВидПоощрения", РезультатЗапросаУровень3.Уровень3);
                Расшифровка.Вставить("N_Сумма", РезультатЗапросаУровень3.Сумма);
                Расшифровка.Вставить("N_Суммарублей",ЧислоПрописью(РезультатЗапросаУровень3.Сумма));
                ОбластьСтрока.Параметры.Расшифровка = Расшифровка;
                
                РезультатЗапросаДетальныеЗаписи = РезультатЗапросаУровень3.Выбрать();
                Пока РезультатЗапросаДетальныеЗаписи.Следующий() Цикл            
                    Расш = Новый Структура;
                    Расш.Вставить("N_ВидСовокупногоПоощренияВидПоощрения", РезультатЗапросаДетальныеЗаписи.ВидПоощрения);
                    Расш.Вставить("N_Сумма", РезультатЗапросаДетальныеЗаписи.Сумма);
                    Расш.Вставить("N_Суммарублей",ЧислоПрописью(РезультатЗапросаДетальныеЗаписи.Сумма));
                    ОбластьСтрока.Параметры.Расшифровка = Расш;
                    //ТабличныйДокумент.Вывести(ОбластьСтрока);            
                КонецЦикла;
                
            КонецЦикла;
                
        КонецЦикла;
        
    КонецЦикла;
    
    
    ТабличныйДокумент.Вывести(ОбластьПодвал);


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

</code>
8 deringpavel
 
30.06.20
10:34
Обработка расшифровки

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


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

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

</code>
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой