Как програмно скопировать справочник со всеми его родителями?
Скопировать() работает только для текущего. Но родители не копируются. И в голову ничего не приходит для копирования всех его родителей .
// Необходима для поиска и замены подчиненных фирме справочников
Функция ЗаменаПодчиненногоСправочника(Организация,Ссылка) Экспорт
Наименование = Ссылка.Наименование;
ИмяСправочника = Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).Имя;
СправочникСсылка = Справочники[ИмяСправочника].НайтиПоНаименованию(Наименование,Истина,,Организация);
Если СправочникСсылка = Справочники[ИмяСправочника].ПустаяСсылка() Тогда
Если Ссылка.Уровень() > 0 Тогда // Вот это вот фигня на постном масле
Ур = Ссылка.Уровень();
Если Ур=1 Тогда
НовыйСправочник1 = Ссылка.Родитель.Скопировать();
НовыйСправочник1.Владелец = Организация;
НовыйСправочник1.Записать();
НовыйСправочник = Ссылка.Скопировать();
НовыйСправочник.Родитель = НовыйСправочник1.Ссылка;
НовыйСправочник.Владелец = Организация;
НовыйСправочник.Записать();
Иначе
Предупреждение("Справочник имеет много уровневую структуру! И замена не будет произведена!");
Возврат Ссылка;
КонецЕсли;
Иначе
НовыйСправочник = Ссылка.Скопировать();
НовыйСправочник.Владелец = Организация;
НовыйСправочник.Записать();
КонецЕсли;
ТекстСообщения = НСтр("ru='Создан элемент справочника: "+Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).Представление()+
". Значение: "+НовыйСправочник.Наименование+"!';uk='Додан елемент довідника: "+Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).Представление()+
". Значення: "+НовыйСправочник.Наименование+"!'");
ОбщегоНазначения.СообщитьИнформациюПользователю(ТекстСообщения,СтатусСообщения.Информация);
Возврат НовыйСправочник.Ссылка;
КонецЕсли;
Возврат СправочникСсылка;
КонецФункции