Приступим...
Снимем все флаги с дерева метаданных:
Для Каждого СтрокаУровень1 Из ДеревоМетаданных.Строки Цикл
Для Каждого СтрокаУровень2 Из СтрокаУровень1.Строки Цикл
Для Каждого СтрокаУровень3 Из СтрокаУровень2.Строки Цикл
СтрокаУровень3.Выгружать = Ложь;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Создадим параметры для выборки изменений по журналу регистрации и выгрузим изменения в таблицу значений:
ТабЖур = Новый ТаблицаЗначений;
Фильтр = Новый Структура;
// ограничение по датам
Фильтр.Вставить("ДатаНачала", ДатаНачалаИзменений);
Фильтр.Вставить("ДатаОкончания", ДатаОкончанияИзменений);
// ограничение событиями, относящимися только к документам
МассивСобытий = Новый Массив;
МассивСобытий.Добавить("_$Data$_.Delete");
МассивСобытий.Добавить("_$Data$_.New");
МассивСобытий.Добавить("_$Data$_.Post");
МассивСобытий.Добавить("_$Data$_.Unpost");
МассивСобытий.Добавить("_$Data$_.Update");
Фильтр.Вставить("Событие", МассивСобытий);
// список колонок
КолонкиСтрокой = "Метаданные, Данные";
ВыгрузитьЖурналРегистрации(ТабЖур, Фильтр, КолонкиСтрокой, , );
Обработаем полученную таблицу значений. Найденные документы поместим в таблицу значений с двумя колонками (имя метаданного, ссылка на объект):
ТаблицаОтчета = Новый ТаблицаЗначений;
ТаблицаОтчета.Колонки.Добавить("Метаданные");
ТаблицаОтчета.Колонки.Добавить("Данные");
Для Каждого СтрокаТЖ Из ТабЖур Цикл
ТекстМетаданные = Строка(СтрокаТЖ.Метаданные);
ТекстМетаданныеБезДокумента = СтрЗаменить(ТекстМетаданные, "Документ.", "");
Данные = СтрокаТЖ.Данные;
Если Найти(ТекстМетаданные, "Документ.") > 0 Тогда
Если Данные.Метаданные().Реквизиты.Найти("Организация") <> Неопределено Тогда
Если ЗначениеЗаполнено(Организация) И Данные.Организация <> Организация Тогда
Продолжить;
Иначе
СтрокаТО = ТаблицаОтчета.Добавить();
СтрокаТО.Метаданные = ТекстМетаданныеБезДокумента;
СтрокаТО.Данные = Данные;
КонецЕсли;
КонецЕсли;
Иначе
Продолжить;
КонецЕсли;
КонецЦикла;
И дальше заполняем строки дерева, формируя списки по группам метаданных:
ТаблицаОтчетаМетаданные = ТаблицаОтчета.Скопировать();
ТаблицаОтчетаМетаданные.Свернуть("Метаданные");
Для Каждого СтрокаТОМ Из ТаблицаОтчетаМетаданные Цикл
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("Метаданные", СтрокаТОМ.Метаданные);
СтрокиТО = ТаблицаОтчета.НайтиСтроки(СтруктураОтбора);
СписокСсылок = Новый СписокЗначений;
Для Каждого СтрокаТО Из СтрокиТО Цикл
СписокСсылок.Добавить(СтрокаТО.Данные);
КонецЦикла;
ЗаполнитьДеревоНастроекОтборамиДокументов(СтрокаТОМ.Метаданные, СписокСсылок);
КонецЦикла;
Процедура заполнения дерева:
Процедура ЗаполнитьДеревоНастроекОтборамиДокументов(ИмяМетаданного = "", СписокСсылок = "") Экспорт
// выгрузка документов
Для Каждого СтрокаУровень1 Из ДеревоМетаданных.Строки Цикл
// уровень заголовка единственный
БылиВВеткеДокументов = Ложь;
Для Каждого СтрокаУровень2 Из СтрокаУровень1.Строки Цикл
Если СтрокаУровень2.Метаданные <> "Документы" И НЕ БылиВВеткеДокументов Тогда
Продолжить;
Иначе
Если НЕ БылиВВеткеДокументов Тогда
БылиВВеткеДокументов = Истина;
СтрокаУровень2.Выгружать = 1;
Для Каждого СтрокаУровень3 Из СтрокаУровень2.Строки Цикл
Если СтрокаУровень3.Метаданные.Имя <> ИмяМетаданного Тогда
Продолжить;
КонецЕсли;
Сообщить("Заполнили флаги по " + ИмяМетаданного);
СтрокаУровень3.Выгружать = 1;
СтрокаУровень3.ИспользоватьОтбор = Истина;
СтрокаУровень3.НастройкиПостроителя = УстановитьНастройкиПостроителяОтчетаДляСтроки(СтрокаУровень3, СписокСсылок);
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
// конец обхода дерева
КонецПроцедуры
И самая главная процедура)
Функция УстановитьНастройкиПостроителяОтчетаДляСтроки(СтрокаДереваМетаданных, СписокКодов)
ИтоговыйТекстЗапроса = ПолучитьТекстЗапросаПоСтроке(СтрокаДереваМетаданных, ЛОЖЬ, "");
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.Текст = ИтоговыйТекстЗапроса;
ПостроительОтчета.ЗаполнитьНастройки();
ПостроительОтчета.Отбор.Сбросить();
Отбор = ПостроительОтчета.Отбор.Добавить("Ссылка");
Отбор.ВидСравнения = ВидСравнения.ВСписке;
Отбор.Использование = Истина;
Отбор.Значение = СписокКодов;
Возврат ПостроительОтчета.ПолучитьНастройки();
КонецФункции
В прикрепленном файле обработка с вышеописанным кодом, отбор по организации и периоду вынесен на отдельную вкладку "Дополнительные настройки".
Вкладка настроек выглядит так:
А результат работы кода вот так:
То есть, все измененные типы объектов помечены к выгрузке, в отборах - списки ссылок.
P.S. И еще несколько простых и полезных программных приемов: //infostart.ru/public/399922/