1С 8.3 БСП ЗначениеРеквизитаОбъекта
Данные > 1С 8.3 БСП > Данные в базе
Перейти в раздел примеры кода 1С 8.3:
1С 8.3 БСП ЗначениеРеквизитаОбъекта. Возвращает значения реквизита, прочитанного из информационной базы по ссылке на объект. Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект для быстрого чтения отдельных реквизитов объекта из базы данных. Функция доступна только на сервере, но если нужно получить реквизит на клиенте, то я ищу модуль ВызовCервера, например, в БП 3.0 это ОбменСКонтрагентамиСлужебныйВызовСервера.ЗначениеРеквизитаОбъекта/
Примера кода от rayastar
&НаКлиенте
Процедура ЗначениеРеквизитаОбъекта(Команда)
// Использование на клиенте.
СтранаПроисхождения = ОбщегоНазначенияРТВызовСервера.ЗначениеРеквизитаОбъекта(Номенклатура,"СтранаПроисхождения");
// Использование на сервере
СтранаПроисхождения = СтранаПроисхождения();
КонецПроцедуры
&НаСервере
Функция СтранаПроисхождения()
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура, "СтранаПроисхождения");
КонецФункции
Процедура ЗначениеРеквизитаОбъекта(Команда)
// Использование на клиенте.
СтранаПроисхождения = ОбщегоНазначенияРТВызовСервера.ЗначениеРеквизитаОбъекта(Номенклатура,"СтранаПроисхождения");
// Использование на сервере
СтранаПроисхождения = СтранаПроисхождения();
КонецПроцедуры
&НаСервере
Функция СтранаПроисхождения()
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура, "СтранаПроисхождения");
КонецФункции
// Автор библиотеки: ООО "1С-Софт". Все права защищены © 2021
// Типовая конфигурация Библиотека стандартных подсистем (далее - БСП)
// Код БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0):
// ссылка на лицензию: https://creativecommons.org/licenses/by/4.0/legalcode
// Код БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0):
// ссылка на лицензию: https://creativecommons.org/licenses/by/4.0/legalcode
Функция БСП
Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные = Ложь) Экспорт
Если ПустаяСтрока(ИмяРеквизита) Тогда
ВызватьИсключение
НСтр("ru = 'Неверный второй параметр ИмяРеквизита в функции ОбщегоНазначения.ЗначениеРеквизитаОбъекта:
|- Имя реквизита должно быть заполнено'");
КонецЕсли;
Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные);
Возврат Результат[СтрЗаменить(ИмяРеквизита, ".", "")];
КонецФункции
Если ПустаяСтрока(ИмяРеквизита) Тогда
ВызватьИсключение
НСтр("ru = 'Неверный второй параметр ИмяРеквизита в функции ОбщегоНазначения.ЗначениеРеквизитаОбъекта:
|- Имя реквизита должно быть заполнено'");
КонецЕсли;
Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные);
Возврат Результат[СтрЗаменить(ИмяРеквизита, ".", "")];
КонецФункции
// Автор библиотеки: ООО "1С-Софт". Все права защищены © 2021
// Типовая конфигурация Библиотека стандартных подсистем (далее - БСП)
// Код БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0):
// ссылка на лицензию: https://creativecommons.org/licenses/by/4.0/legalcode
// Код БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0):
// ссылка на лицензию: https://creativecommons.org/licenses/by/4.0/legalcode
Функция на клиенте
ОбщегоНазначенияУТВызовСервера.ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные);
из Системы стандартов и методик разработки конфигураций в 1С 8.3
// При чтении отдельных реквизитов объекта из базы данных следует иметь в виду,
// что вызов метода ПолучитьОбъект или обращение к реквизитам объекта через точку
// от ссылки приводит к загрузке объекта из базы целиком, вместе с его табличными частями.
// Поэтому для чтения значений отдельных реквизитов из базы данных следует использовать запрос.
// Неправильно:
Процедура ЗаполнитьКодИНаименованиеСтраны()
// получаем ссылку на элемент справочника:
СтранаСсылка = Справочники.Страны.НайтиПоНаименованию("Испания");
КодСтраны = СтранаСсылка.Код; // первое обращение загружает объект целиком
НаименованиеСтраны = СтранаСсылка.Наименование;
КонецПроцедуры
// Правильно:
Процедура ЗаполнитьКодИНаименованиеСтраны()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| СтраныМира.Код,
| СтраныМира.Наименование
|ИЗ
| Справочник.СтраныМира КАК СтраныМира
|ГДЕ
| СтраныМира.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
КодСтраны = Выборка.Код;
НаименованиеСтраны = Выборка.Наименование;
КонецПроцедуры
// Для упрощения синтаксиса рекомендуется также использовать специальные функции
// ЗначенияРеквизитовОбъектаили ЗначениеРеквизитаОбъекта.
// В этом случае исходный пример будет выглядеть так:
Процедура ЗаполнитьКодИНаименованиеСтраны()
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтранаСсылка, "Код, Наименование");
КодСтраны = ЗначенияРеквизитов.Код;
НаименованиеСтраны = ЗначенияРеквизитов.Наименование;
КонецПроцедуры
// что вызов метода ПолучитьОбъект или обращение к реквизитам объекта через точку
// от ссылки приводит к загрузке объекта из базы целиком, вместе с его табличными частями.
// Поэтому для чтения значений отдельных реквизитов из базы данных следует использовать запрос.
// Неправильно:
Процедура ЗаполнитьКодИНаименованиеСтраны()
// получаем ссылку на элемент справочника:
СтранаСсылка = Справочники.Страны.НайтиПоНаименованию("Испания");
КодСтраны = СтранаСсылка.Код; // первое обращение загружает объект целиком
НаименованиеСтраны = СтранаСсылка.Наименование;
КонецПроцедуры
// Правильно:
Процедура ЗаполнитьКодИНаименованиеСтраны()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| СтраныМира.Код,
| СтраныМира.Наименование
|ИЗ
| Справочник.СтраныМира КАК СтраныМира
|ГДЕ
| СтраныМира.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
КодСтраны = Выборка.Код;
НаименованиеСтраны = Выборка.Наименование;
КонецПроцедуры
// Для упрощения синтаксиса рекомендуется также использовать специальные функции
// ЗначенияРеквизитовОбъектаили ЗначениеРеквизитаОбъекта.
// В этом случае исходный пример будет выглядеть так:
Процедура ЗаполнитьКодИНаименованиеСтраны()
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтранаСсылка, "Код, Наименование");
КодСтраны = ЗначенияРеквизитов.Код;
НаименованиеСтраны = ЗначенияРеквизитов.Наименование;
КонецПроцедуры
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник