Странное поведение платформы (8.3.15.1534)
Расширение содержит справочник
вот такой код
Сообщить(Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаСправочникРасширения)));
>>> Ложь
вот так
Сообщить(Метаданные.Справочники.Содержит(СсылкаСправочникРасширения.Метаданные()));
>>> Истина
В расширении не поддерживается использование типа ЛюбаяСсылка. Тип ЛюбаяСсылка, использованный в расширяемой конфигурации, не включает в себя типы, предоставленные расширениями.
В расширении не поддерживается использование типа ЛюбаяСсылка. Тип ЛюбаяСсылка, использованный в расширяемой конфигурации, не включает в себя типы, предоставленные расширениями.
В версии 8.3.20 анонсировали новые возможности использования ссылок на объекты расширений. Так, например, массив, полученный вызовом метода Справочники.ТипВсеСсылки().Типы(), будет содержать типы справочников как из конфигурации, так и из расширений (аналогично будут себя вести методы Документы.ТипВсеСсылки().Типы() и т.д.). Ранее эти методы возвращали только соответствующие типы, определенные в конфигурации.
Функция ПолучитьМетаданныеТекущегоРасширения() Экспорт
МассивРасширений = РасширенияКонфигурации.Получить();
Для Каждого Расширение Из МассивРасширений Цикл
рМетаданные = Новый ОбъектМетаданныхКонфигурация(Расширение.ПолучитьДанные());
Если рМетаданные.Имя = "ОбменПоПравиламКД2" Тогда
Возврат рМетаданные;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции // ПолучитьМетаданныеТекущегоРасширения()
Функция ИсточникВСоставеПланаОбмена(Источник, ИмяПланаОбмена = "МиграцияПриложений") Экспорт
МетаданныеРасширения = РасшКД2_ПовтИсп.ПолучитьМетаданныеТекущегоРасширения();
МетаданныеПланаОбмена = МетаданныеРасширения.ПланыОбмена[ИмяПланаОбмена];
Если ТипЗнч(Источник) = Тип("УдалениеОбъекта") Тогда
МетаданныеИсточника = Источник.Ссылка.Метаданные();
Иначе
МетаданныеИсточника = Источник.Метаданные();
КонецЕсли;
Возврат МетаданныеПланаОбмена.Состав.Содержит(МетаданныеИсточника);
КонецФункции // ИсточникВСоставеПланаОбмена()
(7) Большое спасибо. Прикрутил к обработке выгрузки из КД 2.1 УниверсальныйОбменДаннымиXML, может кому пригодится. У меня при выгрузке значение УникальныйИдентификатор было пустое для объектов расширения как раз из-за этого.
Перем МетаданныеРасширений;
Функция ЭтоЗначениеСсылочногоТипаРасширения(Значение)
Тип = ТипЗнч(Значение);
Если Тип = Тип("Неопределено") Тогда
Возврат Ложь;
КонецЕсли;
Если МетаданныеРасширений = Неопределено Тогда
МетаданныеРасширений = Новый Массив;
Для Каждого Расширение Из РасширенияКонфигурации.Получить() Цикл
МетаданныеРасширений.Добавить(Новый ОбъектМетаданныхКонфигурация(Расширение.ПолучитьДанные()));
КонецЦикла;
КонецЕсли;
Для Каждого МетаданныеРасширения Из МетаданныеРасширений Цикл
МетаданныеТипа = МетаданныеРасширения.НайтиПоТипу(Тип);
Если МетаданныеТипа <> Неопределено
И (МетаданныеРасширения.Справочники.Содержит(МетаданныеТипа)
ИЛИ МетаданныеРасширения.Документы.Содержит(МетаданныеТипа)
ИЛИ МетаданныеРасширения.Перечисления.Содержит(МетаданныеТипа)
ИЛИ МетаданныеРасширения.ПланыВидовХарактеристик.Содержит(МетаданныеТипа)
ИЛИ МетаданныеРасширения.ПланыСчетов.Содержит(МетаданныеТипа)
ИЛИ МетаданныеРасширения.ПланыВидовРасчета.Содержит(МетаданныеТипа)
ИЛИ МетаданныеРасширения.БизнесПроцессы.Содержит(МетаданныеТипа)
ИЛИ МетаданныеРасширения.БизнесПроцессы.ТипВсеСсылкиТочекМаршрутаБизнесПроцессов().СодержитТип(Тип)
ИЛИ МетаданныеРасширения.Задачи.Содержит(МетаданныеТипа)
ИЛИ МетаданныеРасширения.ПланыОбмена.Содержит(МетаданныеТипа))
Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции