Меню


Курсы СтимулСправочникПолезные материалы1С:Предприятие 8.2РазработчикамРеализация обработки данных

1С:Предприятие 8.2 /
Разработчикам /
Реализация обработки данных

Оглавление

Чтение отдельных реквизитов объекта из базы данных

При чтении отдельных реквизитов объекта из базы данных следует иметь в виду, что вызов метода ПолучитьОбъект или обращение к реквизитам объекта через точку от ссылки приводит к загрузке объекта из базы целиком, вместе с его табличными частями.

Поэтому для чтения значений отдельных реквизитов из базы данных следует использовать запрос. Например, неправильно:

 Процедура  ЗаполнитьКодИНаименованиеСтраны()
	
	СтранаСсылка =// получаем ссылку на элемент  справочника  
	КодСтраны = СтранаСсылка.Код; // первое обращение загружает объект целиком
	НаименованиеСтраны = СтранаСсылка.Наименование;
	
 КонецПроцедуры 

правильно:

 Процедура  ЗаполнитьКодИНаименованиеСтраны()
	
	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	| СтраныМира.Код,
	| СтраныМира. Наименование 
	|ИЗ
	|  Справочник .СтраныМира КАК СтраныМира
	|ГДЕ
	| СтраныМира.Ссылка = &Ссылка");
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	КодСтраны = Выборка.Код;
	НаименованиеСтраны = Выборка.Наименование;
	
КонецПроцедуры

Для упрощения синтаксиса рекомендуется также использовать специальные функции ПолучитьЗначенияРеквизитов или ПолучитьЗначениеРеквизита (входят в состав Библиотеки стандартных подсистем):

Функция ПолучитьЗначенияРеквизитов(Ссылка, ИменаРеквизитов) Экспорт
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	| " + ИменаРеквизитов + "
	|ИЗ
	| " + Ссылка.Метаданные().ПолноеИмя() + " КАК Таблица
	|ГДЕ
	| Таблица.Ссылка = &Ссылка";
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	Результат = Новый Структура(ИменаРеквизитов);
	ЗаполнитьЗначенияСвойств(Результат, Выборка);
	
	Возврат Результат;
	
 КонецФункции 
Функция ПолучитьЗначениеРеквизита(Ссылка, ИмяРеквизита) Экспорт
	
	Результат = ПолучитьЗначенияРеквизитов(Ссылка, ИмяРеквизита);
	Возврат Результат[ИмяРеквизита];
	
КонецФункции

В этом случае исходный пример будет выглядеть так:

Процедура ЗаполнитьКодИНаименованиеСтраны()
	
	ЗначенияРеквизитов = ОбщегоНазначения.ПолучитьЗначенияРеквизитов(СтранаСсылка, "Код, Наименование");
	КодСтраны = ЗначенияРеквизитов.Код;
	НаименованиеСтраны = ЗначенияРеквизитов.Наименование;
	
КонецПроцедуры

Нас находят: общегоназначения получитьзначениереквизита, Реквизит Справочника только чтение, при чтении обычных реквизитов объекта из базы данных, ОбщегоНазначения ПолучитьЗначенияРеквизитов, возврат выборка через реквизит ссылку, 1с ссылка и объект чтение реквизитов, 1с роли чтение реквизита объекта


Подписка на новости RSS

Мы на Facebook