agkorepanov | Дата: Пятница, 16.02.2018, 14:25 | Сообщение # 1 |
Admin
Группа: Администраторы
Сообщений: 206
Статус: Offline
| Функция ПолучитьНазначениеСвойства(Объект) Экспорт // Возьмем все назначения свойств ТекстЗапроса = "ВЫБРАТЬ | НазначенияСвойствКатегорийОбъектов.Ссылка КАК НазначениеСвойства |ИЗ | ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов КАК НазначенияСвойствКатегорийОбъектов |ГДЕ | НазначенияСвойствКатегорийОбъектов.ПометкаУдаления = ЛОЖЬ"; Запрос = Новый Запрос(ТекстЗапроса); Результат = Запрос.Выполнить().Выгрузить(); // Пройдем по всем и посмотрим какой нам подходит Для Каждого Строка Из Результат Цикл Если Объект <> Неопределено И Строка.НазначениеСвойства.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка." + Объект.Метаданные().Имя) Тогда Возврат Строка.НазначениеСвойства; КонецЕсли; КонецЦикла; // // Ничего не нашли Возврат ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.ПустаяСсылка(); // КонецФункции
Функция НайтиСвойство(Объект, Свойство) Экспорт ТекстЗапроса = "ВЫБРАТЬ | СвойстваОбъектов.Ссылка КАК Свойство |ИЗ | ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов |ГДЕ | СвойстваОбъектов.Наименование = &Наименование | И (&НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.ПустаяСсылка) | ИЛИ СвойстваОбъектов.НазначениеСвойства = &НазначениеСвойства)"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("Наименование", Свойство); // Выберем назначение исходя из типа объекта НазначениеСвойства = ПолучитьНазначениеСвойства(Объект); Запрос.УстановитьПараметр("НазначениеСвойства", НазначениеСвойства); // Посмотрим, нашли мы свойство или нет Результат = Запрос.Выполнить().Выгрузить(); Если Результат.Количество() = 0 Тогда Возврат Неопределено; Иначе Возврат Результат[0].Свойство; КонецЕсли; КонецФункции
Функция ПолучитьСвойствоОбъекта(Объект, Свойство) Экспорт // Получим список свойств для объекта ТекстЗапроса = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Значение |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Объект = &Объект | И ЗначенияСвойствОбъектов.Свойство = &Свойство"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("Объект", Объект); // Если свойство передано по названию, то попытаемся найти его Если ТипЗнч(Свойство) = Тип("Строка") Тогда НайденноеСвойство = НайтиСвойство(Объект, Свойство); Если НайденноеСвойство = Неопределено Тогда Возврат Неопределено; Иначе Запрос.УстановитьПараметр("Свойство", НайденноеСвойство); КонецЕсли; Иначе Запрос.УстановитьПараметр("Свойство", Свойство); КонецЕсли; // Результат = Запрос.Выполнить().Выгрузить(); Если Результат.Количество() = 0 Тогда Возврат Неопределено; Иначе Возврат Результат[0].Значение; КонецЕсли; Конецфункции
|
|
| |