Столкнулся с проблемой получения значения вложенных реквизитов при отсутствии прав на промежуточный реквизит.
Например: ЗаказПокупателя.ДоговорКонтрагента.ОсновнойМенеджер.Подразделение выдаст ошибку, если нет права на чтение справочника Пользователи (ОсновнойМенеджер).
При выполнении данной функции из привилегированного общего модуля данная проблема обходится.
Функция ПолучитьЗначениеРеквизитаУниверсальная(ЗначСсылка,ЗначТекстРеквизитов) Экспорт
//Генерируем строку для выполнения
Результат = Неопределено;
ТекстРезультат = "Результат = ЗначСсылка";
МассивРеквизитов = СтрРазделить(ЗначТекстРеквизитов,".");
Для каждого Элемент Из МассивРеквизитов Цикл
ТекстРезультат = ТекстРезультат + "[""" + Элемент + """]";
КонецЦикла;
Попытка
Выполнить(ТекстРезультат);
Исключение
КонецПопытки;
Возврат Результат;
КонецФункции
Пример использования:
Значение = ПолучитьЗначениеРеквизитаУниверсальная(ЗаказПокупателя,"ДоговорКонтрагента.ОсновнойМенеджер.Подразделение")
Проверено на следующих конфигурациях и релизах:
- Управление производственным предприятием, редакция 1.3, релизы 1.3.247.2