|
УФ Отбор в динамическом списке |
☑ |
0
ЛучшийПрограммер1С
27.07.23
✎
12:50
|
Программно устанавливаю отбор в динамическом списке.
Список.Отбор.Элементы.Очистить();
Если ЗначениеЗаполнено(НомерПартии) Тогда
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НомерПартии");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
ЧтоИскать = СтрЗаменить(НомерПартии, " ", Символы.НПП);
ЭлементОтбора.ПравоеЗначение = ЧтоИскать;
ЭлементОтбора.Использование = Истина;
КонецЕсли;
И ситуация такая. Если данных много, за два-три месяца, то поиск идёт только за последний месяц где-то.
Строка с нужным номером партии есть в списке. Но её не находит.
Скажем строка за май.
При выборке - параметрами задаётся период
- если выборка май-июль, то не находит.
- если же март-май, то находит.
|
|
1
ЛучшийПрограммер1С
27.07.23
✎
13:00
|
Я немного поэкспериментировал. Суть в том, что она ищет записи нужные, но очень долго.
Если они в начале списка, то находит быстро, а если далеко то очень долго, то есть несколько минут или даже часов.
Как бы ускорить это?
|
|
2
ЛучшийПрограммер1С
27.07.23
✎
13:17
|
Ну наверное не годится тогда в запросе делать Представление для числа в виде строки, нужно тогда в отдельном поле делать строку и её брать потом в запрос.
|
|
3
ЛучшийПрограммер1С
27.07.23
✎
13:29
|
причём как-то интересно, на каком-то количестве первых строк быстро находит, а потом тормозит
|
|
4
shuhard
27.07.23
✎
13:31
|
(3) кэши - наше всё =)
|
|
5
ЛучшийПрограммер1С
27.07.23
✎
13:40
|
(4) и как мне кэш увеличить?
|
|
6
ЛучшийПрограммер1С
27.07.23
✎
14:27
|
Нашёл решение. Вместо использования приведения к строке оставил число. Получилось что в колонке или число или строка.
Отбор поменял на поиск в списке.
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НомерПартии");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ЧтоИскать = СтрЗаменить(НомерПартии, " ", Символы.НПП);
ИлиИскать = Число(ЧтоИскать);
СписокЗнач = Новый Массив;
СписокЗнач.Добавить(ЧтоИскать);
СписокЗнач.Добавить(ИлиИскать);
ЭлементОтбора.ПравоеЗначение = СписокЗнач;
ЭлементОтбора.Использование = Истина;
|
|