|
v7: Как сделать цикл в справочнике после спр.НайтиПоРеквизиту(...) | ☑ | ||
---|---|---|---|---|
0
IgorTrifonov
12.08.11
✎
16:47
|
Всем Здрастьте!
Как бы перебрать записи после найденной спр = СоздатьОбъект("Справочник.Детали"); // буква [m] - латинская M спр.ПорядокРеквизита("для_поиска"); Если спр.НайтиПоРеквизиту("для_поиска",деталька, 1) = 1 Тогда Пока спр.для_поиска = деталька Цикл // тут что-то делаю КонецЦикла; КонецЕсли; использовать спр.ВыбратьЭлементыПоРеквизиту() боюсь будет очень медленно т.к. в спр-ке миллион записей т.е. справочник выглядит так: деталь состав 12345 абвгд 12345 ежзик 12345 лмноп 66789 что-то другое 66789 ещё что-то подскажите пожалуйста |
|||
1
ДенисЧ
12.08.11
✎
16:48
|
запрос некошерен?
|
|||
2
andrewks
12.08.11
✎
16:48
|
"Как бы перебрать записи после найденной "
а что, по-твоему, "после"? |
|||
3
vtolga
12.08.11
✎
16:51
|
ПорядокРеквизита(<?>);
Синтаксис: ПорядокРеквизита(<ИмяРеквизита>) Назначение: Установить порядок выборки элементов справочника по возрастанию значения реквизита. Параметры: <ИмяРеквизита> - строка с именем реквизита, по возрастанию значений которого выполняется выборка. Замечание: Метод может использоваться только для реквизита с установленным признаком Сортировка. Метод вызывается до вызова метода ВыбратьЭлементы. Метод можно использовать только для объектов, созданных функцией СоздатьОбъект. Подробнее см. в документации, глава 'Работа со Справочниками' |
|||
4
vtolga
12.08.11
✎
16:52
|
(2) если (3), то "После"- это именно то, что нужно
|
|||
5
IgorTrifonov
12.08.11
✎
16:52
|
надо находить много деталей и узнавать их состав
т.е. я нахожу в спр-ке деталь 12345 и должен прочитать сотав этой детали, т.е абвгд ежзик и т.д. но деталей искать буду много |
|||
6
Mashinist
12.08.11
✎
16:53
|
НайтиПоРеквизиту нормально работает
реквизит для этого должен быть индексирован Ну запрос 1С всяко медленнее будет Прямой запрос - самое оно Но это если религия позволяет ВК использовать |
|||
7
IgorTrifonov
12.08.11
✎
16:53
|
поэтому фильтровать ВыбратьЭлементыПоРеквизиту каждый раз справочник с миллионом записей будет дико медленно
|
|||
8
vtolga
12.08.11
✎
16:55
|
Ну и не фильтруй. Найди и бери те, что "После"
|
|||
9
IgorTrifonov
12.08.11
✎
16:56
|
а как перебирать после найденной
|
|||
10
IgorTrifonov
12.08.11
✎
16:57
|
если бы это был файл dbf. я бы написал спр.Следущая()
|
|||
11
FN
12.08.11
✎
17:09
|
(7) Проверил?
Вообще-то ВыбратьЭлементыПоРеквизиту достаточно шустро работает, но если мало скорости используй прямой запрос. |
|||
12
FN
12.08.11
✎
17:10
|
(11)+ прямой запрос - http://infostart.ru/public/20120/
|
|||
13
Ёпрст
12.08.11
✎
17:11
|
(7) быстро, даже на большем количестве элементов.
|
|||
14
IgorTrifonov
12.08.11
✎
17:15
|
В общем вы все правы, видимо ВыбратьЭлементыПоРеквизиту() не фильтрует, а делает то же и я хотел
- найти по индексу (отсортированному полю) - и далее перемещаться пока значения индексированного поля совпадает с искомым Спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |