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