Имя: Пароль:
1C
1С v8
УТ 10.3, RLS тормоза при запросах со свойствами объектов.
0 torgm
 
09.11.15
09:38
УТ Файловая 10.3.33.1     Платформа   8.3.5.1482.
У пользователей права: Менеджер по продажам, Пользователь
Включили Ограничение прав на уровне записей.

Получили тормоза на всех запросах связанных со СвойствамиОбъектов в том числе и универсальныхотчетах.

Запрос под полными правами отрабатывает за 0,5 секунд, запрос под ограниченными 300 секунд.

свойств Задано 9: ; 4 на номенклатуру, 4 на контрагентов и 1 на документ.
Количество записей регистра сведений ЗначенияСвойствОбъектов - 600.

Куда копать?

Пример одного из запросов. Взят из типовой.


    Запрос = Новый Запрос();
    
    Запрос.УстановитьПараметр("НазначениеСвойств",       ?(НазначениеСвойств = Неопределено, ОбщегоНазначения.ПолучитьСписокНазначенийСвойствКатегорийОбъектовПоСсылке(ОбъектОтбораЗначений), НазначениеСвойств));
    Запрос.УстановитьПараметр("ОбъектОтбораЗначений",    ОбъектОтбораЗначений);
    Запрос.УстановитьПараметр("СписокНазначенийСвойств", СписокНазначенийСвойств());
    
    Запрос.Текст = "
    |ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ
    |    СвойстваОбъектов.ПометкаУдаления                            КАК ПометкаУдаления,
    |    СвойстваОбъектов.Ссылка                                     КАК Свойство,
    |    РегистрСведений.ЗначенияСвойствОбъектов.Значение            КАК Значение,
    |    СвойстваОбъектов.Наименование
    |
    |ИЗ
    |// Отбираются свойства, предназначенные для заданного типа объектов.
    |    (
    |    ВЫБРАТЬ
    |        ПланВидовХарактеристик.СвойстваОбъектов.Ссылка          КАК Ссылка,
    |        ПланВидовХарактеристик.СвойстваОбъектов.Наименование    КАК Наименование,
    |        ПланВидовХарактеристик.СвойстваОбъектов.ПометкаУдаления КАК ПометкаУдаления
    |
    |    ИЗ
    |        ПланВидовХарактеристик.СвойстваОбъектов
    |
    |    ГДЕ
    |        ПланВидовХарактеристик.СвойстваОбъектов.НазначениеСвойства В ( &НазначениеСвойств )
    |
    |    )                                                           КАК СвойстваОбъектов
    |
    |ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
    |// Присоединяются значения свойств, назначенные для заданного объекта.
    |    РегистрСведений.ЗначенияСвойствОбъектов
    |ПО
    |    РегистрСведений.ЗначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка
    |    И
    |    РегистрСведений.ЗначенияСвойствОбъектов.Объект = &ОбъектОтбораЗначений
    |
    |ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
    |// Присоединяются группы, которым назначено свойство, для отбора свойств.
    |// Если свойству назначено значение, оно отбирается в любом случае.
    |    РегистрСведений.НазначенияСвойствОбъектов
    |ПО
    |    РегистрСведений.НазначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка
    |    И
    |    РегистрСведений.ЗначенияСвойствОбъектов.Значение ЕСТЬ NULL
    |
    |ГДЕ
    |// Если значение свойства не задано, свойство должно быть назанчено
    |// или всем объектам, или одной из групп - родителей объекта.
    |    РегистрСведений.НазначенияСвойствОбъектов.Объект ЕСТЬ NULL
    |    ИЛИ
    |    РегистрСведений.НазначенияСвойствОбъектов.Объект В ( &СписокНазначенийСвойств )
    |
    |УПОРЯДОЧИТЬ ПО
    |    СвойстваОбъектов.Наименование
    |";
    
    Возврат Запрос.Выполнить().Выгрузить();
1 ДенисЧ
 
09.11.15
09:53
РЛС и тормоза - близнецы-братья!
Мы говорим - РЛС, подразумеваем тормоза!
2 antgrom
 
09.11.15
10:09
(0) в "Настольной книге эксперта по тех вопросам" есть примеры того как не надо писать запросы.
Точнее , какие запросы иногда могут вызвать проблемы.
И не важно что у вас код из типовой.
Если это важно - перепишите запрос , ускорив его.
А пользователям назначайте только по одной роли. Желательно.
3 torgm
 
09.11.15
10:28
(2) Правильно я понимаю, что вы мне предлагаете полностью переписать структуру универсальных отчетов.
4 torgm
 
09.11.15
12:37
Апну пожалуй.
5 VikingKosmo
 
09.11.15
12:40
Какое отношение универсальный отчет имеет к криво написанным запросам?
6 torgm
 
09.11.15
13:07
(5) ну как минимум   "ИспользоватьСвойстваиКатегории" :)  как только нажимаем, получаем также дичайшие тормоза.
7 antgrom
 
09.11.15
13:51
(3) проще выполнить мой "второй" совет и назначать каждому пользователю только одну роль.
"Первый" совет  - если всё остальное ( например время проведения документов ) нормально  , то следует определить - какую именно информацию вы обычно хотите получать и написать узкоспециализированные отчёты.
8 antgrom
 
09.11.15
13:53
(5) универсальный не может быть самым быстрым.
9 Гёдза
 
09.11.15
13:58
то значения фильтруются по рлс
10 torgm
 
09.11.15
14:35
(9) Это то понятно... Но так тормознуто, что писец.  самое интересное, что неоднократно пользовал RLS и тут первый раз такой косяк...
11 torgm
 
16.11.15
10:39
УРА! Все ок. Нашел косяк в типовом шаблоне. Подправил. Все заработало, всем спасибо :)