ЕстьСвойство() - функция, определяющая наличие у объекта свойства или реквизита с определенным именем
Разработка - Универсальные функции
Понадобилась функция для определения наличия свойства или реквизита у конкретного объекта для самописной конфигурации. В интернете представлено несколько вариантов реализации данного функционала. В различных вариантах подобных функций, представленных в интернете, в структуру помещается или null, или Неопределено и т.п. И затем вызывается метод ЗаполнитьЗначенияСвойств() и проверяется на равенство в структуре на null или Неопределено и т.п. соответственно.
Хочу представить аудитории еще один вариант функции для проверки наличия свойства, в которой в структуру помещается сама эта же структура:
// ЕстьСвойство(Объект, Свойство)
Функция ЕстьСвойство(Объект, Свойство)
Структура = Новый Структура;
Структура.Вставить(Свойство, Структура);
ЗаполнитьЗначенияСвойств(Структура, Объект);
ЕстьСвойство = (Структура[Свойство] <> Структура);
Возврат ЕстьСвойство;
КонецФункции // ЕстьСвойство()
Функция возвращает: Истина - есть свойство с таким именем; ложь - нет свойства с таким именем.
Как это работает:
- Создается структура;
- Структура помещается сама в себя;
- К Структуре применяется ЗаполнитьЗначенияСвойств();
- Смотрим что произошло со Структурой. Если Структура никак не изменилась, значит данного Свойства нет.
Если со Структурой произошли изменения, значит данное Свойство есть.
Все.
Функция тестировалась на платформе 8.3.9.2170.
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.