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