Здравствуйте!
подскажите пожалуйтста, можно ли использовать возможности полнотекстового поиска mssql2012 в террасофт 3.4 ?
Или может быть есть идеи или готовые решения как это реализовать.
Нужно например в разделе Контакты искать полнотекстовым поиском контакты с определенными словами в описании. Т.е. допустим есть форма поиска и при введении первых букв слова или фразы, система находит совпадения по вхождению (и например выводит их в стандартном окне справочника).
Нравится
Здравствуйте!
Для организации полнотекстового поиска mssql2012 в Terrasoft 3.4 можете создать свой кастомный запрос который подключите в своем справочнике. Если у Вас уже настроен справочник, то можете добавить кастомное условие и использовать его для фильтрации.
Павел, спасибо!
а можно подробней про кастомное условие и использование его в фильтрации,
не совсем понял мысль
Приведу пример на Контрагентах.
Здравствуйте!
Приведу пример готового решения поиска.
1. В sql пишем функцию, которая выполняет поиск:
[sql]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create function [dbo].[tsf_GetContactIDsPr](@CONTAINSText nvarchar(255))
returns @Result table(ID uniqueidentifier)
as
begin
set @CONTAINSText = rtrim(ltrim(@CONTAINSText));
set @CONTAINSText = @CONTAINSText + '*';
set @CONTAINSText = '"' + @CONTAINSText + '"';
insert into @Result
select ID
FROM [dbo].[tbl_Contact] AS [tbl_ Contact]
WHERE (CONTAINS([tbl_ Contact].[Description], @CONTAINSText))
end
return
End
[/sql]
2. В Террасофт в sq_Contact добавляем пользовательский sql-фильтр

3. В фильтре прописываем вызов функции
[sql]
Exists
(
select *
from dbo.tsf_GetFileIDsCONTAINSVarious(:DescripWords) b
where b.ID = [tbl_Files].[ID]
)
[/sql]
4. Сохраняем изменения в сервисе.
5. Активируем фильтр
[javascript]
var DescripWords =edtSearch.Value; //поле поиска
if (!IsEmptyValue(DescripWords)) {
ApplyDatasetFilter(Dataset, DescripWordsFilters, DescripWords, true);
}
[/javascript]