![]() |
![]() |
![]() |
|
8.2 Отсутствует отображение для типа 'ЭлементСпискаПолнотекстовогоПоиска' | ☑ | ||
---|---|---|---|---|
0
Нууф-Нууф
26.02.10
✎
12:36
|
выполняю сквозной пример по книге радченко "Предприятие 8.2 Практическое пособие разработчика".
дошел до обработки полнотекстового поиска. вот модуль формы: &НаКлиенте Процедура Поиск(Команда) Искать(0); КонецПроцедуры &НаКлиенте Процедура ПредыдущаяПорция(Команда) Искать(-1); КонецПроцедуры &НаКлиенте Процедура СледующаяПорция(Команда) Искать(1); КонецПроцедуры &НаКлиенте Процедура Искать(Направление) Если ПустаяСтрока(ПоисковоеВыражение) Тогда Предупреждение("Не задана строка поиска"); возврат; конецЕсли; ИскатьСервер(направление); КонецПроцедуры &НаСервере Процедура ИскатьСервер(Направление) экспорт СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок(); СписокПоиска.СтрокаПоиска = ПоисковоеВыражение; Если Направление=0 тогда СписокПоиска.ПерваяЧасть(); иначеЕсли Направление=-1 тогда СписокПоиска.ПредыдущаяЧасть(ТекущаяПозиция); иначеЕсли Направление=1 тогда СписокПоиска.СледующаяЧасть(ТекущаяПозиция); конецЕсли; РезультатыПоиска.Очистить(); Для каждого Результат из СписокПоиска цикл РезультатыПоиска.Добавить(Результат); конеццикла; РезультатПоиска = СписокПоиска.ПолучитьОтображение(ВидОтображенияПолнотекстовогоПоиска.HTMLТекст); ТекущаяПозиция = СписокПоиска.НачальнаяПозиция(); ПолноеКоличество = СписокПоиска.ПолноеКоличество(); Если СписокПоиска.Количество()<>0 тогда СообщениеОРезультате = "Показаны "+ Строка(ТекущаяПозиция+1)+" - " +Строка(ТекущаяПозиция+СписокПоиска.Количество()) +" из "+Строка(ПолноеКоличество); Элементы.СледующаяПорция.Доступность = ((ПолноеКоличество-ТекущаяПозиция)>СписокПоиска.Количество()); Элементы.ПредыдущаяПорция.Доступность = (ТекущаяПозиция>0); иначе СообщениеОРезультате = "Не найдено"; Элементы.СледующаяПорция.Доступность = ложь; Элементы.ПредыдущаяПорция.Доступность = ложь; конецЕсли; КонецПроцедуры &НаКлиенте Процедура РезультатПоискаПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка) ЭлементHTML = ДанныеСобытия.Event.srcElement; Если (ЭлементHTML.id = "FullTextSearchListItem") Тогда // Получить имя файла (номер строки списка поиска), содержащегося в гиперссылке НомерВСписке = Число(ЭлементHTML.nameProp); // Получить строку списка поиска по номеру ВыбраннаяСтрока = РезультатыПоиска[НомерВСписке].Значение; // Открыть форму найденного объекта ОткрытьЗначение(ВыбраннаяСтрока); СтандартнаяОбработка = Ложь; КонецЕсли; КонецПроцедуры если задать в строке поиска текст которого заведомо в базе нет - то в после выполнения РезультатПоиска = СписокПоиска.ПолучитьОтображение(ВидОтображенияПолнотекстовогоПоиска.HTMLТекст); в РезультатПоиска - будет пустой HTML документ. и все отработает нормально. НО. если завести в строку поиска текст, который заведомо есть. и поиск отработает нормально, то в РезультатПоиска - будет HTML документ с результатом. и при выходе из процедуры ИСКАТЬСЕРВЕР() у меня вылетает ошибка {Отчет.ПоискДанных.Форма.ФормаОтчета.Форма(23)}: Ошибка при вызове метода контекста (ИскатьСервер) ИскатьСервер(направление); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'v': форма: Элемент имя: {http://v8.1c.ru/8.2/uobjects}v по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'value': форма: Элемент имя: {http://v8.1c.ru/8.1/data/core}value по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ЭлементСпискаПолнотекстовогоПоиска' в 8ке еще новичок, но чувствую что он с сервера на клиента не может чего-то передать. а вот что именно и почему не может - не знаю. |
|||
1
Нууф-Нууф
26.02.10
✎
12:40
|
ап
|
|||
2
Нууф-Нууф
26.02.10
✎
12:48
|
оп
|
|||
3
Mort
26.02.10
✎
12:48
|
РезультатПоиска - реквизит формы? Какого типа?
|
|||
4
Нууф-Нууф
26.02.10
✎
12:48
|
Поле HTML документа
|
|||
5
Нууф-Нууф
26.02.10
✎
12:50
|
элемент формы "РезультатПоиска". Вид "Поле HTML документа". Путь к данным "РезультатПоиска"
РезультатПоиска - реквизит формы с типом строка |
|||
6
Нууф-Нууф
26.02.10
✎
12:51
|
поидее в процедуре в РеквизитФормы с типом строка запихивается строка содержащая текст страницы HTML...
может дело на самом деле не в этом реквизите |
|||
7
Mort
26.02.10
✎
12:51
|
(4) Имелось ввиду строка?
|
|||
8
Нууф-Нууф
26.02.10
✎
12:52
|
(7) аха
|
|||
9
Нууф-Нууф
26.02.10
✎
12:55
|
апп
|
|||
10
Нууф-Нууф
26.02.10
✎
12:58
|
ну где же вы спецы по 82?
|
|||
11
Нууф-Нууф
26.02.10
✎
13:10
|
оп оп оп
|
|||
12
Mort
26.02.10
✎
13:23
|
Да, чо тут. Попытка преобразования происходит, судя по всему при передаче контекста (то бишь формы) обратно с сервера на клиент. Ищи отладчиком где в форме появился этот тип.
|
|||
13
Нууф-Нууф
26.02.10
✎
13:25
|
(12) т.е. в этой процедуре где-то создался элемент формы и при отправке формы обратно на клиента он ее не может найти, так как на форме нет такого элемента?
|
|||
14
Mort
26.02.10
✎
13:33
|
(13) Да не элемент формы. Переменная контекста грубо говоря. Например если в структуру-реквизит формы на сервере поместить менеджер справочника результат будет аналогичный.
|
|||
15
Mort
26.02.10
✎
13:34
|
РезультатыПоиска - это что?
|
|||
16
Нууф-Нууф
26.02.10
✎
13:37
|
(14) ТОЧНО!!!!! так и есть! Я передавал на форму то чего на форме быть не может. а именно
РезультатыПоиска.Очистить(); Для каждого Результат из СписокПоиска цикл РезультатыПоиска.Добавить(Результат); конеццикла; я должен был совать в список значений Результат.Значение, а я совал Результат с типом "ЭлементСпискаПолнотекстовогоПоиска". поэтому при передачи этого элемента в форму выходила ошибка! СПАСИБО! |
|||
17
Нууф-Нууф
26.02.10
✎
13:39
|
вот что значит переходить на клиент-серверное мышление
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |