() На примере вашей конфигурации разобрался в причинах возникновения ошибки. Как и предполагалось - это вторая причина, описанная в комментарии (40).
Суть в следующем (на примере отчета ВедомостьТоварыНаСкладах).
Данный отчет имеет собственные настройки, описанные в его процедуре УстановитьНачальныеНастройки(). Например, добавляются группы показателей "Количество (в базовых единицах)", "Количество (в ед. отчетов)". А универсальный отчет по умолчанию строит их по измерениям регистра, т.е. имеет только одну группу показателей "Количество". При попытке восстановить настройки возникает ошибка, т.к. вместо трех групп показателей в дереве только одна.
Как исправить?
В функции ВосстановитьНастройкиИзСтруктуры() модуля РассылкаОтчетов_NM вместо строки УстановитьНачальныеНастройки(УниверсальныйОтчет); пишем:
Если УниверсальныйОтчет.ИмяРегистра = "ТоварыНаСкладах" Тогда
УстановитьНачальныеНастройки_ВедомостьТоварыНаСкладах(УниверсальныйОтчет);
Иначе
УстановитьНачальныеНастройки(УниверсальныйОтчет);
КонецЕсли;
Копируем процедуру УстановитьНачальныеНастройки() из отчета ВедомостьТоварыНаСкладах, переименовываем ее, удаляем все лишнее. Получаем:
Процедура УстановитьНачальныеНастройки_ВедомостьТоварыНаСкладах(УниверсальныйОтчет)
УниверсальныйОтчет.ДобавитьПолеГруппировка("БазоваяЕдиницаИзмерения", "Номенклатура", "БазоваяЕдиницаИзмерения", "Базовая единица измерения");
УниверсальныйОтчет.ДобавитьПолеРесурс("КоличествоЕдиницОтчетовНачальныйОстаток", "ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / Номенклатура.ЕдиницаДляОтчетов.Коэффициент", "Количество (в ед. отчетов) (нач. ост.)");
УниверсальныйОтчет.ДобавитьПолеРесурс("КоличествоЕдиницОтчетовПриход", "ИсточникДанных.КоличествоПриход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / Номенклатура.ЕдиницаДляОтчетов.Коэффициент", "Количество (в ед. отчетов) (приход)");
УниверсальныйОтчет.ДобавитьПолеРесурс("КоличествоЕдиницОтчетовРасход", "ИсточникДанных.КоличествоРасход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / Номенклатура.ЕдиницаДляОтчетов.Коэффициент", "Количество (в ед. отчетов) (расход)");
УниверсальныйОтчет.ДобавитьПолеРесурс("КоличествоЕдиницОтчетовКонечныйОстаток", "ИсточникДанных.КоличествоКонечныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / Номенклатура.ЕдиницаДляОтчетов.Коэффициент", "Количество (в ед. отчетов) (кон. ост.)");
УниверсальныйОтчет.ДобавитьПолеРесурс("КоличествоЕдиницОтчетовОборот", "ИсточникДанных.КоличествоОборот * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / Номенклатура.ЕдиницаДляОтчетов.Коэффициент", "Количество (в ед. отчетов) (оборот)");
УниверсальныйОтчет.ДобавитьПолеРесурс("КоличествоБазовыхЕдНачальныйОстаток", "ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент", "Количество (в базовых единицах) (нач. ост.)");
УниверсальныйОтчет.ДобавитьПолеРесурс("КоличествоБазовыхЕдПриход", "ИсточникДанных.КоличествоПриход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент", "Количество (в базовых единицах) (приход)");
УниверсальныйОтчет.ДобавитьПолеРесурс("КоличествоБазовыхЕдРасход", "ИсточникДанных.КоличествоРасход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент", "Количество (в базовых единицах) (расход)");
УниверсальныйОтчет.ДобавитьПолеРесурс("КоличествоБазовыхЕдКонечныйОстаток", "ИсточникДанных.КоличествоКонечныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент", "Количество (в базовых единицах) (кон. ост.)");
УниверсальныйОтчет.ДобавитьПолеРесурс("КоличествоБазовыхЕдОборот", "ИсточникДанных.КоличествоОборот * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент", "Количество (в базовых единицах) (оборот)");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоБазовыхЕдНачальныйОстаток", "Начальный остаток", Истина, "ЧЦ=15; ЧДЦ=3", "КолБазовыхЕд", "Количество (в базовых единицах)");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоБазовыхЕдПриход", "Приход", Истина, "ЧЦ=15; ЧДЦ=3", "КолБазовыхЕд", "Количество (в базовых единицах)");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоБазовыхЕдРасход", "Расход", Истина, "ЧЦ=15; ЧДЦ=3", "КолБазовыхЕд", "Количество (в базовых единицах)");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоБазовыхЕдКонечныйОстаток", "Конечный остаток", Истина, "ЧЦ=15; ЧДЦ=3", "КолБазовыхЕд", "Количество (в базовых единицах)");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоБазовыхЕдОборот", "Оборот", Ложь, "ЧЦ=15; ЧДЦ=3", "КолБазовыхЕд", "Количество (в базовых единицах)");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоЕдиницОтчетовНачальныйОстаток", "Начальный остаток", Ложь, "ЧЦ=15; ЧДЦ=3", "КоличествоЕдиницОтчетов", "Количество (в ед. отчетов)");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоЕдиницОтчетовПриход", "Приход", Ложь, "ЧЦ=15; ЧДЦ=3", "КоличествоЕдиницОтчетов", "Количество (в ед. отчетов)");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоЕдиницОтчетовРасход", "Расход", Ложь, "ЧЦ=15; ЧДЦ=3", "КоличествоЕдиницОтчетов", "Количество (в ед. отчетов)");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоЕдиницОтчетовКонечныйОстаток", "Конечный остаток", Ложь, "ЧЦ=15; ЧДЦ=3", "КоличествоЕдиницОтчетов", "Количество (в ед. отчетов)");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоЕдиницОтчетовОборот", "Оборот", Ложь, "ЧЦ=15; ЧДЦ=3", "КоличествоЕдиницОтчетов", "Количество (в ед. отчетов)");
// Заполнение начальных настроек универсального отчета
УстановитьНачальныеНастройки(УниверсальныйОтчет);
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоНачальныйОстаток",, Ложь,, "Количество");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоПриход",, Ложь,, "Количество");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоРасход",, Ложь,, "Количество");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоКонечныйОстаток",, Ложь,, "Количество");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоОборот",, Ложь,, "Количество");
УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Склад");
УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Номенклатура");
УниверсальныйОтчет.ДобавитьОтбор("Склад");
УниверсальныйОтчет.ДобавитьОтбор("Номенклатура");
УниверсальныйОтчет.ДобавитьДополнительноеПоле("БазоваяЕдиницаИзмерения");
КонецПроцедуры
Показать
Два важных момента:
1. В качестве параметра нужно передать УниверсальныйОтчет.
2. Внутри процедуры вызывается типовая установка начальных настроек, поэтому меняем код с:
// Заполнение начальных настроек универсального отчета
УниверсальныйОтчет.УстановитьНачальныеНастройки(Истина);
на:
// Заполнение начальных настроек универсального отчета
УстановитьНачальныеНастройки(УниверсальныйОтчет);
Аналогичным образом можно доработать остальные нестандартные отчеты. Универсально сделать, к сожалению, не получится.