Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1434 раз
Рейтинг: 0
В общем возникла необходимость в процедуре поиска строки таблицы значений по нескольким параметрам. В 8-ке то всё элементарно, но в 7.7 с этим проблема. НайтиЗначение() находит первую строку где находится искомое значение. Может у кого-то есть готовая функция которая ищет строку по нескольким параметрам.
Если у кого-то есть, поделитесь пожалуйста.
З.ы. я когда-то пользовался такой, но с 7.7 уже не работаю несколько лет, вот и подзабыл немного, а нужно как обычно вчера.
Группа: Пользователи
Сообщений: 62
Спасибо сказали: 14 раз
Рейтинг: 0
как вариант при формировании ТаблицыЗначений добавить ключевое поле (тбл.Поле1 + "$$$"+тбл.Поле2) - потом искать по нему. ну или 1с++ - индексированная таблица
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1434 раз
Рейтинг: 0
Сильно громоздко (в плане выполнения) Допустим у меня цикл из 100000 записей и нужно найти в таблице значений (допустим имеет тоже 100000 записей) строку по параметрам. Каждый раз перебирать тз напряжно. Думал может есть более оптимальное решение
или строки вставлять не в конец, а в нужное место в тз, тогда тз будет упорядоченной и искать можно половинным делением, хотя с ключевым полем должно работать очень даже неплохо.
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник. ЗиУП
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0
Цитата(g789 @ 23.08.11, 13:44)
как вариант при формировании ТаблицыЗначений добавить ключевое поле (тбл.Поле1 + "$$$"+тбл.Поле2) - потом искать по нему. ну или 1с++ - индексированная таблица
Тоже пользовалась подобным алгоритмом, только это называла индексными полями, что не принципиально. Работает достаточно быстро при поиске, но теряется время при формировании подобных индексов. Кстати, разделитель значений в индексном поле совсем необязателен.
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0
Цитата(g789 @ 23.08.11, 14:44)
как вариант при формировании ТаблицыЗначений добавить ключевое поле (тбл.Поле1 + "$$$"+тбл.Поле2) - потом искать по нему. ну или 1с++ - индексированная таблица
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1434 раз
Рейтинг: 0
Можете растолковать пример, а то что то я до сих пор не в теме Я например получаю запросам данные и выгружаю их в таблицу значения для того что бы в дальнейшем из этой таблицы получать необходимые мне данные. Вот например есть таблица со 100000 строками: _____ Колонка1 | Колонка2 | Колонка3 | Колонка4 | Колонка5|
1____ Значение1|Значение2|Значение3|Значение4|Значение5| 2____ Значение1|Значение2|Значение3|Значение4|Значение5| и т.д. Затем программно добавляется индексная колонка Колонка6. Насколько я понял для каждой строки в её значение добавляется что то типа ""+ Значение1+"$$$"+Значение2+"$$$"+Значение3+"$$$"+Значение4+"$$$"+Значение5.
Как потом осуществить поиск строки по значениям (Значение3 И Значение4) или (Значение1 и Значение3 и Значение5)
1____ Значение1|Значение2|Значение3|Значение4|Значение5| 2____ Значение1|Значение2|Значение3|Значение4|Значение5| и т.д. Затем программно добавляется индексная колонка Колонка6. Насколько я понял для каждой строки в её значение добавляется что то типа ""+ Значение1+"$$$"+Значение2+"$$$"+Значение3+"$$$"+Значение4+"$$$"+Значение5.
Как потом осуществить поиск строки по значениям (Значение3 И Значение4) или (Значение1 и Значение3 и Значение5)
Насколько я понимаю, поиск можно осуществить, если заранее известно, по каким колонкам будете искать.
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1434 раз
Рейтинг: 0
Нет, 1С++ не подходит, нужно решение без внешних компонент. Ну собственно повторюсь Индексные колонки подходят, просто нужно заранее подготовить все необходимые колонки.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!