8.х Реквизиты выбранного справочника

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

  1. TopicStarter Overlay
    JediAlex
    Offline

    JediAlex Опытный в 1С

    Регистрация:
    27 авг 2011
    Сообщения:
    140
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, уважаемые специалисты. Помогите решить проблему. Есть список значений, в который выведены все справочники конфигурации. Я выбираю справочник таким кодом:
    Код:
    ВыбранныйЭлемент = ВыбрСправочники.ВыбратьЭлемент("Выбор объекта: Справочник", ЭлементыФормы.ВыбрСправочники.ТекущиеДанные);
    Если ВыбранныйЭлемент <> Неопределено Тогда
    Справочники[ВыбранныйЭлемент.Значение.Имя].ПолучитьФормуСписка().Открыть();
    КонецЕсли;
    
    ВыбрСправочники - это список значений формы. Далее пытаюсь получить количество реквизитов выбранного справочника:
    Код:
    КолвоРеквизитов = Метаданные.Справочники.ВыбранныйЭлемент.Значение.Имя.Реквизиты.Количество();
    Сообщить(КолвоРеквизитов);
    
    
    Здесь и возникает ошибка:
    Поле объекта не обнаружено (ВыбранныйЭлемент)
    КолвоРеквизитов = Метаданные.Справочники.ВыбранныйЭлемент.Значение.Имя.Реквизиты.Количество();

    а если ввожу конкретный справочник, например так:
    Код:
    КолвоРеквизитов = Метаданные.Справочники.Банки.Реквизиты.Количество();
    Сообщить(КолвоРеквизитов);
    
    , то работает нормально... как сделать, чтоб работало с любым выбранным справочником?
  2. Наташа
    Offline

    Наташа Опытный в 1С

    Регистрация:
    14 авг 2010
    Сообщения:
    1.442
    Симпатии:
    2
    Баллы:
    29
    Попробуйте так
    Код:
    Метаданные.Справочники[ВыбранныйЭлемент.Значение.Имя].Реквизиты.Количество();
    
    Первый раз то у вас правильно написано, куда во втором кусочке кода квадратные скобки дели? :)
  3. TopicStarter Overlay
    JediAlex
    Offline

    JediAlex Опытный в 1С

    Регистрация:
    27 авг 2011
    Сообщения:
    140
    Симпатии:
    0
    Баллы:
    26
    Спасибо большое. А как теперь обратиться к реквизиту? например, чтоб записать его в список значений?
    что то никак не могу разобраться... т.е надо перебрать все реквизиты выбранного справочника и вывести в список значений..а потом еще получить значение этого реквизита и изменить его...
    Пробовал так:
    Код:
    Метаданные.Справочники[ВыбранныйЭлемент.Значение.Имя].Реквизит(номер)
    
    не выходит...
  4. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Для перебора всех реквизитов можно так:
    Код:
    Для каждого ТекРеквизит Из Метаданные.Справочники[ВыбранныйЭлемент.Значение.Имя].Реквизиты Цикл
    ИмяРеквизита = ТекРеквизит.Имя;
    КонецЦикла;
    
    
    Получить значение реквизита метаданных по номеру так:
    Код:
    Метаданные.Справочники[ВыбранныйЭлемент.Значение.Имя].Реквизиты[Номер];
    
    
    Получить значение реквизита элемента справочника:
    Код:
    Значение = ЭлементСправочника[ИмяРеквизита];
    
    
    Изменить реквизит элемента:
    Код:
    ОбъектСправочника = ЭлементСправочника.ПолучитьОбъект();
    ОбъектСправочника[ИмяРеквизита] = НовоеЗначение;
    ОбъектСправочника.Записать();
    
    
    Для спасибо кнопка есть [​IMG]

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