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