8.х Настройка расшифровки

Тема в разделе "Система компоновки данных (СКД)", создана пользователем Lemon, 11 фев 2014.

  1. TopicStarter Overlay
    Lemon
    Offline

    Lemon

    Регистрация:
    16 янв 2013
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте!
    Создаю программно отчет. Как настроить расшифровку? (в данном случае отображается номер ячейки).

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

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    У поля табличного документа есть событие Обработка расшифровки. Вот там это и обрабатывается. Примеров куча. Вот один из примеров
    Код:
    Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    
    перем ВыполненноеДействие;
    
    // Запретим стандартную обработку расшифровки
    СтандартнаяОбработка = Ложь;
    
    // Создадим и инициализируем обработчик расшифровки
    ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    
    ДоступныеДействия = Новый Массив();
    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Отфильтровать);
    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить);
    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать);
    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Сгруппировать);
    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Оформить);
    
    // Осуществим выбор действия расшифровки пользователем
    Настройки = ОбработкаРасшифровки.Выполнить(Расшифровка, ВыполненноеДействие, ДоступныеДействия);
    
    Если Настройки <> Неопределено Тогда
    
    // Пользователь выбрал действие, для которого нужно менять настройки
    Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить Тогда
    
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    СформироватьОтчет();
    
    Иначе
    
    // При других действиях - создадим новый отчет, откроем форму, сформируем отчет в ней
    Отчет = Отчеты.уит_ДУД_ВведенныеДоговораЗаПериодTest.Создать();
    Форма = Отчет.ПолучитьФорму("ФормаОтчета");
    Форма.Открыть();
    Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    Форма.СформироватьОтчет();
    
    КонецЕсли;
    
    КонецЕсли;
    
    КонецПроцедуры
    Последнее редактирование: 20 фев 2014
  3. TopicStarter Overlay
    Lemon
    Offline

    Lemon

    Регистрация:
    16 янв 2013
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    У меня нет формы, связанной с отчетом, соответственно встает вопрос как получить "ДанныеРасшифровки" в этом обработчике.
    Да, да забыл сказать, что это нужно на УФ.
    Код:
    Процедура ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    
    Перем ВыполненноеДействие, ПараметрВыполненногоДействия;
    
    СтандартнаяОбработка = Ложь;
    
    ДоступныеДействия = Новый Массив();
    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
    
    ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(ПолучитьСхемуКомпоновки());
    
    ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных([size=4][b]ПолучитьДанныеРасшифровки() ???,[/b][/size] ИсточникДоступныхНастроек);
    
    ОбработкаРасшифровки.ВыбратьДействие(Расшифровка, ВыполненноеДействие, ПараметрВыполненногоДействия, ДоступныеДействия);
    
    Если ПараметрВыполненногоДействия <> Неопределено Тогда
    
    Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда
    ОткрытьЗначение(ПараметрВыполненногоДействия);
    КонецЕсли;	  
    
    КонецЕсли;
    
    КонецПроцедуры
    
    &НаСервере
    Функция ПолучитьСхемуКомпоновки()  
    
    ЭтотОбъект = РеквизитФормыВЗначение("Объект");
    СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет("СКД");
    
    Возврат ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, Новый УникальныйИдентификатор);
    
    КонецФункции
    
    
  4. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    "И рыбку съесть и на.....й сесть". Это так называется. Блин, так создайте форму. Приложение особой разницы не играет.
  5. TopicStarter Overlay
    Lemon
    Offline

    Lemon

    Регистрация:
    16 янв 2013
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Даже если из внешней обработки все перекинуть во внешний отчет, это не решение, потому что необходимо вывести несколько отчетов. Задача стоит программно вывести отчет и настроить расшифровку, а, имея форму, действительно, можно было за помощью не обращаться.

Поделиться этой страницей