Имя: Пароль:
1C
 
Получить объект конфигурации по 1С ссылке
☑
0 Tvolod
 
02.11.26
✎
11:43
Подскажите, пожалуйста, есть ли нормальный, простой, человеческий (не БСП!) способ получения объекта в дереве конфигурации (не объекта БД!) по ссылке, которую 1С генерит при вставке в макет HTML документа ссылки на объект?

Это когда в макет через меню "Элементы / Ссылка" вставляем ссылку, например на справочник "Номенклатура", или форму, или отчёт.
В коде документа ссылка имеет вид:

../id48ab453f-8206-442e-8360-0cd34f87f601/91337169-a39b-4142-a837-a71c898a18cd

При отображении в интерфейсе ссылка преобразуется к абсолютному адресу такого вида:

v8config://v8cfgHelp/mdobject/id48ab453f-8206-442e-8360-0cd34f87f601/91337169-a39b-4142-a837-a71c898a18cd

Судя по всему, первый GUID объекта, второй типа объекта (Справочники, Отчёты и т.п.).

Нашёл кучу документации, как это сделать, но ни один способ не работает. БСП не пробовал - рамки проекта не позволяют.
1 Волшебник
 
02.11.26
✎
11:47
Ссылка.Метаданные()
2 Tvolod
 
02.11.26
✎
12:01
(1) Поясните, пожалуйста, что есть ссылка в данном случае?
Получаю ссылку на кликнутую ссылку через ДанныеСобытия.Element. Соответственно:
ДанныеСобытия.Element.Метаданные() = Неопределено!
3 Garykom
 
гуру
02.11.26
✎
12:14
Сообщить(ТипЗнч(ДанныеСобытия));
Сообщить(ТипЗнч(ДанныеСобытия.Element));

?
4 Tvolod
 
02.11.26
✎
12:19
(3) ДанныеСобытия:: Фиксированная структура
ДанныеСобытия.Element:: Внешний объект

Обрабатываю событие в ПолеHTMLДокументаПриНажатии()
5 Garykom
 
гуру
02.11.26
✎
12:22
В платформе 1С:Предприятие при работе с элементом Поле HTML-документа в клиентском событии ПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка) свойство ДанныеСобытия.Element имеет тип ВнешнийОбъект.

Этот тип представляет собой COM/DOM-объект веб-браузера (встроенного WebKit/Blink или IE, в зависимости от режима и платформы). Прямо из кода 1С к нему нельзя применить привычные встроенные функции, но с ним можно работать через механизм «точки» по правилам языка JavaScript (DOM API).

https://share.google/aimode/x0QU18GeiU0CsKn3w
6 Garykom
 
гуру
02.11.26
✎
12:23
(1) Может пора вернуть ТелепатБот уже на новых LLM технологиях?
7 Tvolod
 
02.11.26
✎
12:24
(5) Ну, это и ежу понятно. :) Ну я получил через ДанныеСобытия.Element.href ссылку такого вида, как в заглавном топике (тип строка).
Вот и спрашиваю, что с этой стороковой ссылкой можно сделать, чтобы выйти на сам объект.
8 Garykom
 
гуру
02.11.26
✎
12:26
(7) Никак
Куда ты собрался выходить по данным из встроенного браузера?

Делай некую связь через типы метаданных и УИДы
А еще лучше наймите уже программиста, за деньги
9 Tvolod
 
02.11.26
✎
12:31
Человек! Я и спрашиваю в ПЕРВОМ топике, как сделать эту связь через УИДы!
10 Tvolod
 
02.11.26
✎
12:31
*сообщении, не топике. :) Почему здесь нет правки?
11 Garykom
 
гуру
02.11.26
✎
12:37
(9) Эмм.
Ответ "как сделать" сильно выходит за рамки бесплатного общения в свое удовольствие на форуме...
12 Garykom
 
гуру
02.11.26
✎
12:37
(10) Все есть. Но заслужить надо.
13 Волшебник
 
02.11.26
✎
12:38
Получить ссылку из навигационной ссылки
https://fastcode.im/Templates/8612/poluchit-ssylku-iz-navigacionnoj-ssylki
14 Garykom
 
гуру
02.11.26
✎
12:43
Для начала освой отладчик в Конфигураторе 1С
Поставь точку останова и сделай там "Вычислить выражение" на своем "ДанныеСобытия.Element"
Далее посмотри что раскрывается, что показывает внутри

Вероятно придется иметь некую табличку/соответствие для связи, где ее взять и как заполнить отдельный вопрос
15 Garykom
 
гуру
02.11.26
✎
12:44
(13) Тут интересный вопрос что он открывает внутри ПолеHTML
Подозреваю заканчивает перетаскивание
В этом случае все сильно проще, нам пофиг что, главное куда!
16 Garykom
 
гуру
02.11.26
✎
12:46
Хотя если таскает нечто внутри ПолеHTML тут да, легкая проблема
17 Ботаник Гарден Меран
 
02.11.26
✎
12:56
А = Справочники.Контрагенты.ЧтоТоПредопределенное;

ЗначениеВСтрокуВнутр(А)

ЗначениеВСтрокуВнутр(ТипЗнч(А))

{"#",9f6206b2-1ed6-423c-9b08-fd4978930c49,1152:9f71b30ebaf66ef84ef137cd2c385047}

{"T",9f6206b2-1ed6-423c-9b08-fd4978930c49}

Не так и сложно собрать соответствие uuid и типов.
18 Tvolod
 
02.11.26
✎
13:57
(13), (17) Спасибо, но это всё про объекты в БД (записи). Ссылка же содержит GUID объектов конфигурации (форм или отчётов, например).

(14) Разумеется, делал. Разумеется, нет там нужных свойств. Ссылка в HTML-документе и не должна их иметь, см. (5)

(15) Ну написано же всё в первом сообщении. Есть поле HTML-документа. В него загружаем, например макет, в котором одна строчка "Ссылка на форму". Ссылка имеет вид, указанный в первом сообщении.

Впрочем, судя по всему, это не ссылка на объект, а ссылка на справку для данного объекта. :(( Хотя если ставишь ссылку на макет, то данный макет и открывается...
19 unenu
 
02.11.26
✎
14:37
(18) "v8config://v8cfgHelp/mdobject/i..." - адрес страницы в базе знаний.

ее можно преобразовать в навигационную, теоретически, попробуйте:

Ссылка в макете не работает через web-клиент
20 Garykom
 
гуру
02.11.26
✎
16:27
(18) >Есть поле HTML-документа. В него загружаем, например макет, в котором одна строчка "Ссылка на форму". Ссылка имеет вид, указанный в первом сообщении.

Можно спросить цель всего этого?
21 Garykom
 
гуру
02.11.26
✎
16:28
Резюме и рекомендация
Поскольку готового простого метода одной строкой (МетаданныеПоСсылке()) для таких внутренних ссылок платформа не предоставляет, а использование БСП невозможно:

Самым рабочим вариантом без сторонних библиотек является построение собственного кэша (словаря соответствий) при старте системы, который связывает GUID из ссылок с реальными объектами метаданных.

Альтернативный вариант — пересмотреть архитектуру задачи: если нужно открывать формы или отчёты из HTML, передавать в href кастомные параметры (например, имя объекта в виде строки cmd:OpenMetadata?name=Справочник.Номенклатура), которые легко парсятся в коде 1С без зависимости от внутренних GUID платформы.