Как определить, что переменная это вообще Справочник или Документ

1. olezhe 22 09.12.24 21:11 Сейчас в теме
У меня в коде требуется перебирать реквизиты и, в зависимости от типа реквизита, по-разному обрабатывать справочники и документы.
Как получить не конкретный ТипЗнч(ЭтоЗначение) , а понять, что это СправочникСсылка или ДокументСсылка?
По теме из базы знаний
Найденные решения
3. olezhe 22 09.12.24 21:15 Сейчас в теме
А вот как. Может пригодится кому.

Чтобы определить, является ли значение переменной ссылкой на элемент любого справочника, нужно использовать метод ТипВсеСсылки() из системного объекта Справочники. Этот метод возвращает описание всех ссылок на справочники, доступных в текущей базе данных. Проверка выполняется с помощью метода СодержитТип().

&НаСервере
Функция ЭтоСправочник(ЗначениеСвойства)
	
	ОписаниеВсехТиповСправочников=Справочники.ТипВсеСсылки(); 
	ЭтоСправочник = ОписаниеВсехТиповСправочников.СодержитТип(ТипЗнч(ЗначениеСвойства));
	
	Возврат ЭтоСправочник ;
	
КонецФункции 
Показать
VyacheslavShilov; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2107191 09.12.24 21:15 Сейчас в теме
3. olezhe 22 09.12.24 21:15 Сейчас в теме
А вот как. Может пригодится кому.

Чтобы определить, является ли значение переменной ссылкой на элемент любого справочника, нужно использовать метод ТипВсеСсылки() из системного объекта Справочники. Этот метод возвращает описание всех ссылок на справочники, доступных в текущей базе данных. Проверка выполняется с помощью метода СодержитТип().

&НаСервере
Функция ЭтоСправочник(ЗначениеСвойства)
	
	ОписаниеВсехТиповСправочников=Справочники.ТипВсеСсылки(); 
	ЭтоСправочник = ОписаниеВсехТиповСправочников.СодержитТип(ТипЗнч(ЗначениеСвойства));
	
	Возврат ЭтоСправочник ;
	
КонецФункции 
Показать
VyacheslavShilov; +1 Ответить
4. olezhe 22 09.12.24 21:18 Сейчас в теме
Для документов аналогично:
&НаСервере
Функция ЭтоДокумент(ЗначениеСвойства)
	
	ОписаниеВсехТиповДокументов=Документы.ТипВсеСсылки(); 
	ЭтоДокумент = ОписаниеВсехТиповДокументов.СодержитТип(ТипЗнч(ЗначениеСвойства));
	
	Возврат ЭтоДокумент;
	
КонецФункции 
Показать
5. user2107191 09.12.24 21:20 Сейчас в теме
(4) Обалдеть! А для Отчетов можно?
6. olezhe 22 09.12.24 21:35 Сейчас в теме
(5) Вот чего я не пойму, надо получить описание типа вида "СправочникСсылка.Пользователи".
Как это сделать? Заранее неизвестно, какого именно вида справочник.

Метаданные.НайтиПоТипу(ТипЗнч(ЗначениеСвойства)).ПолноеИмя() возвращает "Справочник.[ИмяСправочника]"
Это может быть полезно, но не совпадает буквально с "СправочникСсылка.[ИмяСправочника]".

Какой метод вернёт описание типа именно в таком виде?
7. user2107191 09.12.24 21:37 Сейчас в теме
8. nomad_irk 80 10.12.24 07:48 Сейчас в теме
(6) метода нет, но что мешает добавить "ссылка" к "справочник"?
9. user1863362 10.12.24 08:40 Сейчас в теме
(8)
метода нет
Отучаемся говорить за всех
Ссылка = Справочники.СтраныМира.Россия;
ИмяТипа = XMLТипЗнч(Ссылка).ИмяТипа;
Sashares; nomad_irk; user2107191; +3 Ответить
10. Vinzor 110 10.12.24 09:07 Сейчас в теме
ЭтоДокумент = Метаданные.Документы.Содержит(ОбъектМетаданных);
ЭтоСправочник = Метаданные.Справочники.Содержит(ОбъектМетаданных);
И т.п.
ОбъектМетаданных - объект, для которого необходимо определить принадлежность к заданному типу
11. user2107191 10.12.24 09:33 Сейчас в теме
(10) То есть вместо того, чтобы по типу ссылки СРАЗУ определить её принадлежность к Справочникам или Документам - ты предлагаешь сделать крюк, и сначала:
1. От ссылки получить метаданные (или в глобальных метаданных НайтиПоТипу ссылки)
2. В глобальных метаданных определить принадлежность найденного объекта к той или иной ветке.

Зачем тут лишние ходы?
12. Vinzor 110 10.12.24 10:13 Сейчас в теме
(11) накидываю варианты, для выбора лучшего
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот