/* */

Как получить свойство объекта 1С 8 УТ 10.3 - Форум

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

Функция НайтиСвойство(Объект, Свойство) Экспорт
ТекстЗапроса = "ВЫБРАТЬ
               | СвойстваОбъектов.Ссылка КАК Свойство
               |ИЗ
               | ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
               |ГДЕ
               | СвойстваОбъектов.Наименование = &Наименование
               | И (&НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.ПустаяСсылка)
               | ИЛИ СвойстваОбъектов.НазначениеСвойства = &НазначениеСвойства)";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Наименование", Свойство);
// Выберем назначение исходя из типа объекта 
НазначениеСвойства = ПолучитьНазначениеСвойства(Объект);
Запрос.УстановитьПараметр("НазначениеСвойства", НазначениеСвойства);
// Посмотрим, нашли мы свойство или нет
Результат = Запрос.Выполнить().Выгрузить();
Если Результат.Количество() = 0 Тогда
Возврат Неопределено;
Иначе
Возврат Результат[0].Свойство;
КонецЕсли;
КонецФункции

Функция ПолучитьСвойствоОбъекта(Объект, Свойство) Экспорт
// Получим список свойств для объекта
ТекстЗапроса = "ВЫБРАТЬ
               | ЗначенияСвойствОбъектов.Значение
               |ИЗ
               | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
               |ГДЕ
               | ЗначенияСвойствОбъектов.Объект = &Объект
               | И ЗначенияСвойствОбъектов.Свойство = &Свойство";
   
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Объект", Объект);
// Если свойство передано по названию, то попытаемся найти его
Если ТипЗнч(Свойство) = Тип("Строка") Тогда
НайденноеСвойство = НайтиСвойство(Объект, Свойство);
Если НайденноеСвойство = Неопределено Тогда
Возврат Неопределено;
Иначе
Запрос.УстановитьПараметр("Свойство", НайденноеСвойство);
КонецЕсли;
Иначе
Запрос.УстановитьПараметр("Свойство", Свойство);
КонецЕсли;
//
Результат = Запрос.Выполнить().Выгрузить();
Если Результат.Количество() = 0 Тогда
Возврат Неопределено;
Иначе
Возврат Результат[0].Значение;
КонецЕсли;
Конецфункции
 
Форум » » Иж-Софт - Форум по 1С » Как получить свойство объекта 1С 8 УТ 10.3 (Как получить свойство номенклатуры или контрагента 1С 8 УТ)
  • Страница 1 из 1
  • 1
Поиск:


Наш опрос
Оцените мой сайт
Всего ответов: 0