Имя: Пароль:
1C
 
Вопрос по индексам оборотного регистра накопления.
0 H A D G E H O G s
 
19.10.25
11:58
Собственно, типовой алгоритм ввода реализации на основании заказа в УТ11.5. Вызывает процедуру
Документы.РеализацияТоваровУслуг.ЗаполнитьПоОстаткамЗаказов()
внутри нее вызывается процедура
ПолучитьРезультатЗапросаПоОстаткамЗаказов()

внутри которой все сводится к простому запросу

ВЫБРАТЬ
    РаспоряженияОбороты.Распоряжение КАК ЗаказКлиента,
    РаспоряженияОбороты.Номенклатура КАК Номенклатура,
    РаспоряженияОбороты.Характеристика КАК Характеристика,
    РаспоряженияОбороты.КодСтроки КАК КодСтроки,
    РаспоряженияОбороты.Склад КАК Склад,
    РаспоряженияОбороты.Серия КАК Серия,
    РаспоряженияОбороты.КОформлениюОборот КАК КОформлению,
    РаспоряженияОбороты.СуммаОборот КАК Сумма
ИЗ
    РегистрНакопления.РаспоряженияНаОтгрузку.Обороты(, , , Распоряжение =&Заказ) КАК РаспоряженияОбороты


И этот запрос читает 1 млн строк данных, хоть измерение Распоряжение - первое и индексировано.

Лезем на ИТС иии, видим
Регистр накопления
Таблица оборотов

[ОРРХ | ОРНР1 +] Период + Измерение1 + ... + ИзмерениеN + [DimHash] + [Splitter] (Кластерный)

[ОРРХ | ОРНР1 +] Измерение + Период


То есть, для условия без периода, по первому измерению, кластерный индекс использоваться не будет, а больше индексов для первого измерения и нет.

Передвинув Распоряжение на 2 позицию - получил использование индекса и чтение 12 строк (по количеству строк распоряжения)

Дичь же или есть скрытый смысл?
1 H A D G E H O G s
 
19.10.25
12:09
Написал на партнерку, посмотрим, че скажут
2 Волшебник
 
19.10.25
12:41
А может завести регистр остатков?
3 H A D G E H O G s
 
19.10.25
12:44
(2) Это кусок типовой 1С. Всем не заведешь.
Ну и разрабы типовой надеялись, что проиндексирует, установив признак у измерения "Индексировать", но разрабы платформы не оправдали ожиданий.
Просчитались, но кто!?
4 Волшебник
 
19.10.25
12:47
(3) Подумаешь, типовой... Идеал что ли?
5 H A D G E H O G s
 
19.10.25
12:49
(4) Лучшее, что есть.
6 Волшебник
 
19.10.25
13:25
(5) Ну не надо...
7 d4rkmesa
 
19.10.25
18:43
(3) Тут и платформа, и регистр новый (появившийся в 2.5.18 вроде), и сама процедура заполнения ТЧ - тогда еще не определились как лучше.

PS: Вроде уже исправились в 2.5.24, там тоже передвинули измерение на 2-ю позицию, на 1-й новое измерение с перечислением.
8 H A D G E H O G s
 
20.10.25
17:46
Пожелание записали.
9 Fragster
 
гуру
20.10.25
18:02
(8) а пожелание не использовать регистры оборотов там, где нужны регистры остатков, записали?

а то название функции ПолучитьРезультатЗапросаПоОстаткамЗаказов() да и сам текст запроса как бы намекают
10 H A D G E H O G s
 
20.10.25
18:03
(9) Антон, ты не в ту сторону воюешь.
11 Garykom
 
гуру
20.10.25
18:07
Больные люди с излишним использованием виртуальных таблиц
12 breezee
 
21.10.25
09:22
Прикол еще в том что когда > < условия - то следующие индексы не используются. А в оборотном РН первое поле дата и там как раз дата > и дата <.
Вроде агрегаты должны такое лечить, но я не пробовал
13 rsv
 
21.10.25
09:28
(0) что покажет план если просто сумму взять из линейной таблички регистра ? Судя по коду типовых - тьма обращений к табличкам  аля  сумма и group by без использования виртуальных ( даже как то не по сертификатовски )
14 Сергиус
 
22.10.25
21:01
(13)Возможно в тестируемых условиях так работает быстрее..
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой