|
УниверсальныйПоискОбъектов макет ФорматПоиска | ☑ | ||
---|---|---|---|---|
0
Наська72
14.05.13
✎
08:17
|
Добрый день!
Пытаюсь реализовать полнотекстовый поиск для самописного документа. ДокументСписок на форме над ним поиск (в табличном поле есть колонки не из документ список). Прописала в общем модуле МодульПоискаВДанных свою функцию: Функция СоздатьОбъектПоискаДанныхДляЗаявокНаТП(Знач ЭлементФормыЗначениеОтбора, Знач ОбъектФормыСписок, Знач СписокДанных) Экспорт мПоискОбъектовВСпискахДанных = Обработки.ПоискОбъектовВСпискахДанных.Создать(); мПоискОбъектовВСпискахДанных.ТипОбъектовПоиска = Тип("ДокументСсылка.ТП_Заявка"); мПоискОбъектовВСпискахДанных.ПрефиксНазванияСпискаДляСохранения = "мСписокЗначенийОтбораЗаявкиНаТП."; мПоискОбъектовВСпискахДанных.СписокБыстрыхОтборовПоРеквизитам = Новый СписокЗначений(); мПоискОбъектовВСпискахДанных.СписокБыстрыхОтборовПоРеквизитам.Добавить("Номер", "Номер"); мПоискОбъектовВСпискахДанных.СписокБыстрыхОтборовПоРеквизитам.Добавить("Контрагент", "Заявитель"); мПоискОбъектовВСпискахДанных.СписокБыстрыхОтборовПоРеквизитам.Добавить("ОбъектПодключения", "ОбъектПодключения"); мПоискОбъектовВСпискахДанных.СписокБыстрыхОтборовПоРеквизитам.Добавить("Договор", "Номер договора"); мПоискОбъектовВСпискахДанных.СписокБыстрыхОтборовПоРеквизитам.Добавить("АдресМестонахождения", "АдресМестонахождения"); мПоискОбъектовВСпискахДанных.СписокБыстрыхОтборовПоРеквизитам.Добавить("НомерТЗ", "Номер ТЗ"); мПоискОбъектовВСпискахДанных.ОбъектФормыЗначениеОтбораСпискаДанных = ЭлементФормыЗначениеОтбора; мПоискОбъектовВСпискахДанных.ОбъектФормыСписок = ОбъектФормыСписок; мПоискОбъектовВСпискахДанных.Список = СписокДанных; мПоискОбъектовВСпискахДанных.ПрефиксПутиСохраненияНастроекПользователя = "Документы.ТП_Заявка.ФормаСписка"; Возврат мПоискОбъектовВСпискахДанных; КонецФункции Работают все отборы кроме "Все видимые поля". Выдается ошибка: "{Обработка.УниверсальныйПоискОбъектов.МодульОбъекта(263)}: Значение не является значением объектного типа (ПолноеИмя) ТаблицаОбъекта = МетаданныеОбъекта.ПолноеИмя();" МетаданныеОбъекта почему то неопределено. Он пытается слепить два слова "Документы" и "ТП_Заявка", и не может получить метаданные (название верное). Кто подскажет, полнотекстовый поиск по документам (а не справочникам) возможен? |
|||
1
Наська72
14.05.13
✎
08:23
|
Тип объекта поиска прописан в макете Формат поиска в УниверсальномПоискеОбъектов так "Документы.ТП_Заявка"
|
|||
2
cw014
14.05.13
✎
08:28
|
Может убрать слово "Документы"???
|
|||
3
Наська72
14.05.13
✎
08:28
|
Также попробовала "Документ" и "ДокументСписок" ничего не помогает.(
Реально поиск по документам? |
|||
4
cw014
14.05.13
✎
08:32
|
Функция ПолучитьМетаданныеОбъекта(Знач ИмяТипаОбъекта, Знач ИмяОбъекта) Экспорт
ВрегИмяТипаОбъекта = Врег(ИмяТипаОбъекта); Если ВрегИмяТипаОбъекта = "РЕГИСТРСВЕДЕНИЙ" Тогда МетаданныеОбъекта = Метаданные.НайтиПоТипу(Тип("РЕГИСТРСВЕДЕНИЙНаборЗаписей." + ИмяОбъекта)); Иначе // тут могут быть и табличные части, это надо отдельно отрабатывать... ПозицияТочки = Найти(ИмяОбъекта, "."); // отчка есть - значит точно табличная часть Если ПозицияТочки > 0 Тогда ПрефиксПоиска = "ТабличнаяЧасть"; СтрокаТипаОбъекта = ""; СтрокаИмениОбъекта = ""; ВыделитьСтрокиПоРазделителю(ИмяОбъекта, ".", СтрокаТипаОбъекта, СтрокаИмениОбъекта); ИмяОбъектаПоиска = СтрокаТипаОбъекта + ".ТабличныеЧасти." + СтрокаИмениОбъекта; Иначе ПрефиксПоиска = "Ссылка"; ИмяОбъектаПоиска = ИмяОбъекта; КонецЕсли; Если ВрегИмяТипаОбъекта = "СПРАВОЧНИКИ" Тогда МетаданныеОбъекта = Метаданные.НайтиПоТипу(Тип("Справочник" + ПрефиксПоиска + "." + ИмяОбъекта)); ИначеЕсли ВрегИмяТипаОбъекта = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда МетаданныеОбъекта = Метаданные.НайтиПоТипу(Тип("ПланВидовХарактеристик" + ПрефиксПоиска + "." + ИмяОбъекта)); // ========== Вот это добавь ИначеЕсли ВрегИмяТипаОбъекта = "ДОКУМЕНТ" Тогда МетаданныеОбъекта = Метаданные.НайтиПоТипу(Тип("Документ" + ПрефиксПоиска + "." + ИмяОбъекта)); // ========== Вот это добавь КонецЕсли; КонецЕсли; Возврат МетаданныеОбъекта; КонецФункции |
|||
5
Галахад
гуру
14.05.13
✎
08:33
|
Пример:
РазмерПорции = 50; СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок("", РазмерПорции); СписокПоиска.ПолучатьОписание = Ложь; МассивМД = Новый Массив(); МассивМД.Добавить(Метаданные.Документы.КассовыйЧек); СписокПоиска.ОбластьПоиска = МассивМД; СписокПоиска.СтрокаПоиска = СтрокаПоиска; СписокПоиска.РазмерПорции = РазмерПорции; СписокПоиска.ПерваяЧасть(); Для Индекс=0 По СписокПоиска.Количество()-1 Цикл элемент = СписокПоиска.Получить(индекс); Сообщить(элемент.Представление); КонецЦикла; |
|||
6
Наська72
14.05.13
✎
08:48
|
Всё прописала. Не ругается, но и не ищет =(
|
|||
7
cw014
14.05.13
✎
08:48
|
Ну потому что дальше по коду смотреть надо, что и как он ищет. Там еще могут быть "заглушки" на справочник, регистр сведений и план видов характеристик
|
|||
8
Наська72
14.05.13
✎
08:58
|
А может быть реализовать запросом через видимые колонки? Как думаете, это будет дольше?
|
|||
9
cw014
14.05.13
✎
08:59
|
(8) Не знаю даже
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |