Универсальный поиск

Выводится сверху личных кабинетов форма поиска. При вводе параметров вызывается специальная хранимая процедура и отображаются результаты поиска по разным объектам системы.

 

В Настройках системы в настройке rolesForShortSearch можно задать роли, у которых должна выводиться форма поиска.

Формат процедуры falcon_search

CREATE PROCEDURE [dbo].[falcon_search]
   @q nvarchar(256), -- @q - это текст запроса
   @typeID int, -- @typeID - не используется
   @page nvarchar(256) = '', -- @page - страница на которой вызван запрос
   @username nvarchar(256)
AS
BEGIN
        -- структура таблицы задает выходной результат, его важно соблюдать
	CREATE TABLE dbo.#result (id int, [text] nvarchar(max), [desc] nvarchar(max),[type] nvarchar(256),
	[date] date)

	create table dbo.#roles (role nvarchar(256))

	-- получаем роли пользователя
	insert into #roles
	select [role]from dbo.sec_getUserRoles(@username)


        /* для админа добавляем в результатирующую
           таблицу найденные результаты по типам */

	if(select count(*) from #roles where [role]='admin')>0
	begin
    	insert into #result
		select instanceID,
			' '+
                         iif(as_en_entityInstances.statusID in (60,61,62), 'Клиент',
                         'Лид')+' ' +shortname +  '',
			'',
			'',
			getdate()
		from crm_clients
        inner join ctr_contragents on crm_clients.contragentID = ctr_contragents.id
        inner join as_en_entityInstances  on as_en_entityInstances.id =
        crm_clients.instanceID
         where ((isnull(shortname, '') + isnull(fullname, '') + isnull([description],
               '') + isnull(username, '')) like '%'+@q+'%')
            or ((select phone1 from ctr_contacts where contragentID =
               ctr_contragents.id) like '%'+@q+'%')
            or ((select phone2 from ctr_contacts where contragentID =
               ctr_contragents.id) like '%'+@q+'%')
            or ((select email from ctr_contacts where contragentID =
               ctr_contragents.id) like '%'+@q+'%')
            or ((select skype from ctr_contacts where contragentID =
               ctr_contragents.id) like '%'+@q+'%')


	select * from #result
	drop table #result -- не забываем удалить таблицу
END

Если необходима дополнительная логика по поиску - прописываем ее всю в данной процедуре - сразу для всех ролей.

Платформа Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства

Бесплатное обучение разработке на Falcon Space

Вы можете разрабатывать самостоятельно или сотрудничать с нами в плане веб-разработки на платформе Falcon Space.
Примечание