- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
Функция ПредопределенныйЭлемент(Знач ПолноеИмяПредопределенного) Экспорт
ИмяПредопределенного = ВРег(ПолноеИмяПредопределенного);
Точка = СтрНайти(ИмяПредопределенного, ".");
ИмяКоллекции = Лев(ИмяПредопределенного, Точка - 1);
ИмяПредопределенного = Сред(ИмяПредопределенного, Точка + 1);
Точка = СтрНайти(ИмяПредопределенного, ".");
ИмяТаблицы = Лев(ИмяПредопределенного, Точка - 1);
ИмяПредопределенного = Сред(ИмяПредопределенного, Точка + 1);
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 Ссылка ИЗ &ПолноеИмяТаблицы ГДЕ ИмяПредопределенныхДанных = &ИмяПредопределенного";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПолноеИмяТаблицы", ИмяКоллекции + "." + ИмяТаблицы);
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ИмяПредопределенного", ИмяПредопределенного);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Возврат Результат.Выгрузить()[0].Ссылка;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Видимо, таким образом разработчики стандартных подсистем решили бороться с ошибкой платформы, когда при попытке получения некорректного значения падает рабочий процесс.
Клин-клином, говнокод-говнокодом.