helpf.pro
Регистрация

v8: Полнотекстовый поиск web-клиент

Gnost
06.07.2011 13:18Прочитано: 2723
На тонком клиенте поиск работает в штатном режиме, если запускать web-клиент. Поиск выдает результат, но при нажатии по гиперссылке возникает ошибка
"{Отчет.вПолнотекстовыйПоиск.Форма.ФормаОтчета.Форма(65)}: Поле объекта не обнаружено (srcElement)
ЭлементHTML = ДанныеСобытия.srcElement;"

Поиск организован по примеру из книги "1С Предприятие 8.2. Практическое пособие разработчика" (Радченко М. Г., 1С) [2009]
Изменено 06.07.11 14:20:53
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
06.07.2011 14:14Ответ № 1
(0) Gnost, покажи весь код
Gnost
06.07.2011 14:20Ответ № 2
Код
&НаКлиенте
Процедура РезультатПоискаПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
ЭлементHTML = ДанныеСобытия.Event.srcElement;
Если ЭлементHTML.id = "FullTextSearchListItem" Тогда
НомерВСписке = Число(ЭлементHTML.nameProp);
ВыбраннаяСтрока = РезультатыПоиска[НомерВСписке].Значение;
ОткрытьЗначение(ВыбраннаяСтрока);
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры

Изменено 06.07.11 14:21:11
E_Migachev
06.07.2011 15:53Ответ № 3
я так понимаю - у поля должно быть событие srcElement
а вообще надо бы посмотреть пример в книге *09
Изменено 07.07.11 09:33:28
Gnost
06.07.2011 16:05Ответ № 4
Вы вопрос не поняли ) У меня все работает на тонком клиенте. При попытке выполнить все тоже самое на web происходит ошибка(видимо алгоритмы событий там другие). Если знаете какие-либо источники о событиях в web отсавьте ссылки
UPD:
ЭлементHTML имеет тим COMОбъект, для web он точно не подходит. Какой тип должен быть?
Изменено 06.07.11 16:36:47
E_Migachev
06.07.2011 17:21Ответ № 5
(4) Gnost,а, походу догнал чего ты хочешь! )
Короче, srcElement поддерживается только в Internet Explorer, для других браузеров юзай target
E_Migachev
06.07.2011 17:32Ответ № 6
+(4) Объект event в JavaScript | Event window
Часто вместе с событием передаются данные, связанные с этим событием, например, при щелчке мышки по элементу Web-страницы передается указатель на этот элемент. Для того, чтобы программа могла получить доступ к этим данным, в JavaScript предусмотрен объект event, который является свойством объекта window. Тогда данные, которые передаются вместе с событием можно получить с помощью выражения window.event.свойство.

Приведем некоторые свойства объекта event:
* srcElement - возвращает ссылку на элемент (тэг) Web-страницы, вызвавший наступление события; (В Internet Explorer у объекта window.event есть свойство srcElement, в остальных браузерах, работающих по рекомендациям W3C, для этого используется event.target.)
* fromElement - возвращает ссылку на элемент Web-страницы, с которого переместился курсор мышки при наступлении события Mouseover или Mouseout;
* toElement - возвращает ссылку на элемент Web-страницы, на который помещен курсор мышки;
* type - возвращает имя события;
* returnValue - задает, будет ли выполняться действие по умолчанию (если true - будет, если false - нет);
* propertyValue - возвращает имя атрибута тэга или стиля свойства элемента Web-страницы, значение которого изменилось;
* button - возвращает номер нажатой кнопки мышки:
o 0 - ничего не было нажато;
o 1 - нажата левая кнопка;
o 2 - нажата правая кнопка;
o 3 - нажаты одновременно левая и правая кнопки;
o 4 - нажата средняя кнопка;
o 5 - нажаты одновременно левая и средняя кнопки;
o 6 - нажаты одновременно правая и средняя кнопки;
o 7 - нажаты одновременно все кнопки.
Gnost
06.07.2011 17:35Ответ № 7
Спасибо, я глянул как это реализованно в типовой и понял, что мыслю в корне не правильно!
Код 1C v 8.2 УП
 ЭлементHTML = ДанныеСобытия.Anchor;   

Далее происходит работа с URL весь код:
Код 1C v 8.2 УП
 	ЭлементHTML = ДанныеСобытия.Anchor;

Если ЭлементHTML = Неопределено Тогда
Возврат;
КонецЕсли;

Если (ЭлементHTML.id = "FullTextSearchListItem") Тогда
ЧастьURL = ЭлементHTML.pathName;
Позиция = СтроковыеФункцииКлиентСервер.НайтиСимволСКонца(ЧастьURL, "/");
Если Позиция <> 0 Тогда
ЧастьURL = Сред(ЧастьURL, Позиция + 1);
НомерВСписке = Число(ЧастьURL);
СтруктураРезультата = РезультатыПоиска[НомерВСписке].Значение;
ВыбраннаяСтрока = СтруктураРезультата.Значение;
МассивОбъектов = СтруктураРезультата.ЗначенияДляОткрытия;

Если МассивОбъектов.Количество() = 1 Тогда
ОткрытьЗначение(МассивОбъектов[0]);
ИначеЕсли МассивОбъектов.Количество() <> 0 Тогда
Список = Новый СписокЗначений;
Для Каждого ЭлементМассива Из МассивОбъектов Цикл
Список.Добавить(ЭлементМассива);
КонецЦикла;
ВыбранныйОбъект = ВыбратьИзСписка(Список, Элементы.HTMLТекст);
Если ВыбранныйОбъект <> Неопределено Тогда
ОткрытьЗначение(ВыбранныйОбъект.Значение);
КонецЕсли;
КонецЕсли;

КонецЕсли;
СтандартнаяОбработка = Ложь;
КонецЕсли;

Взято из "1С-документооборот"
Изменено 06.07.11 17:41:09
E_Migachev
06.07.2011 17:52Ответ № 8
(7) Gnost, просто в типовой сделали через anchor, потом еще и проверяют - тот ли анкор получили(, проще через target, но тут нужно писать проверку браузера, т.к. Если IE - то srcElement
Gnost
07.07.2011 09:23Ответ № 9
Спасибо большое за разъяснение событий! Это мне сильно помогло в понимании работы )
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.