Найти тему
Владимир

А у Вас, есть, реквизит ?

Все описание ниже актуально для платформы 1С8.3
Все коды я пишу и анализирую на лицензионной программе 1С8.3.13.1644 с установленной конфигурацией УНФ 1.6.18.145

Для написания общих процедур и работы с разными объектами метаданных (Документы, Справочника ..... ....), часто необходимо проверить наличие реквизита в объекте метаданных. Конфигурация 1С это конструктор подсистем и один и тот же реквизит в разных объектах может называться по разному, а также у каждого объекта есть свой набор реквизитов.

Для проверки можно использовать БСП и методы которые предоставляет библиотека.

Для вызова с сервера:

ЕстьРеквизитОбъекта
ЕстьРеквизитОбъекта

ОбщегоНазаначения.ЕстьРеквизитОбъекта(<Реквизит>, <Метаданные>)

<Реквизит> - Строка Наименование реквизита

<Метаданные> - Метаданные объекта для поиска кеквизита

В данном варианте функции передавать нужно метаданные объекта, а их соответственно необходимо получить дополнительным методом "<Объект>. Метаданные()"

Сама функция очень проста и вместо вызова общего модуля можно написать код который выполнит те же действия:

ЕстьРеквизитОбъекта  без БСП
ЕстьРеквизитОбъекта без БСП
НО, согласитесь, с БСП намного удобнее, понятнее, красивее !

Следующий вариант считаю более удобный и правильный. Тут не происходит получение метаданных. И для проверки передать нужно любой объект. (Форма, Объект, Элемент, ТекущаяСтрока), а также функцию можно вызвать с клиента.

ЕстьРеквизитИлиСвойствоОбъекта
ЕстьРеквизитИлиСвойствоОбъекта

ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(<Объект проверки>,<Реквизит или свойство>)

<Реквизит или свойство> - Строка - наименование реквизита или свойства

<Объект проверки> - Произвольный - объект, у которого нужно проверить наличие реквизита или свойства;

А вот несколько примеров из жизни:

-5
-6

Спасибо!