Каталог решений - Быстрый поиск в справочниках по наименованию, с использованием svcsvc.dll

Быстрый поиск в справочниках по наименованию, с использованием svcsvc.dll

Быстрый поиск в справочниках по наименованию, с использованием svcsvc.dll

В наличии

По аналогии с http://infostart.ru/public/14286/, недавно узнал что в svcsvc.dll несколько обновился функционал, в частности был добавлен метод AddString().
В прилагаемом коде показан запрос, реализованный методами ВК 1SQlite, т.е. только для DBF.
Это только пример. Т.е. если например у справочника отсутствует поле "Наименование", то скорее всего будет ошибка.
Тем не менее критика приветствуется)))
Необходимые ВК: 1SQlite, FORMEX, svcsvc.dll (отсюда: http://www.1cpp.ru/forum/YaBB.pl?num=1373266553).

p.s.
Спасибо огромное уважаемому ADirks за все эти прекрасные плюшки, и помощь в их освоении)))

Категория:

Описание

//Все вставляем в глобальный модуль
//======================================================================
Функция гв_ПоискЭлементаСправочникаВСписке_svc(ВидСправочника, Владелец = "", Элем = "") Экспорт
    

    //Эту процедуру удобно использовать и в дальнейшем, например для отчетов        
    База = СоздатьОбъект("SQLiteBase");

    База.Открыть(":memory:");
    Запрос = База.НовыйЗапрос();
    ТекстЗапроса = "
    |SELECT
    |    спр.DESCR||'|'||спр.CODE as [Поиск],
    |    спр.ID as [Ид :Справочник."
+ ВидСправочника +"]
    |FROM
    |    [Справочник."
+ ВидСправочника +"] as спр
    |WHERE
    |    1=1
    |ORDER BY спр.DESCR
    |"
;


    Условие = "
    |    спр.ISMARK <> '*'
    |"
;

    
    Если Метаданные.Справочник(ВидСправочника).КоличествоУровней > 1 Тогда
        Условие = Условие + "
        |    AND
        |    спр.ISFOLDER = 2
        |"
;

    КонецЕсли;
    
    Если ПустоеЗначение(Владелец) = 0 Тогда
        Условие = Условие + "
        |    AND
        |    спр.PARENTEXT = :Владелец
        |"
;

        Запрос.Подставлять("Владелец", Владелец);
    КонецЕсли;
    
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "1=1", Условие);
    
    тз = Запрос.ВыполнитьЗапрос(ТекстЗапроса);    

    свц = CreateObject("svcsvc.Service");

    тз.выбратьСТроки();
    Пока тз.ПолучитьСтроку() = 1 Цикл
        свц.AddString(тз.Поиск);

    КонецЦикла;

    рез = свц.FilterValue("", 1, "");

    свц = "";
    Если ПустаяСтрока(рез) = 0 Тогда
        нс = 0;

        тз.НайтиЗначение(рез, нс, "Поиск");
        Элем = тз.ПолучитьЗначение (нс, "Ид");
        Возврат 1;
    Иначе
        Возврат 0;

    КонецЕсли;
    
            
КонецФункции // гв_ПоискЭлементаСправочникаВСписке_svc        
//======================================================================
Процедура ПриНажатииКнопкиКлавиатуры(Конт, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО)

    Если Альт = 1 Тогда
        Если КодКлавиши = 116 Тогда // ALT-F5
        ФСО = 0;

        РасширениеФормы = СоздатьОбъект("РасширениеФормы");
        Попытка
            РасширениеФормы.УстановитьФорму(КонтФормы.Форма);

            ПолныйТипОбъекта = РасширениеФормы.ПолныйТипОбъекта();
            Если Найти(ПолныйТипОбъекта, "ФормаСписка") > 0 Тогда
                Владелец = "";

                Если Метаданные.Справочник(КонтФормы.Вид()).Владелец.Выбран() = 1 Тогда
                    Владелец = КонтФормы.Владелец;

                КонецЕсли;
                ДлинаНаименования = Метаданные.Справочник(КонтФормы.Вид()).ДлинаНаименования;
                ДлинаКода = Метаданные.Справочник(КонтФормы.Вид()).ДлинаКода;
                
                Если (ДлинаНаименования > 0) и (ДлинаКода > 0) Тогда
                    Элем = "";

                    Если гв_ПоискЭлементаСправочникаВСписке_svc(КонтФормы.Вид(), Владелец, Элем) = 1 Тогда
                        КонтФормы.АктивизироватьОбъект(Элем);

                        Попытка
                            КонтФормы.Активизировать("Наименование", 0);    

                        Исключение
                        КонецПопытки;

                    КонецЕсли;    
                Иначе
                    Сообщить("В справочнике вида """+ КонтФормы.Вид() +""" быстрый поиск невозможен.");

                КонецЕсли;
            КонецЕсли;
        Исключение
        КонецПопытки;

            
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
 
has been added to your cart:
Оформление заказа