Какая группировка была выбрана и как получить значения ресурсов при обработке расшифровки (взято с ItLand). Адрес оригинального текста: http://www.itland.ru/forum/lofiversion/index.php/t22951.html
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) СтандартнаяОбработка= Ложь; ОбработкаРасшифровки= Новый ОбработкаРасшифровкиКомпоновкиданных(ДанныеРасшифровки,Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); ВыполненноеДействие= Неопределено; МассивДоступныхДействий= Новый Массив; МассивДоступныхДействий.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение); МассивДоступныхДействий.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Отфильтровать); СписокДопМеню= Новый СписокЗначений; СписокДопМеню.Добавить("Открыть Хрень"); НастройкиРасшифровки= ОбработкаРасшифровки.Выполнить(Расшифровка, ВыполненноеДействие, МассивДоступныхДействий, СписокДопМеню); ПоляГруппировок= КомпоновщикНастроек.Настройки.ДоступныеПоляГруппировок.Элементы; Для Каждого Поле Из ПоляГруппировок Цикл Если СокрЛП(Поле.Поле) = "ВременнойИнтервал" Тогда ОбработкаРасшифровки.Расшифровать(Новый ИдентификаторРасшифровкиКомпоновкиДанных(Расшифровка),Поле.Поле); КонецЕсли; Если СокрЛП(Поле.Поле) = "ЭлементПланирования" Тогда РасшифровкаЭлементаПланирования= ОбработкаРасшифровки.Расшифровать(Расшифровка,Поле.Поле); КонецЕсли; КонецЦикла; КонецПроцедуры Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) Перем ВыполненноеДействие;
// Запретим стандартную обработку расшифровки СтандартнаяОбработка = Ложь;
// Создадим и инициализируем обработчик расшифровки ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); СписокДействий = Новый СписокЗначений; СписокДействий.Добавить("ВедомостьПросроченныеВзаиморасчетыСКонтрагентами", "Ведомость по просроченным взаиморасчетам с контрагентами"); СписокДействий.Добавить("ВедомостьВзаиморасчетыСКонтрагентами", "Ведомость по взаиморасчетам с контрагентами"); ДоступныеДействия = Новый Массив(); ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение); ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить); ИндексРасшифровки = Число(Расшифровка) + 1; Если ДанныеРасшифровки.Элементы.Количество() > ИндексРасшифровки И ТипЗнч(ДанныеРасшифровки.Элементы[ИндексРасшифровки]) = Тип("ЭлементРасшифровкиКомпоновкиДанныхГруппировка") Тогда ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать); КонецЕсли; // Осуществим выбор действия расшифровки пользователем Настройки = ОбработкаРасшифровки.Выполнить(Расшифровка, ВыполненноеДействие, ДоступныеДействия, СписокДействий); Если Настройки <> Неопределено Тогда // Пользователь выбрал действие, для которого нужно менять настройки
Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить Тогда // Если требется упорядочить - упорядочим в текущем отчете КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); ДействияФормыСформировать(Неопределено);
Иначе // При других действиях - создадим новый отчет, откроем форму, сформируем отчет в ней Отчет = Отчеты[Метаданные().Имя].Создать(); Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); Форма = Отчет.ПолучитьФорму(); Форма.ДействияФормыСформировать(Неопределено); Форма.Открыть();
КонецЕсли; КонецЕсли; // Отчет "Ведомость по взаиморасчетам с контрагентами" Если ВыполненноеДействие = "ВедомостьВзаиморасчетыСКонтрагентами" Тогда Отчет = Отчеты[ВыполненноеДействие].Создать(); Если ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("Контрагент") = Неопределено И ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("ДоговорКонтрагента") = Неопределено Тогда Возврат; КонецЕсли; ПараметрыНастройки = Новый Структура; ДатаОтчета = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаКон").Значение.Дата; ПараметрыНастройки.Вставить("ДатаКон", ДатаОтчета); ПараметрыНастройки.Вставить("ДатаНач", ДобавитьМесяц(ДатаОтчета, - 3)); ПараметрыНастройки.Вставить("ВыбранныеПоля", Новый Структура("Регистратор")); ПараметрыНастройки.Вставить("РаскрашиватьИзмерения", Истина); ПараметрыНастройки.Вставить("ВыводитьИтогиПоВсемУровням", Истина); ТаблицаОтбора = Новый ТаблицаЗначений; ТаблицаОтбора.Колонки.Добавить("Имя"); ТаблицаОтбора.Колонки.Добавить("ВидСравнения"); ТаблицаОтбора.Колонки.Добавить("Значение"); ТаблицаОтбора.Колонки.Добавить("ЗначениеС"); ТаблицаОтбора.Колонки.Добавить("ЗначениеПо"); НоваяСтрока = ТаблицаОтбора.Добавить(); Если ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("Контрагент") <> Неопределено Тогда НоваяСтрока.Имя = "Контрагент"; Если ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("Контрагент").Иерархия Тогда НоваяСтрока.ВидСравнения = ВидСравнения.ВИерархии; ПараметрыНастройки.Вставить("ГруппировкиСтрок", Новый Структура("Контрагент, ДоговорКонтрагента")); Иначе НоваяСтрока.ВидСравнения = ВидСравнения.Равно; ПараметрыНастройки.Вставить("ГруппировкиСтрок", Новый Структура("ДоговорКонтрагента")); КонецЕсли; НоваяСтрока.Значение = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("Контрагент").Значение; НоваяСтрока.ЗначениеС = Null; НоваяСтрока.ЗначениеПо = Null; ИначеЕсли ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("ДоговорКонтрагента") <> Неопределено Тогда НоваяСтрока.Имя = "ДоговорКонтрагента"; Если ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("ДоговорКонтрагента").Иерархия Тогда НоваяСтрока.ВидСравнения = ВидСравнения.ВИерархии; Иначе НоваяСтрока.ВидСравнения = ВидСравнения.Равно; КонецЕсли; НоваяСтрока.Значение = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("ДоговорКонтрагента").Значение; НоваяСтрока.ЗначениеС = Null; НоваяСтрока.ЗначениеПо = Null; КонецЕсли; ПараметрыНастройки.Вставить("Отбор", ТаблицаОтбора); Отчет.Настроить(ПараметрыНастройки); Форма = Отчет.ПолучитьОсновнуюФорму(); Форма.ОбновитьОтчет(); Форма.Открыть(); КонецЕсли; // Отчет "Ведомость по просроченным взаиморасчетам с контрагентами" Если ВыполненноеДействие = "ВедомостьПросроченныеВзаиморасчетыСКонтрагентами" Тогда Отчет = Отчеты[ВыполненноеДействие].Создать(); Если ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("Контрагент") = Неопределено И ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("ДоговорКонтрагента") = Неопределено Тогда Возврат; КонецЕсли; ПараметрыНастройки = Новый Структура; ДатаОтчета = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаКон").Значение.Дата; ПараметрыНастройки.Вставить("ДатаКон", ДатаОтчета); ПараметрыНастройки.Вставить("ДатаНач", ДобавитьМесяц(ДатаОтчета, - 3)); ПараметрыНастройки.Вставить("ВыбранныеПоля", Новый Структура("Регистратор")); ПараметрыНастройки.Вставить("РаскрашиватьИзмерения", Истина); ПараметрыНастройки.Вставить("ВыводитьИтогиПоВсемУровням", Истина); ТаблицаОтбора = Новый ТаблицаЗначений; ТаблицаОтбора.Колонки.Добавить("Имя"); ТаблицаОтбора.Колонки.Добавить("ВидСравнения"); ТаблицаОтбора.Колонки.Добавить("Значение"); ТаблицаОтбора.Колонки.Добавить("ЗначениеС"); ТаблицаОтбора.Колонки.Добавить("ЗначениеПо"); НоваяСтрока = ТаблицаОтбора.Добавить(); Если ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("Контрагент") <> Неопределено Тогда НоваяСтрока.Имя = "Контрагент"; Если ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("Контрагент").Иерархия Тогда НоваяСтрока.ВидСравнения = ВидСравнения.ВИерархии; ПараметрыНастройки.Вставить("ГруппировкиСтрок", Новый Структура("Контрагент, ДоговорКонтрагента")); Иначе НоваяСтрока.ВидСравнения = ВидСравнения.Равно; ПараметрыНастройки.Вставить("ГруппировкиСтрок", Новый Структура("ДоговорКонтрагента")); КонецЕсли; НоваяСтрока.Значение = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("Контрагент").Значение; НоваяСтрока.ЗначениеС = Null; НоваяСтрока.ЗначениеПо = Null; ИначеЕсли ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("ДоговорКонтрагента") <> Неопределено Тогда НоваяСтрока.Имя = "ДоговорКонтрагента"; Если ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("ДоговорКонтрагента").Иерархия Тогда НоваяСтрока.ВидСравнения = ВидСравнения.ВИерархии; Иначе НоваяСтрока.ВидСравнения = ВидСравнения.Равно; КонецЕсли; НоваяСтрока.Значение = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("ДоговорКонтрагента").Значение; НоваяСтрока.ЗначениеС = Null; НоваяСтрока.ЗначениеПо = Null; КонецЕсли; ПараметрыНастройки.Вставить("Отбор", ТаблицаОтбора); Отчет.Настроить(ПараметрыНастройки); Форма = Отчет.ПолучитьОсновнуюФорму(); Форма.ОбновитьОтчет(); Форма.Открыть(); КонецЕсли; КонецПроцедуры |