Имя: Пароль:
1C
 
Как получить значение свойств справочника??
0 malder
 
31.05.11
18:41
Вот для документов нашол процедуру, получаю свойства документов а для справочника никак немогу найти -(((

Процедура ПолучитьСвойстваДокумента()
   
   Запрос = Новый Запрос();
   ТекстЗапроса = "ВЫБРАТЬ
                  |    СвойстваОбъектов.Наименование КАК НаименованиеСвойства,
                  |    ВложенныйЗапрос.Объект,
                  |    ВложенныйЗапрос.Свойство,
                  |    ВложенныйЗапрос.Значение
                  |ИЗ
                  |    ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
                  |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                  |            ЗначенияСвойствОбъектов.Объект КАК Объект,
                  |            ЗначенияСвойствОбъектов.Свойство КАК Свойство,
                  |            ЗначенияСвойствОбъектов.Значение КАК Значение
                  |        ИЗ
                  |            РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                  |        ГДЕ
                  |            ЗначенияСвойствОбъектов.Объект = &Объект) КАК ВложенныйЗапрос
                  |        ПО СвойстваОбъектов.Ссылка = ВложенныйЗапрос.Свойство
                  |ГДЕ
                  |    СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы)";
                 
   Запрос.Текст = ТекстЗапроса;
   Запрос.УстановитьПараметр("Объект", СсылкаНаОбъект);
   
   ЗначенияСвойств = Запрос.Выполнить().Выгрузить();
   
   Для Каждого мРеквизит ИЗ Метаданные().Реквизиты Цикл
       
       Если мРеквизит.Имя = "СсылкаНаОбъект" Тогда
           Продолжить;
       КонецЕсли;
       
       НайденнаяСтрока = ЗначенияСвойств.Найти(мРеквизит.Имя, "НаименованиеСвойства");
       Если НайденнаяСтрока = Неопределено Тогда
           Сообщить("Не найдено свойство документа " + мРеквизит.Имя);
           УстановитьСвойство(мРеквизит.Имя);
       Иначе
           Если Лев(мРеквизит.Имя, 13) = "НомераВагонов" Тогда
               НоваяСтрока = ЭтотОбъект.Вагоны.Добавить();
               НоваяСтрока.НомераВагонов = НайденнаяСтрока.Значение;
           КонецЕсли;
           ЭтотОбъект[мРеквизит.Имя] = НайденнаяСтрока.Значение;
       КонецЕсли;                                                        
       
   КонецЦикла;
   
КонецПроцедуры
1 truba
 
31.05.11
18:46
(0) да без разницы справочник или документ же?
2 МишельЛагранж
 
31.05.11
19:24
а они вообще у Справочника есть такие?
3 truba
 
31.05.11
19:31
(2) в типовых да, для справочников/документов. Насколько я помню то пересечь таблицы свойств с сылкой на объект. Какой собственно объект - регистру пофиг.
4 le_
 
31.05.11
19:46
(0) В запросе
ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы)замени на
ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ТвойСправочник))
Например:
ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура))
И в качества параметра ссылку на элем. справочника устанавливай.
5 malder
 
31.05.11
20:02
Как тогда получить ссылку на элемент справочника через СсылкуНаОбъект, забил сказать это у меня внешняя обработка ???
6 malder
 
31.05.11
20:06
ВЫБРАТЬ
   СвойстваОбъектов.Наименование КАК НаименованиеСвойства,
   ВложенныйЗапрос.Объект,
   ВложенныйЗапрос.Свойство,
   ВложенныйЗапрос.Значение
ИЗ
   ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ЗначенияСвойствОбъектов.Объект КАК Объект,
           ЗначенияСвойствОбъектов.Свойство КАК Свойство,
           ЗначенияСвойствОбъектов.Значение КАК Значение
       ИЗ
           РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
       ГДЕ
           ЗначенияСвойствОбъектов.Объект = &Объект) КАК ВложенныйЗапрос
       ПО СвойстваОбъектов.Ссылка = ВложенныйЗапрос.Свойство
ГДЕ
   СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ДоговорыКонтрагентов)

В консрли запросов так работает, если параметр Объект это - ттекущий договор в документе реализация товаров и услуг
7 truba
 
31.05.11
20:43
ссылка на объект это и есть то что тебе надо.