() посмотрел , предлагаю такое решение - галочки проставляются автоматически ТОЛЬКО для первого измерения регистра с типом ТОЧНО соответствующим выбранному , составные измерения ( различные КлючиАналитики) не помечаются
в модуле формы отчета нужно заменить 2 процедуры :
&НаСервере
Процедура ЗаполнитьТаблицыМетаданных()
Отчет.ИзмеренияРегистровНакопления.Очистить();
Отчет.РегистрыНакопления.Очистить();
ТаблицаИзмеренийПоТипу=Отчет.ИзмеренияРегистровНакопления.Выгрузить();
ТаблицаВсехИзмерений = ТаблицаИзмеренийПоТипу.Скопировать();
Для Каждого РегистрНакопления Из Метаданные.РегистрыНакопления Цикл
КлючОтбора=Новый УникальныйИдентификатор;
РегистрСодержитНужныйТип = Ложь;
ТаблицаВсехИзмерений.Очистить();
уровень=0;
Для Каждого Измерение Из РегистрНакопления.Измерения Цикл
ВложенныйРеквизит = Неопределено;
Если ИзмерениеСодержитНужныйТип(Измерение,ВложенныйРеквизит,уровень) Тогда
СтрокаТаблицыИзмерений = ТаблицаИзмеренийПоТипу.Добавить();
СтрокаТаблицыИзмерений.ИмяРегистра = РегистрНакопления.Имя;
СтрокаТаблицыИзмерений.ИмяИзмерения = Измерение.Имя;
СтрокаТаблицыИзмерений.ВложенныйРеквизит = ?(ВложенныйРеквизит = Неопределено,"",ВложенныйРеквизит);
СтрокаТаблицыИзмерений.КлючОтбора = КлючОтбора;
СтрокаТаблицыИзмерений.Раскрашивать = Истина;
РегистрСодержитНужныйТип = Истина;
СтрокаТаблицыИзмерений.Использовать = ?(уровень=1,Истина,Ложь);
Иначе
СтрокаТаблицыИзмерений = ТаблицаВсехИзмерений.Добавить();
СтрокаТаблицыИзмерений.ИмяРегистра = РегистрНакопления.Имя;
СтрокаТаблицыИзмерений.ИмяИзмерения = Измерение.Имя;
СтрокаТаблицыИзмерений.КлючОтбора = КлючОтбора;
КонецЕсли;
КонецЦикла;
Если РегистрСодержитНужныйТип Тогда
СтрокаТаблицыМетаданныеРегистров = Отчет.РегистрыНакопления.Добавить();
СтрокаТаблицыМетаданныеРегистров.ИмяРегистра = РегистрНакопления.Имя;
СтрокаТаблицыМетаданныеРегистров.КлючОтбора = КлючОтбора;
Для Каждого СтрокаВсехИзмерений Из ТаблицаВсехИзмерений Цикл
НоваяСтрокаИзмерений = ТаблицаИзмеренийПоТипу.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаИзмерений,СтрокаВсехИзмерений);
КонецЦикла;
КонецЕсли;
КонецЦикла;
ТаблицаИзмеренийПоТипу.Сортировать("ИмяИзмерения");
Отчет.ИзмеренияРегистровНакопления.Загрузить(ТаблицаИзмеренийПоТипу);
МассивИзмерений = ТаблицаИзмеренийПоТипу.ВыгрузитьКолонку("ИмяИзмерения");
КонецПроцедуры // ЗаполнитьТаблицыМетаданных()
&НаСервере
Функция ИзмерениеСодержитНужныйТип(Измерение,ВложенныйРеквизит,уровень)
Если ТипИзмерения = Измерение.Тип Тогда
уровень=уровень+ 1 ;
Возврат Истина;
ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(Измерение.Тип.Типы()[0]) Тогда
Для Каждого РеквизитСправочника Из Метаданные.НайтиПоТипу(Измерение.Тип.Типы()[0]).Реквизиты Цикл
Если ТипИзмерения = РеквизитСправочника.Тип Тогда
ВложенныйРеквизит =РеквизитСправочника.Имя;
уровень=?(уровень=1,2,уровень);
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
Показать