7.7 Проверить, имеет ли некоторый элемент справочника определенный атрибут

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем Полоз, 1 фев 2011.

  1. TopicStarter Overlay
    Полоз
    Offline

    Полоз

    Регистрация:
    1 фев 2011
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Добрый вечер.

    Имеется расходная накладная, по которой списываются элементы двух справочников: Номенклатура и Материалы. Справочник Номенклатура имеет атрибут Комплектация, а Материалы такого атрибута не имеет. Метод ПолучитьАтрибут("Комплектация") вылетает на элементах справочника Материалы, и это огорчает. Как быть?

    Спасибо!
  2. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Что-то вроде:
    Код:
    МойРеквизит = Метаданные.Справочник(МойЭлементСправочникаМатериалыИлиНоменклатура.Вид()).Реквизит("Комплектация");
    Если МойРеквизит.Выбран() = 1 Тогда 
    //Такой реквизит есть
    ...
    Иначе
    //Такого реквизита нет
    ...
    КонецЕсли;
    
    
  3. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Код:
    Попытка
    Комплектация = МойЭлементСправочникаМатериалыИлиНоменклатура.Комплектация;
    // реквизит есть
    Исключение
    Комплектация = "";
    // реквизита нет
    КонецПопытки;
    
    
    
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    У shurikvz универсалтнее и правильнее...
    Но предложу свой вариант функции для ГМ
    Код:
    Функция ЕстьРеквизитСпр(ВидСпр,Рекв) Экспорт
    Если ПустоеЗначение(Рекв) = 1 Тогда
    Возврат 0;//пустого реквизита не бывает
    ИначеЕсли ПустоеЗначение(ВидСпр) = 1 Тогда
    Возврат 0; //вид тоже должен быть
    ИначеЕсли Метаданные.Справочник(ВидСпр).Реквизит(ИмяРеквизита).Выбран() = 1 Тогда
    Возврат 1; //нашли... есть такой
    Иначе
    Возврат 0; //увы - нет такого
    КонецЕсли;
    КонецФункции
    
    
    
    

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