1c 7.7 Как можно ускорить поиск?
Показывать по
10
20
40
сообщений
- 1
- 2
13.10.2010
13:10
#1
"Как ускорить поиск?
Собственно код:
Процедура Поиск1()
ШКод=ВРЕГ(СокрЛП(ПКод));
ШНаименование=ВРЕГ(СокрЛП(ПНаименование));
Спр=СоздатьОбъект("Справочник.Номенклатура");
Если ВыбГруппа.Выбран()=1 Тогда
Спр.ИспользоватьРодителя(ВыбГруппа);
КонецЕсли;
Спр.ПорядокКодов();
Спр.ВыбратьЭлементы();
Найдено=0;
Пока Спр.ПолучитьЭлемент()=1 Цикл
Если Спр.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Если ШКод<>"""" Тогда
Если Найти(ВРЕГ(СокрЛП(Спр.Код)),ШКод)>0 Тогда
ОК=1;
Иначе
ОК=0;
КонецЕсли;
КонецЕсли;
Если (ШНаименование<>"""") и (ОК=1) Тогда
Если Найти(ВРЕГ(СокрЛП(Спр.Наименование)),ШНаименование)>0 Тогда
ОК=1;
Иначе
ОК=0;
КонецЕсли;
КонецЕсли;
Если ОК=1 Тогда
Найдено=Найдено+1;
Добавить(Спр.ТекущийЭлемент());
КонецЕсли;
КонецЦикла;
Таб.КоличествоСтрок(ТЗ.КоличествоСтрок());
Таб.Заполнить(ТЗ);
КонецПроцедуры "
Собственно код:
Процедура Поиск1()
ШКод=ВРЕГ(СокрЛП(ПКод));
ШНаименование=ВРЕГ(СокрЛП(ПНаименование));
Спр=СоздатьОбъект("Справочник.Номенклатура");
Если ВыбГруппа.Выбран()=1 Тогда
Спр.ИспользоватьРодителя(ВыбГруппа);
КонецЕсли;
Спр.ПорядокКодов();
Спр.ВыбратьЭлементы();
Найдено=0;
Пока Спр.ПолучитьЭлемент()=1 Цикл
Если Спр.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Если ШКод<>"""" Тогда
Если Найти(ВРЕГ(СокрЛП(Спр.Код)),ШКод)>0 Тогда
ОК=1;
Иначе
ОК=0;
КонецЕсли;
КонецЕсли;
Если (ШНаименование<>"""") и (ОК=1) Тогда
Если Найти(ВРЕГ(СокрЛП(Спр.Наименование)),ШНаименование)>0 Тогда
ОК=1;
Иначе
ОК=0;
КонецЕсли;
КонецЕсли;
Если ОК=1 Тогда
Найдено=Найдено+1;
Добавить(Спр.ТекущийЭлемент());
КонецЕсли;
КонецЦикла;
Таб.КоличествоСтрок(ТЗ.КоличествоСтрок());
Таб.Заполнить(ТЗ);
КонецПроцедуры "
13.10.2010
13:27
#3
да впринципе)
но как в запросе условие "Если Найти(ВРЕГ(СокрЛП(Спр.Наименование)),ШНаименование)>0 Тогда" написать ?
но как в запросе условие "Если Найти(ВРЕГ(СокрЛП(Спр.Наименование)),ШНаименование)>0 Тогда" написать ?
13.10.2010
14:25
#7
> Оптимизировать процедуру поиска
тип значения Кода справочника : текст или число ?
тип значения Кода справочника : текст или число ?
13.10.2010
15:12
#9
> число
а что в этой конфигурации нет контроля уникальности кодов в справочнике Номенклатура ?
что за конфа
а что в этой конфигурации нет контроля уникальности кодов в справочнике Номенклатура ?
что за конфа
13.10.2010
15:13
#10
"написал запрос:
ТекстЗапроса="
|Спр=Справочник.Номенклатура.ТекущийЭлемент;
|Группировка Спр без групп Упорядочить по Спр.Код;
|Условие(Спр в ВыбГруппа);
|Условие((ШКод в Спр.Код)и(ПустаяСтрока(Спр.Код)=0));
|Условие((ШНаименование в Спр.Наименование)и(ПустаяСтрока(Спр.Наименование)=0));"
такой запрос выполняется в два раза медленее чем процедура выше((((((("
ТекстЗапроса="
|Спр=Справочник.Номенклатура.ТекущийЭлемент;
|Группировка Спр без групп Упорядочить по Спр.Код;
|Условие(Спр в ВыбГруппа);
|Условие((ШКод в Спр.Код)и(ПустаяСтрока(Спр.Код)=0));
|Условие((ШНаименование в Спр.Наименование)и(ПустаяСтрока(Спр.Наименование)=0));"
такой запрос выполняется в два раза медленее чем процедура выше((((((("
- 1
- 2
Читают тему
(гостей: 1)