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