Имя: Пароль:
1C
 
Пользовательский отбор на форме списка
0 1Dam
 
naïve
16.12.24
12:03
При работе с формой списка документа у пользователя очень долго работает отбор по полю. Без отбора формируется быстро ~3 сек. В базе настроен стандартный RLS, у пользователя ограниченный доступ к этому документу. С полными правами проблем не наблюдается.
Я делал:
Обновление статистик
Очистка КЭШа, пользовательского и процедурного
Реиндексация таблиц базы данных
Уменьшение прав доступа к этому документу: у него было несколько ролей с различными условиями rls, я пробовал оставлять одно. В ограничении указано
#ПоНаборамЗначений( "Документ.бит_ЗаявкаНаРасходованиеСредств","","","")
В результате время вывода сократилось с 25 сек до 10.

Долгий вывод списка наблюдается только когда ставлю отбор по определенному элементу. То есть "Реквизит" = "Ссылка1", если "Реквизит" = "Ссылка2", то выводится быстро.

Основная база Бит.Строительство (БП 3.0)
1 DrShad
 
16.12.24
12:07
продолжайте держать нас в курсе
2 Волшебник
 
16.12.24
12:28
(0) По какому полю?
3 1Dam
 
naïve
16.12.24
12:53
(2) По полю справочника бит_СтатусыОбъектов
4 Волшебник
 
16.12.24
12:54
(3) Откуда берётся значение поля? Есть ли индекс по этому полю?
5 1Dam
 
naïve
16.12.24
12:57
(4) Это ресурс регистра, индексируется
6 Волшебник
 
16.12.24
12:57
(5) Покажите запрос динамического списка. Проверьте, что в регистре индексируется измерение.
7 1Dam
 
naïve
16.12.24
13:00
(6) ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Документ.Ссылка КАК Ссылка,
    Документ.ПометкаУдаления КАК ПометкаУдаления,
    Документ.Номер КАК Номер,
    Документ.Дата КАК Дата,
    Документ.Проведен КАК Проведен,
    Документ.РучнаяКорректировка КАК РучнаяКорректировка,
    Документ.ВидОперации КАК ВидОперации,
    Документ.ДокументОснование КАК ДокументОснование,
    Документ.Организация КАК Организация,
    Документ.ТипЗаявки КАК ТипЗаявки,
    Документ.ФормаОплаты КАК ФормаОплаты,
    Документ.ЭтоКазначейство КАК ЭтоКазначейство,
    Документ.НеВключатьВПлатежныйКалендарь КАК НеВключатьВПлатежныйКалендарь,
    Документ.СверхБюджета КАК СверхБюджета,
    Документ.ДатаРасхода КАК ДатаРасхода,
    Документ.СуммаВключаетНДС КАК СуммаВключаетНДС,
    Документ.ВалютаДокумента КАК ВалютаДокумента,
    Документ.КурсДокумента КАК КурсДокумента,
    Документ.КратностьДокумента КАК КратностьДокумента,
    Документ.СтавкаНДС КАК СтавкаНДС,
    Документ.Сумма КАК Сумма,
    Документ.НДС КАК НДС,
    Документ.СуммаРегл КАК СуммаРегл,
    Документ.НДСРегл КАК НДСРегл,
    Документ.СуммаУпр КАК СуммаУпр,
    Документ.НДСУпр КАК НДСУпр,
    Документ.СуммаВзаиморасчеты КАК СуммаВзаиморасчеты,
    Документ.НДСВзаиморасчеты КАК НДСВзаиморасчеты,
    Документ.Сценарий КАК Сценарий,
    Документ.СтатьяОборотов КАК СтатьяОборотов,
    Документ.ЦФО КАК ЦФО,
    Документ.Проект КАК Проект,
    Документ.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
    Документ.НазначениеПлатежа КАК НазначениеПлатежа,
    Документ.НазначениеПлатежаУпр КАК НазначениеПлатежаУпр,
    Документ.Контрагент КАК Контрагент,
    Документ.ДоговорКонтрагента КАК ДоговорКонтрагента,
    Документ.Ответственный КАК Ответственный,
    Документ.Комментарий КАК Комментарий,
    Документ.ФизическоеЛицо КАК ФизическоеЛицо,
    Документ.Важность КАК Важность,
    Документ.СуммаДокумента КАК СуммаДокумента,
    Документ.Аналитика_1 КАК Аналитика_1,
    Документ.Аналитика_2 КАК Аналитика_2,
    Документ.Аналитика_3 КАК Аналитика_3,
    Документ.Аналитика_4 КАК Аналитика_4,
    Документ.Касса КАК Касса,
    Документ.Исполнитель КАК Исполнитель,
    Документ.ДатаПлатежаКрайняя КАК ДатаПлатежаКрайняя,
    Документ.МоментВремени КАК МоментВремени,
    ЕСТЬNULL(СтатусыОбъектов.Статус, ЗНАЧЕНИЕ(Справочник.бит_СтатусыОбъектов.ПустаяСсылка)) КАК Статус,
    ЕСТЬNULL(СтатусыОбъектов.ДатаИзмененияСтатуса, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаИзмененияСтатуса,
    Документ.ТипПлатежа КАК ТипПлатежа,
    ВЫБОР
        КОГДА Документ.РучнаяКорректировка = ИСТИНА
            ТОГДА ВЫБОР
                    КОГДА Документ.ПометкаУдаления = ИСТИНА
                        ТОГДА 10
                    КОГДА Документ.Проведен = ЛОЖЬ
                        ТОГДА 9
                    ИНАЧЕ 8
                КОНЕЦ
        ИНАЧЕ ВЫБОР
                КОГДА Документ.ПометкаУдаления = ИСТИНА
                    ТОГДА 2
                КОГДА Документ.Проведен = ИСТИНА
                    ТОГДА 1
                ИНАЧЕ 0
            КОНЕЦ
    КОНЕЦ КАК СостояниеДокумента
ИЗ
    Документ.бит_ЗаявкаНаРасходованиеСредств КАК Документ
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.бит_СтатусыОбъектов КАК СтатусыОбъектов
        ПО Документ.Ссылка = СтатусыОбъектов.Объект
            И (СтатусыОбъектов.ВидСтатуса = ЗНАЧЕНИЕ(Перечисление.бит_ВидыСтатусовОбъектов.Статус))

Индексацию сам ставил
8 1Dam
 
naïve
16.12.24
13:05
(7) В регистре бит_СтатусыОбъектов Объект и ВидСтатуса - измерения
9 Волшебник
 
16.12.24
13:16
Ну так у вас дублирование строк. Вы выкатили всю историю изменения статусов.

И это условие какое-то кривое:
И (СтатусыОбъектов.ВидСтатуса = ЗНАЧЕНИЕ(Перечисление.бит_ВидыСтатусовОбъектов.Статус))
10 1Dam
 
naïve
16.12.24
13:20
(9) Дублирования нет. В реквизит ДатаИзмененияСтатуса записывается дата записи, регистр не периодический.

Чем условие кривое? В регистре виды статуса - составной тип данных
11 Волшебник
 
16.12.24
13:22
(10) Если регистр не периодический, это хорошо.

В запросе не хватает выборки представлений для ссылочных объектов.
12 1Dam
 
naïve
16.12.24
13:24
(11) Сейчас основная проблема в том что по одному из значений регистра долго форма выводится (всего две записи). При других отборах значительно быстрее. Причину понять не могу
13 1Dam
 
naïve
16.12.24
13:26
(12) Как я писал в (0) Долгий вывод списка наблюдается только когда ставлю отбор по определенному элементу. То есть "Реквизит" = "Ссылка1", если "Реквизит" = "Ссылка2", то выводится быстро.
14 Волшебник
 
16.12.24
13:27
(13) Нет такого реквизита
15 Волшебник
 
16.12.24
13:27
(10) Если составной тип данных, то вероятно поможет ВЫРАЗИТЬ
16 1Dam
 
naïve
16.12.24
13:33
(15) Вид статуса составное поле, по нему связываю таблицы. А вывожу статус - не составное поле.
Если конкретнее:
Ставлю отбор Статус = черновик, то все норм работает.
Если ставлю статус = утвержден, то долго
17 Волшебник
 
16.12.24
13:34
(16) Сколько в секундах?
18 Волшебник
 
16.12.24
13:37
(16) Кстати, такого отбора нет в запросе.
19 1Dam
 
naïve
16.12.24
13:37
(17) С черновиком 2-3 сек, с утвержден около 10
20 1Dam
 
naïve
16.12.24
13:37
(18) Отбор пользовательский. в теме так и написал
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.