Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 мая 2022, 11:08

Как определить что объект ссылочного типа

Автор MuI_I_Ika, 15 мар 2018, 18:33

0 Пользователей и 2 гостей просматривают эту тему.

MuI_I_Ika

Функция, которая скажет является ли передаваемый объект метаданных ссылочным или же не ссылочным. Ссылочный это, например, справочник, документ, счет. Не ссылочный это регистр сведений, перечисление, регистр накопления.

Так же, как легко увидеть из кода, можно определить ссылочный ли тип для любого значения. В первой процедуре через попытку проверяем есть ли возможность получить метаданные. Если метаданные получить нельзя, то тип по умолчанию не ссылочный.


Процедура НашаПроцедура(ОбъектДанных)

    Попытка
ОбъектМетаданных = ОбъектДанных.Метаданные();
    Исключение
ОбъектМетаданных = Неопределено;
    КонецПопытки;

    ИмяБазовогоТипа = "";
    ИмяОсновногоТипа = "";
    ЭтоСсылочныйТип = ЭтоОбъектСсылочногоТипа(ОбъектМетаданных,ИмяБазовогоТипа,ИмяОсновногоТипа);

КонецПроцедуры

Функция ЭтоОбъектСсылочногоТипа(ОбъектМетаданных,ИмяБазовогоТипа,ИмяОсновногоТипа) Экспорт

ИмяОбъектаМетаданных = ОбъектМетаданных.ПолноеИмя();
Позиция = СтрНайти(ИмяОбъектаМетаданных, ".");
Если Позиция > 0 Тогда
ИмяБазовогоТипа = Лев(ИмяОбъектаМетаданных, Позиция - 1);
ИмяОсновногоТипа = Сред(ИмяОбъектаМетаданных,Позиция + 1);
Возврат ИмяБазовогоТипа = "Справочник"
Или ИмяБазовогоТипа = "Документ"
Или ИмяБазовогоТипа = "БизнесПроцесс"
Или ИмяБазовогоТипа = "Задача"
Или ИмяБазовогоТипа = "ПланСчетов"
Или ИмяБазовогоТипа = "ПланОбмена"
Или ИмяБазовогоТипа = "ПланВидовХарактеристик"
Или ИмяБазовогоТипа = "ПланВидовРасчета";
Иначе
Возврат Ложь;
КонецЕсли;

КонецФункции

Теги:

Похожие темы (1)

Рейтинг@Mail.ru Rambler's Top100

Поиск