Имя: Пароль:
1C
1С v8
Обязателен ли индекс для реквизита, по которому используется НайтиПоРеквизиту()?
0 1398
 
23.01.19
10:18
Платформа 8.3.9.2170. Случайно наткнулся на то, что метод НайтиПоРеквизиту() реально работает для реквизита справочника, у которого свойство Индексировать = "Не индексировать".

Не поверил своим глазам, проверил ещё раз. Именно так.

В синтаксис помощнике нет ни слова о том, что обязательно должен быть индекс. Уверен, что раньше такие слова там были.

Пока не рухнули все мои стереотипы и привычки, начиная аж со времен 1С 7.7 - могут ли коллеги подсказать, возможно ли подобное? Или, может быть, индекс по такому реквизиту может быть задан как-то неявно? (у него, например, свойство "Полнотекстовый поиск" = Использовать).
1 FIXXXL
 
23.01.19
10:30
используй Запрос, будет меньше вопрос :)
2 Numerus Mikhail
 
23.01.19
10:33
Первый раз слышу, что реквизит должен быть проиндексирован.
Хотя, возможно, это было в древних версиях
3 singlych
 
23.01.19
10:34
(0) "Уверен, что раньше такие слова там были."
Эти слова есть, но не для НайтиПоРеквизиту(), а для Выбрать().
4 Eiffil123
 
23.01.19
10:37
В 7.7 такое было. А в 8.х - не обязательно.
5 palsergeich
 
23.01.19
10:48
Полнотекстовый поиск - отдельный механизм и в запросах и НайтиПоРпквизиту не используется.
Зависит от частоты запросов. Условно если один раз в день - смысла нет, расходы на поддержание индекса будут.
Если. Часто - то надо смотреть будет ли он использоваться, оптимизатор иногда чудит. Но с высокой долей вероятности при найти по реквизиту будет и при большом количестве запросов - рекомендую включить индекс.
6 Злопчинский
 
23.01.19
11:22
ну, если логически рассуждать (хотя какая на! в 8-ке логика).
если проставлен индекс - используется.
не проставлен индекс - будет тупо "перебором"
7 ДенисЧ
 
23.01.19
11:29
(6) ПРичём тут логика 1с?
Просто select uuid from _SC* where _FLD* = p1
и скуль сам уже подумает, как ему лучше. При маленьком справочнике ему иногда проще сделать table scan, даже если есть индекс...
8 Aleksandr N
 
23.01.19
11:29
(6) Вы увязли в матрице. Точнее в семерке.