kb-personal/src/content/docs/knowledge-base/Типовые/ERP/Общего назначения УХ/Ссылка на объект из навигационной ссылки.md
silverbook 1c3469395c new
2025-06-26 07:57:15 +05:00

2.7 KiB
Raw Blame History

title
title
Ссылка на объект из навигационной ссылки

Пример вызова

Ссылка = ОбщегоНазначенияУХ.СсылкаНаОбъектИзНавигационнойСсылки(СокрЛП(НавигационнаяСсылка));

Реализация (если не УХ)

// По тексту навигационной ссылки ТекстСсылкиВход возвращает ссылку на объект
// информационной базы. В случае неудачи преобразования возвращает Неопределено.
Функция СсылкаНаОбъектИзНавигационнойСсылки(ТекстСсылкиВход) Экспорт
	РезультатФункции = Неопределено;
	Если Лев(ТекстСсылкиВход, 4) = "e1c:" ИЛИ Лев(ТекстСсылкиВход, 4) = "http" Тогда
		Попытка
			ПозицияОтносительнойСсылки = СтрНайти(ТекстСсылкиВход, "e1cib/data/");
			ТекстСсылкиОчищенный = Прав(ТекстСсылкиВход, СтрДлина(ТекстСсылкиВход) - ПозицияОтносительнойСсылки + 1);
			ПозицияПредставленияСсылки = СтрНайти(ТекстСсылкиОчищенный, "?ref=");
			ТипЭлементаСтрока   = Сред(ТекстСсылкиОчищенный, 12, ПозицияПредставленияСсылки - 12);
			ПустаяСсылкаЭлемента = ПредопределенноеЗначение(ТипЭлементаСтрока + ".ПустаяСсылка");
			ВнутрПредставлениеЭлемента = ЗначениеВСтрокуВнутр(ПустаяСсылкаЭлемента);
			ПозицияДвоеточия = СтрНайти(ВнутрПредставлениеЭлемента, ":");
			ЛеваяЧасть = Лев(ВнутрПредставлениеЭлемента, ПозицияДвоеточия);
			ПраваяЧасть = Сред(ТекстСсылкиОчищенный, ПозицияПредставленияСсылки + 5);
			НоваяСсылкаВнутр = ЛеваяЧасть + ПраваяЧасть + "}";
			РезультатФункции = ЗначениеИзСтрокиВнутр(НоваяСсылкаВнутр);
		Исключение
			РезультатФункции = Неопределено;
		КонецПопытки;
	Иначе
		РезультатФункции = Неопределено;
	КонецЕсли;
	Возврат РезультатФункции;
КонецФункции