Имя: Пароль:
1C
1С v8
Такси. Права, RLS и полнотекстовый поиск в динамическом списке.
0 fisher
 
15.05.15
12:00
У пользователя почему-то не работает полнотекстовый поиск в журнале документа. В смысле вбиваешь - ничего не находит. RLS в его ролях тоже есть.
Права на чтение в основном. На документ журнала - чтение (c RLS), просмотр и ввод по строке.
Под полными правами всё ОК. В какую сторону копать? Как понять, что его не устраивает?
1 fisher
 
15.05.15
12:03
Причем чтение Ссылка,Номер,Дата - для всех документов. На прочие поля - RLS. Но я уже дал ему права, чтобы RLS пропускало все объекты - без толку. Может, и не в нём дело...
2 fisher
 
15.05.15
12:13
Причем в расширенном поиске по части строки ищет для конкретного поля. Для этого же тоже вроде полнотекстовый поиск используется?
3 ssh2006
 
15.05.15
12:17
В профайлере может посмотреть что при поиске происходит
4 fisher
 
15.05.15
12:23
(3) Дык а смысл? БД всё что нужно возвращает. А полнотекстовый индекс вообще не в базе.
5 ssh2006
 
15.05.15
12:26
не думаю что там полнотекстовый поиск.
Я бы посмотрел
6 fisher
 
15.05.15
12:35
Я не представляю, на что там смотреть и что искать. Может, вечерком от безысходности с бокалом коньяка.
7 fisher
 
15.05.15
12:42
Пока понятно, что проблема точно связана с RLS. Убрал ограничение RLS в этой роли у пользователя - полнотекстовый поиск заработал.
Тут дело осложняется еще и тем, что релиз 8.3.5 у меня довольно старый и живет это хозяйство на постгри. Но я просмотрел историю багфиксов - ничего похожего не проскакивало.
8 Новый участник
 
15.05.15
12:44
Полнотекстовый поиск ищет по индексам, наверное. Запусти регламент.
9 ssh2006
 
15.05.15
12:45
(7) Поиск который по кнопке Найти в УФ?
10 ssh2006
 
15.05.15
12:48
пример что получается при таком поиске по строковой колонке

WHERE (T1._Description LIKE P1 ESCAPE ''/'')'P1 nvarchar(4000)',N'%Ластик Koh-I-Noor 6541 52х19х7мм%'
11 fisher
 
15.05.15
12:52
(9) Не просто в УФ, а именно в Такси. Там оно без кнопки. Просто поле поиска которое ищет сразу при тайпинге через полнотекстовый индекс (сразу во всех колонках динамического списка).
12 fisher
 
15.05.15
12:53
Предельно упростил условие RLS и прописал его без шаблона - без толку :(
13 fisher
 
15.05.15
13:22
Разобрался. Даже не знаю как сказать...
В общем, работает всё. Но не сразу :)
У меня в этой форме при создании на сервере устанавливается отбор по периоду "Этот месяц". Если его у пользователя удалить или поменять на любой другой или потом на этот же - всё начинает работать. Причем если просто добавить второй элемент отбора - по прежнему не работает. Но если потом удалить новый элемент отбора - работает. Но если что-то набрано в поле поиска, то начинает работать уже при добавлении второго элемента отбора.
Сплошное шаманство, в общем. А главное - вообще непонятно как это связано с наличием/отсутствием RLS у роли. Я даже просто "ГДЕ ИСТИНА" ставил - та же самая фигня. Удаляешь RLS - нормально всё.
14 fisher
 
15.05.15
13:26
В общем, окончательно проблема формируются так - полнотекстовый поиск может некорректно отрабатывать сразу после открытия формы при наличии у формы предустановленных отборов и RLS у пользователя. Лечится изменением состава отбора, после чего отпускает.
15 fisher
 
15.05.15
13:42
Черт. Надеялся, поможет перенос установки отбора из ПриСоздании() в ПриОткрытии() - не помогло :(
16 fisher
 
18.05.15
12:21
По итогу всё проще и грустнее одновременно.
При наличии RLS полнотекстовый поиск срабатывает ТОЛЬКО в момент изменения отбора в списке. А в процессе набора возвращает пустой результат.
17 fisher
 
18.05.15
12:24
У кого-то есть под рукой типовая на Такси с включенным RLS на документы? Проверить это дело. Может в релизе дело или в линухе или где-то есть какая-то волшебная галка...
18 DmitrO
 
18.05.15
12:31
(17)думаю, что уже пора озвучить релиз платформы
19 fisher
 
18.05.15
12:32
Да старенький у меня релиз, признавался я уже.
8.3.5.1186
Но быстро протестить на другом не получится, да и в истории исправленных ошибок ничего подобного нет.
20 fisher
 
18.05.15
12:35
До кучи - PostgreSQL 9.2.4 на Ubuntu Server 14.04
Программист всегда исправляет последнюю ошибку.