1c 7.7 Как можно ускорить поиск?

Новая тема
Показывать по 10 20 40 сообщений
"Как ускорить поиск?

Собственно код:
Процедура Поиск1()
ШКод=ВРЕГ(СокрЛП(ПКод));
ШНаименование=ВРЕГ(СокрЛП(ПНаименование));
 
Спр=СоздатьОбъект("Справочник.Номенклатура");
Если ВыбГруппа.Выбран()=1 Тогда
 Спр.ИспользоватьРодителя(ВыбГруппа);  
КонецЕсли;
Спр.ПорядокКодов();
Спр.ВыбратьЭлементы();
Найдено=0;
 
Пока Спр.ПолучитьЭлемент()=1 Цикл
 Если Спр.ЭтоГруппа()=1 Тогда
  Продолжить;
 КонецЕсли;                            
       
 Если ШКод<>"""" Тогда
   Если Найти(ВРЕГ(СокрЛП(Спр.Код)),ШКод)>0 Тогда
  ОК=1;
 Иначе
  ОК=0;
 КонецЕсли;
  КонецЕсли;
 
Если (ШНаименование<>"""") и (ОК=1) Тогда
  Если Найти(ВРЕГ(СокрЛП(Спр.Наименование)),ШНаименование)>0 Тогда
ОК=1;
Иначе  
ОК=0;
КонецЕсли;
КонецЕсли;        
             
Если ОК=1 Тогда                                      
Найдено=Найдено+1;
Добавить(Спр.ТекущийЭлемент());
КонецЕсли;
 
КонецЦикла;                      
 
Таб.КоличествоСтрок(ТЗ.КоличествоСтрок());
Таб.Заполнить(ТЗ);
 
КонецПроцедуры "
С понятием "Запросы" знаком?
да впринципе)
но как в запросе условие "Если Найти(ВРЕГ(СокрЛП(Спр.Наименование)),ШНаименование)>0 Тогда" написать ?
Насколько я помню, в запросе можно вызывать внешние функции.
а что нужно сделать ?
Оптимизировать процедуру поиска
> Оптимизировать процедуру поиска

тип значения Кода справочника : текст или число ?
число
> число

а что в этой конфигурации нет контроля уникальности кодов в справочнике Номенклатура ?
что за конфа
"написал запрос:
ТекстЗапроса="
|Спр=Справочник.Номенклатура.ТекущийЭлемент;
|Группировка Спр без групп Упорядочить по Спр.Код;
|Условие(Спр в ВыбГруппа);
|Условие((ШКод в Спр.Код)и(ПустаяСтрока(Спр.Код)=0));
|Условие((ШНаименование в Спр.Наименование)и(ПустаяСтрока(Спр.Наименование)=0));"

такой запрос выполняется в два раза медленее чем процедура выше((((((("
Читают тему
(гостей: 1)

Быстрый переход