Copyright © 2010 Promsite. All Rights Reserved.
P  R  O  M  S  I  T  E
Статьи по 1С
стр. 1
стр. 1
Метаданные-реквизиты

    Реквизит справочника - это объект, имеющий свойства, такие как напр. тип , длина, точность и т.д. Каким образом получить эти сведения? На помощь приходит работа с объектом метаданные.

   //******************************************************************************
    Процедура ПриОткрытии()
        Форма.ИспользоватьСлой("основной");
        Для Сч=1 По Метаданные.Справочник() Цикл//количество справочников в конфигурации
         Сз.ДобавитьЗначение(Метаданные.Справочник(Сч).Идентификатор);//все названия     справочников
        КонецЦикла;
    //основные значения, для примера хватит.
        Тз.НоваяКолонка("Идентификатор",,,,,15);
        Тз.НоваяКолонка("Тип",,,,,10);
        Тз.НоваяКолонка("Длина",,,,,5);
        Тз.НоваяКолонка("Точность",,,,,5);
    КонецПроцедуры
    //*******************************************
    Процедура Реквизиты()
        Форма.ИспользоватьСлой("Дополнительный");
        Тз.УдалитьСтроки();
        Идент=Сз.ПолучитьЗначение(Сз.ТекущаяСтрока());
        Для Сч=1 По Метаданные.Справочник(Идент).Реквизит()Цикл//кол-во реквизитов в конкретно выбранном справочнике.
            Тз.НоваяСтрока();//заполняем таблицу.
            Тз.Идентификатор=Метаданные.Справочник(Идент).Реквизит(Сч).Идентификатор;
            Тз.Тип=Метаданные.Справочник(Идент).Реквизит(Сч).Тип;
            Тз.Длина=Метаданные.Справочник(Идент).Реквизит(Сч).Длина;
            Тз.Точность=Метаданные.Справочник(Идент).Реквизит(Сч).Точность;
        КонецЦикла;
    КонецПроцедуры
    //******************************************************************************
    Процедура Назад()//вернуться к списку справочников
        Форма.ИспользоватьСлой("основной");
    КонецПроцедуры

    Ещё один пример на близкую тему. В ходе работы какого-нибудь модуля надо выяснить как установлен флажок в справочнике в поле Серии кодов, и в зависимости от полученного результата должно произойти ветвление программы. Прямого запроса к объекту метаданных нет. Конечно можно было бы по номеру, при условии что конфигурация законсервирована раз и навсегда. Но это из области фантастики. От перебора объекта метаданных нам никуда не деться. Тогда такой алгоритм: перебираем идентификаторы справочников, как только попался нужный считываем значение реквизита Серии кодов.

   //*******************************************
    Функция СерииКодов(Идент)
        Для Сч=1 По Метаданные.Справочник() Цикл// циклов будет по кол-ву     справочников.
            Если Метаданные.Справочник(Сч).Идентификатор<>Идент Тогда//если не  наш справочник
                Продолжить;//на начало цикла.
            Иначе //вот он, нашли.
                СерКод=Метаданные.Справочник(Сч).СерииКодов;
                Прервать;//как нашли сразу выходим из цикла.
            КонецЕсли;
        КонецЦикла;
        Возврат СерКод;//результат.
    КонецФункции
    //******************************************************************************
    Процедура Сформировать()
           //работаем, например со справочником Пользователи
        Спр=СоздатьОбъект("Справочник.Пользователи");
        Идент=Спр.Вид();//строковое название вида
        СерКод=СерииКодов(Идент);//перешлем это название в функцию.
        Если СерКод="ВесьСправочник" Тогда// и анализируем результат.
            //<делаем что-то>
        Иначе
            //<делаем что-то другое>
        КонецЕсли;
      КонецПроцедуры


Для отображения Облака ссылок
необходим
Adobe Flash Player 9
или выше.