Каталог решений - Облегченная функция СвойстваОбъекта для управляемых форм

Облегченная функция СвойстваОбъекта для управляемых форм

Облегченная функция СвойстваОбъекта для управляемых форм

В наличии

Надоело засорять модули форм мелкими функциями типа ПолучитьВидСкладаНаСервере(Склад)? Пора положить этому конец!

Категория:

Описание

Данная функция предназначена для получения значений свойств объектов любого типа. Поместите ее в общий серверный модуль и вам больше не придется плодить конструкции вроде этой:

&НаКлиенте 
Процедура УстановитьВидимость() ТипСклада = ПолучитьТипСкладаНаСервере(Объект.Склад); Если ТипСклада = ПредопределенноеЗначение("Перечисление.ТипыСкладов.Оптовый") Тогда
Элементы.ДополнительноеПоле.Видимость = Истина
КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста
Функция ПолучитьТипСкладаНаСервере(Склад) Возврат Склад.ТипСклада КонецФункции
 

В функцию передается сам объект и список свойств, значения которых требуется получить. Если список не заполнен, то возвращаются все свойства. Возвращаемое значение является структурой, в которой наименования ключей совпадают с именами реквизитов объекта. Вот текст самой функции:

 

Функция   СвойстваОбъекта(Объект, Знач Свойства = "") Экспорт 	
	Попытка 		
		
		Если Свойства = "" Тогда 
			
			КоллекцияРеквизитов = Объект.Метаданные().Реквизиты;
			КоллекцияСтандартныхРеквизитов = Объект.Метаданные().СтандартныеРеквизиты;

			Для каждого Реквизит из КоллекцияРеквизитов Цикл
Свойства = ?(Свойства = "", Реквизит.Имя, Свойства + ", " + Реквизит.Имя); КонецЦикла; Для каждого СтандартныйРеквизит из КоллекцияСтандартныхРеквизитов Цикл
Свойства = ?(Свойства = "", СтандартныйРеквизит.Имя, Свойства + ", " + СтандартныйРеквизит.Имя); КонецЦикла; КонецЕсли; Структура = Новый Структура(Свойства); ЗаполнитьЗначенияСвойств(Структура, Объект); Возврат Структура; Исключение
Возврат Ложь
КонецПопытки КонецФункции

К свойствам возвращаемого значения можно обращаться через точку, как к ссылке. Например:

Контрагент = СвойстваОбъекта(КонтрагентСсылка);
Сообщить(Контрагент.ОсновнойДоговор);
Сообщить(Контрагент.Родитель);

Номенклатура = СвойстваОбъекта(НоменклатураСсылка, "ТипЦен, НоменклатурнаяГруппа");
Сообщить(Номенклатура.НоменклатурнаяГруппа);
 
has been added to your cart:
Оформление заказа