|
Работа с HTML | ☑ | ||
---|---|---|---|---|
0
АЛьФ
07.09.11
✎
10:53
|
Есть в конфиге формирование лога в виде документа HTML. Хотелось бы формировать в этом документе ссылки на объекты (документы и справочники), чтобы по клику на ссылке открывалась форма этого объекта. Начал мутить через обработку события onclick, но что-то как-то кривовато и слишком громоздко получается. Если ли какой-то простой способ это дело реализовать?
|
|||
1
Либерал
07.09.11
✎
11:02
|
посмотри рарус црм, там встречается кое где
|
|||
2
Андрюха
07.09.11
✎
11:04
|
(0) Если html то по-ходу только OnClick, а как в гипертексте публикуется ссылка на объект конфигурации?
|
|||
3
Fragster
гуру
07.09.11
✎
11:04
|
так ведь можно сразу ссылку на объект вставлять, специально сформированную, ЕМНИП
|
|||
4
АЛьФ
07.09.11
✎
11:04
|
2(1) Нет возможности посмотреть.
|
|||
5
АЛьФ
07.09.11
✎
11:07
|
Сейчас в документ вставляю такую ссылку:
"<a href='Документы[""" + ВидДокумента + """].ПолучитьСсылку(Новый УникальныйИдентификатор(""" + НовыйДокумент.Ссылка.УникальныйИдентификатор() + """))'>" + стрДокумент + "</a>" Потом в онклик через Выполнить(pEvtObj.srcElement.pathname) восстанавливаю ссылку на объект и получаю от него форму, которую и открываю. Неужели нет метода проще? |
|||
6
Либерал
07.09.11
✎
11:08
|
(4) вот, посмотрел рарус.
не очень красиво, но работает: Процедура CRM_ПолеHTMLДокументаOnClick(pEvtObj) Экспорт СтандартнаяОбработка = Ложь; Узел = pEvtObj.srcElement; href = ""; id = ""; Пока Истина Цикл Попытка ИмяЦели = Узел.tagName Исключение Прервать; КонецПопытки; Если ИмяЦели = "A" Тогда Попытка href = Узел.href; Исключение КонецПопытки; Попытка id = Узел.id; Исключение КонецПопытки; Прервать; КонецЕсли; Узел = Узел.parentElement; КонецЦикла; Если НЕ ПустаяСтрока(href) Тогда Если СтрЧислоВхождений(НРег(href), "about:") > 0 Тогда НайденаСсылка = Истина; Если Найти(href, "about:blank") = 0 Тогда Копияhref = СтрЗаменить(href, "about:", ""); Иначе Копияhref = СтрЗаменить(href, "about:blank", ""); КонецЕсли; НайденаСсылка = Ложь; СсылкаНаОбъект = Неопределено; Если Найти(id, "*") = 1 Тогда РазделительТипаИВида = Найти(id, "."); РазделительИдентификатора = Найти(id, ";"); Если РазделительТипаИВида > 0 И РазделительИдентификатора Тогда ТипОбъекта = Сред(id, 2, РазделительТипаИВида - 2); ВидОбъекта = Сред(id, РазделительТипаИВида + 1, РазделительИдентификатора - РазделительТипаИВида - 1); ИдентификаторОбъекта = Сред(id, РазделительИдентификатора + 1); КонецЕсли; Попытка UUID = Новый УникальныйИдентификатор(ИдентификаторОбъекта); Если ТипОбъекта = "Справочник" Тогда СсылкаНаОбъект = Справочники[ВидОбъекта].ПолучитьСсылку(UUID); ИначеЕсли ТипОбъекта = "Документ" Тогда СсылкаНаОбъект = Документы[ВидОбъекта].ПолучитьСсылку(UUID); КонецЕсли; НайденаСсылка = Истина; Исключение КонецПопытки; КонецЕсли; Если Не ЗначениеЗаполнено(СсылкаНаОбъект) ИЛИ НЕ НайденаСсылка Тогда Если Найти(href, "www") = 0 И Найти(href, "http") = 0 Тогда СтандартнаяОбработка = Истина; Иначе Попытка Если Найти(id, "file:///") = 1 Тогда ЗапуститьПриложение(СокрЛП(id)); Иначе ЗапуститьПриложение(СокрЛП(Копияhref)); КонецЕсли; Исключение ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки()); КонецПопытки; КонецЕсли; Иначе СсылкаНаОбъект.ПолучитьФорму().Открыть(); КонецЕсли; Иначе Попытка Если Найти(id, "file:///") = 1 Тогда ЗапуститьПриложение(СокрЛП(id)); Иначе ЗапуститьПриложение(СокрЛП(href)); КонецЕсли; Исключение ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки()); КонецПопытки; КонецЕсли; Если НЕ СтандартнаяОбработка Тогда pEvtObj.returnValue = Ложь; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
7
АЛьФ
07.09.11
✎
11:09
|
2(6) Хм... Ну да, примерно по похожему пути я и побрел.
|
|||
8
АЛьФ
07.09.11
✎
11:09
|
Всем спасибо.
|
|||
9
Либерал
07.09.11
✎
11:10
|
ну да, то же как у тебя
|
|||
10
Либерал
07.09.11
✎
11:37
|
кстати, кажется в 8.2 видел я какие-то спец методы получить/отработать ссылку на объект базы?..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |