Почему с правами администратора запрос выполняется в разы быстрее

1. _Dmitry_ 09.04.20 10:14 Сейчас в теме
Обратил внимание, что у пользователей отчет работает в десятки раз медленнее чем у меня при разработке.
Выяснил, что запрос

ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
    ЗакупкиОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК НоменклатураСырье,
    ЗакупкиОбороты.КоличествоОборот КАК КоличествоОборот,
    ЗакупкиОбороты.СуммаОборот КАК СуммаОборот,
    ЗакупкиОбороты.СуммаБезНДСОборот КАК СуммаБезНДСОборот,
    ЗакупкиОбороты.Регистратор КАК Регистратор
ИЗ
    РегистрНакопления.Закупки.Обороты(, &конецПериода, Регистратор, АналитикаУчетаНоменклатуры.Номенклатура = &Номенклатура) КАК ЗакупкиОбороты

УПОРЯДОЧИТЬ ПО
    ЗакупкиОбороты.Регистратор.Дата УБЫВ
Показать


с административными правами выполняется за 0.03 сек, а без административных (но с полными) за 2-3 сек.
Конфа ERP 2.4.11. Сервер на дебиане 1с 8.3.15.1700, постгрес 9.6. Подскажите какие могут быть причины?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. VmvLer 09.04.20 10:48 Сейчас в теме
(1) РЛС "лезет" в отборы виртуальной таблицы с трешем "В Иерархии" посему и имеем то что имеем.

было бы логично, чтобы платформа да и разрабы умела работать со всеми отборами так как с сегментами в УТ.

Если посмотреть отчеты в УТ/ЕРП где есть работа с сегментами, то там в запросе первый пакет -
это СКД-шный отбор сегментов, например

ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    Сегменты.Партнер КАК Партнер,
    ИСТИНА КАК ИспользуетсяОтборПоСегментуПартнеров
ПОМЕСТИТЬ ОтборПоСегментуПартнеров
ИЗ
    РегистрСведений.ПартнерыСегмента КАК Сегменты
{ГДЕ
    Сегменты.Сегмент.* КАК СегментПартнеров,
    Сегменты.Партнер.* КАК Партнер}

ИНДЕКСИРОВАТЬ ПО
    Партнер
Показать


да это рс, т.е. не иерархическая структура, но относительно этой таблицы пользователь может
наворотить чудо отборы "в группе из списка" - это великий тормоз всея 1С8.
но в такой реализации это пабрабану, так как этот тормоз живет исключительно в этом "легком"
пакете. И далее в "тяжелых" оборотных или аналитических таблицах уже не будет в отборах всяких чудовищ с
"В Иерархии", а будет быстрый отбор, например
    (Регистр.АналитикаУчетаПоПартнерам.Партнер В
            (ВЫБРАТЬ
                ОтборПоСегментуПартнеров.Партнер
            ИЗ
                ОтборПоСегментуПартнеров
            ГДЕ
                ОтборПоСегментуПартнеров.ИспользуетсяОтборПоСегментуПартнеров = &ИспользуетсяОтборПоСегментуПартнеров))}

Показать


Некоторые попсовые отчеты в УТ я переписал как внешние, спроецировав эту идею и на справочники номенклатуры, складов. Т.е. первым пакетами идут такие например,

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ТаблСклады.Ссылка КАК СкладОтбора
ПОМЕСТИТЬ ВтСклады
{ВЫБРАТЬ
    СкладОтбора.*}
ИЗ
    Справочник.Склады КАК ТаблСклады
ГДЕ
    НЕ ТаблСклады.ЭтоГруппа
{ГДЕ
    ТаблСклады.Ссылка.* КАК СкладОтбора}

ИНДЕКСИРОВАТЬ ПО
    СкладОтбора
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ТаблТовары.Ссылка КАК ТоварОтбора,
    ТаблТовары.Марка КАК МаркаОтбора,
    ТаблТовары.Производитель КАК ПроизОтбора,
    ТаблТовары.ТоварнаяКатегория КАК КатегОтбора
ПОМЕСТИТЬ ВтТовары
{ВЫБРАТЬ
    ТоварОтбора.*,
    МаркаОтбора.*,
    ПроизОтбора.*,
    КатегОтбора.*}
ИЗ
    Справочник.Номенклатура КАК ТаблТовары
ГДЕ
    НЕ ТаблТовары.ЭтоГруппа
{ГДЕ
    ТаблТовары.Ссылка.* КАК ТоварОтбора,
    ТаблТовары.Марка.* КАК МаркаОтбора,
    ТаблТовары.Производитель.* КАК ПроизОтбора,
    ТаблТовары.ТоварнаяКатегория.* КАК КатегОтбора}

ИНДЕКСИРОВАТЬ ПО
    ТоварОтбора
;
Показать


и далее

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    АналитикаУчетаНоменклатуры.КлючАналитики КАК КлючАналитики,
    ВЫРАЗИТЬ(АналитикаУчетаНоменклатуры.МестоХранения КАК Справочник.Склады) КАК СкладОтбора,
    АналитикаУчетаНоменклатуры.Номенклатура КАК ТоварОтбора
ПОМЕСТИТЬ ВтАналитикаУчетаНоменклатуры
ИЗ
    РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
ГДЕ
    ВЫРАЗИТЬ(АналитикаУчетаНоменклатуры.МестоХранения КАК Справочник.Склады) В
            (ВЫБРАТЬ
                ВтСклады.СкладОтбора
            ИЗ
                ВтСклады)
    И АналитикаУчетаНоменклатуры.Номенклатура В
            (ВЫБРАТЬ
                ВтТовары.ТоварОтбора
            ИЗ
                ВтТовары)
Показать


и далее выборка из тяжелого регистра летает что с РЛС, что без него

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВтАналитикаУчетаНоменклатуры.ТоварОтбора КАК ТоварОтбора,
    СУММА(СттОстатки.КоличествоОстаток) КАК КоличествоОстаток,
    СУММА(СттОстатки.СтоимостьОстаток) КАК СтоимостьОстаток
ПОМЕСТИТЬ ВтОстатки
ИЗ
    РегистрНакопления.СебестоимостьТоваров.Остатки(
            {(ДОБАВИТЬКДАТЕ(&КонецПериода, СЕКУНДА, 1)) КАК Поле2},
            &ПолучатьОстатки
                И АналитикаУчетаНоменклатуры В
                    (ВЫБРАТЬ
                        ВтАналитикаУчетаНоменклатуры.КлючАналитики
                    ИЗ
                        ВтАналитикаУчетаНоменклатуры)) КАК СттОстатки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтАналитикаУчетаНоменклатуры КАК ВтАналитикаУчетаНоменклатуры
        ПО СттОстатки.АналитикаУчетаНоменклатуры = ВтАналитикаУчетаНоменклатуры.КлючАналитики
ГДЕ
    &ПолучатьОстатки
Показать


пакеты с оборотами тоже быстрые, собственно для оборотов и делалось.
пример с остатками - просто пример.

базопузомером уточнил
ключей аналитики 2.5КК+
записей себс 125КК+

типовые отчеты без такого финта - дохлые клячи из-за отборов "по умолчанию"
если бы разрабы переписали отчеты примерно так или лучше, исправив и причесав этот костыль, то
пользователи типовых УТ/ЕРП стали бы не тонуть с воплем "Да ваша 1С дно", а ходить по воде с сиянием.

резкие образы исключительно для понимания, а не с целью оскорбить - ничего личного)
nomad_irk; +1 Ответить
7. Xershi 1262 09.04.20 12:23 Сейчас в теме
(1) для полного ответа вам придется анализировать план запроса.
А для кратного уже сообщили.
РЛС тормозит весь процесс.
Fox-trot; +1 Ответить
2. muskul 09.04.20 10:15 Сейчас в теме
3. _Dmitry_ 09.04.20 10:28 Сейчас в теме
(2) Да, рлс включен. Ничего не поделать?
4. nomad_irk 80 09.04.20 10:36 Сейчас в теме
(3)набор ролей, доступных пользователю должен быть уникальным для каждого объекта метаданных, т.е. две роли не должны разграниивать доступ к одному и тому же объекту метаданных.

Если это условие не выполняется, то RLS проверяет доступ к объекту метаданных для каждой роли и чем больше ролей, тем тормознее будет работать RLS.
6. _Dmitry_ 09.04.20 12:20 Сейчас в теме
(4) Проверил, убрал дублирующие права, оставил просто полные права без галочки администрирование, теперь там где 2-3 сек стало 1.6.
8. Xershi 1262 09.04.20 12:23 Сейчас в теме
(6) ускорение в 2 раза поздравляю!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот