8.х Как проверить реквизит/Объект метаданных на существование?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем alp, 17 апр 2010.

  1. TopicStarter Overlay
    alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    есть Список реквизитов:
    Контрагент
    Договор
    Договор2
    ....
    Как проверить существует ли этот реквизит в объекте?
    подобно методу Выбран() в 77.
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!

    Если Вы хотите проверить существует ли реквизит у объекта метаданных контрагент, то самый простой способ попытаться его получить через Метаданные() с использованием оператора Попытка ... КонецПопытки;
  3. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Из типовой:
    Код:
    МетаданныеДокумента = ДокументОбъект.Метаданные();
    
    
    Код:
    // Позволяет определить есть ли среди реквизитов шапки документа
    // реквизит с переданным именем.
    //
    // Параметры: 
    //  ИмяРеквизита - строковое имя искомого реквизита, 
    //  МетаданныеДокумента - объект описания метаданных документа, среди реквизитов которого производится поиск.
    //
    // Возвращаемое значение:
    //  Истина - нашли реквизит с таким именем, Ложь - не нашли.
    //
    
    
    Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента) Экспорт
    
    Если МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
    Возврат Ложь;
    Иначе
    Возврат Истина;
    КонецЕсли; 
    
    КонецФункции // ЕстьРеквизитДокумента()
    
    Переписать под любой объект не составляет труда:
    Код:
    Функция ЕстьРеквизитОбъекта(ИмяРеквизита, Объект) Экспорт
    
    МетаданныеОбъекта = Объект.Метаданные();
    Если МетаданныеОбъекта.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
    Возврат Ложь;
    Иначе
    Возврат Истина;
    КонецЕсли; 
    
    КонецФункции 
    
    Как говорит "начальника форума": "все украдено до нас" :)

Поделиться этой страницей