#0
by TDI
необходимо найти строку в ТЗ, по заданным условиям, т.е. чтобы колонка1, колонка2, колонка3, колонка4....удовлетворяли некоторому условию... Простым перебором получается очень долго, в ТЗ 10000 строк... Через НайтиСтроку задаётся поиск только по одной колонке... Как ещё можно ?
#1
by GrayT
Давно была ветка по этому поводу, приводилось множество алгоритмов с замером производительности. В поиск.
#2
by Директор PR отдела
Отсортировать по колонке первого поиска. ННС=0; ТЗ.НайтиЗначение Выбрать значения с до пока ВыбЗанчение <> ТЗ.Значение или пока не совпадёт по всем параметрам.
#3
by Парижская фанера
Тогда уж не по колонке "первого поиска", а по колонке обладающей наибольшей селективностью.
#6
by Ангел-Хоронитель
создаешь 2 ТЗ, одна рабочая, вторая для поиска, заполняешь одинаково, причем одна колонка должна быть типа индексная (1,2,3,...). поиск проводишь по второй сортировкой и перебором. в первой для перехода пользуешься "индексом".
#8
by Директор PR отдела
А это так оптимальней, но не всегда полезно. Индексы тоже не всегда требуется делать :-)
#10
by Мулька
Вообще не делаю. Делаю колонку поиска-Ключ, где ее значения это Кол1+Кол2+КолN. По ключу и ищу всегда
#14
by Ангел-Хоронитель
а первая, рабочая, юзером сортируется, как ему нужно, а со второй я уже и извращаюсь.
#21
by Ангел-Хоронитель
ну , блин.... сделал юзер себе ТЗ, отсортировал, как ему нужно. потом решил значение найти, а ему сортировка сбилась....
#24
by Ангел-Хоронитель
ну я сталкивался с вариантом в 7000 строк и 8 колонок.... все не предусмотреть :)
#26
by Simod
Можно воспользоваться таким алгоритмом: 1. В ТЗ производится поиск по перечню колонок соответствующих значений и определяется максимальное значение строки ("максимальная глубина"); 2. Осуществляется перебор ТЗ с "максимальной глубины" до конца таблицы с проверкой значений поиска. Порядок проверки значений следует проводить от наиболее часто изменяющегося к наименее (т.е. лучше "Номенклатура, Фирма", чем "Фирма, Номенклатура"). Из достоинств следует отметить отсутствие необходимости сортировки, т.к. поиск в ТЗ после сортировки замедляется. Эффективен для ТЗ большого размера. Лучше использовать ТЗ.ПолучитьСтрокуПоНомеру, чем ТЗ.ПолучитьЗначение (немного быстрее).
#27
by romix
А откуда берется такая большая тз? Не выборкой ли по документам? Может, проще поюзать для этой же задачи регистр?
#28
by smaharbA
Если условие точное те Колонка1==ВыбЗнач1 и Колонка2==ВыбЗнач2 то все просче и быстрее
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как быстро очистить 1с 7.7. (dbf)от данных документов и регистров?
- Как найти строку в ТЗ по нескольким колонкам?
- Создание ТЗ с вложенными ТЗ на основании плоской ТЗ методом группир. по колонкам
- Как быстро найти максимальное значение кода справочника?
- Как быстро найти элемент справочника по значению Пер. реквизита?
- ТЗ.Свернуть для ТЗ в ТЗ
- Как в базе dbf найти по коду нужную строку?
- КАк при нажатии на строку в ТЗ добавить эту строку в Табличную часть докуме
- Как найти точку диаграммы ганта? (метода Найти() нет)
- КАК у элемента справочника быстро найти самого верхнего родителя?
- Скопировать одну строку ТЗ в другую строку ТЗ
- Есть массив с колонкой остаток, как найти строку массива со занчением 0?
В этой группе 1С
- Почему в оборотке по счету не отображается подразделение
- УПП / Бух - декларация по транспортному налогу - автозаполнение есть?
- Кто-нибудь пытался использовать Анализатор метаданных
- Unijourn.ert
- ТиС: Ошибка в партионном учете (ведет к пересортице)
- Закрытие 20 на 43 счет
- ПриИзмененииСодержимогоОбласти()?
- Ошибка создания информационной базы: Microsoft OleDB Provider for sqlserver
- В выборку попадают не все документы... (v7)
- Как сложить все данные столбца табличной части?
- Запрос: выборка по двум видам документов
- Как открыть конфигурацию старой платформой, сохраненную в новой?
- как программно узнать в каких метаданных есть ссылка на указанный объект
- Отчет по правам пользователей. Как перебрать названия наборов прав?
- Расчет больничного для сдельщиков в Комплексной?
- Можно-ли Мозилу свернуть в трей?
- как объединить две ТЗ
- 1C+SQL
- Перепись населения 1С++
- Получить данные в 1С из Active Directory