Имя: Пароль:
1C
1С v8
1С: БП КОРП 3.0 - скорость выполнения запроса
0 TARPV
 
07.09.15
11:32
Исходная ситуация:
1С:Предприятие 8.3 (8.3.6.1999)
Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.40.41)

В базе данных учет ведется по множеству организаций и установлено ограничение прав доступа на уровне записей.

Делаем отчет с простым запросом к таблице "РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто".

Если выполнить запрос под учетной записью пользователя у которого в настройках прав доступа установлено (Организации - Все разрешены, без исключений), то запрос выполняется за 40 секунд.

Если выполнить запрос под учетной записью пользователя у которого в настройках прав доступа установлено (Организации - Все запрещены, кроме N-го значения), то отчет формируется за 23 минуты.

Подкиньте идею куда "копать"! В чем может быть причина (Не корректная работа RLS в этой версии Технологической платформы или нужно внести изменения в текст запроса?)
1 Матиус
 
07.09.15
11:37
выключи  RLS
2 Матиус
 
07.09.15
11:37
сами  RLS не трогали?
3 Гёдза
 
07.09.15
11:41
файловая?
4 TARPV
 
07.09.15
11:42
(2) Конфигурация типовая, ограничения прав доступа на уровне записей нужны и отключаться НЕ будут т.к. учет в одной базе данных ведется по множеству организаций и требуется разделение прав доступа пользователей к хозяйственным операциям разных организаций.
5 TARPV
 
07.09.15
11:42
(3) Клиент серверная. СУБД - MS SQL Server.
6 Гёдза
 
07.09.15
11:47
регламенты на базе настроены?
7 TARPV
 
07.09.15
11:54
(6) О чем речь? Задания выполняемые с БД средствами MS SQL Server?
8 Гёдза
 
07.09.15
11:57
статистика, реиндекс
9 Фрэнки
 
07.09.15
11:58
(7) речь о том, что якобы не хватает индексации какой-то и оттого медленно выполняется...

А за какой период такой разбег времени между выполнением запросов? Одинаковый и свеженький период запрашивается или там за год целиком, а из-за этого куча записей перебирается у каждой организации. Может быть организаций у вас порядка нескольких сотен наплодили в справочник?
10 OldMonk
 
07.09.15
12:44
(0) попробуй очистить настройки юзера, у которого медленно выполняется запрос. на всякий случай.
11 TARPV
 
07.09.15
13:07
(9) В справочнике "Организации" 17 записей.

Создаем новую учетную запись пользователя "Петров". Назначаем ему профиль "Бухгалтер". Для вида доступа "Организации" назначением "Все разрешены, без исключений".

Подключаемся к базе данных под пользователем "Петров" и запускам на выполнение отчет за 8 месяцев этого года с отбором по организации "Ромашка". Отчет формируется за 40 секунд!!!

Далее для пользователя "Петров" для вида доступа "Организации" назначаем ограничение доступа "Все запрещены, кроме 1-го значения" - есть доступ только к операциям организации "Ромашка".

Снова запускаем отчет за 8 месяцев этого года с отбором по организации "Ромашка".

ТЕПЕРЬ отчет формируется за 23 минуты!!!

Как наличие регламентного задания по реиндексации средствами  СУБД может ускорить работу отчета, если Этот отчет может формироваться за 40 секунд?
12 Славен
 
07.09.15
13:09
(11) ты про рлс уже почитал и во что превращаются запросы с рлс? если не веришь сам смотри как они транслируются
13 Гёдза
 
07.09.15
13:09
давай запрос и план к нему
14 TARPV
 
07.09.15
13:15
(13) Запрос очень простой:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ХозрасчетныйДвиженияССубконто.Организация.Наименование КАК OrgNaimen,
    ХозрасчетныйДвиженияССубконто.Организация.ИНН КАК OrgINN,
    ХозрасчетныйДвиженияССубконто.Регистратор.Дата КАК DHozOper,
    ХозрасчетныйДвиженияССубконто.Регистратор.Номер КАК NomerDok,
    ХозрасчетныйДвиженияССубконто.Период КАК DProvodki,
    ХозрасчетныйДвиженияССубконто.СчетДт.Код КАК KodDebeta,
    ХозрасчетныйДвиженияССубконто.СчетКт.Код КАК KodKredita,
    ХозрасчетныйДвиженияССубконто.Содержание КАК Soderzan,
    ВЫБОР
        КОГДА ХозрасчетныйДвиженияССубконто.ВидСубконтоДт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты)
            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт1.Наименование
        ИНАЧЕ ""
    КОНЕЦ КАК KontrNaim,
    ВЫБОР
        КОГДА ХозрасчетныйДвиженияССубконто.ВидСубконтоДт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты)
            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт1.ИНН
        ИНАЧЕ ""
    КОНЕЦ КАК KontrINN,
    ХозрасчетныйДвиженияССубконто.СубконтоКт1.Код КАК NomGrKod,
    ПРЕДСТАВЛЕНИЕ(ХозрасчетныйДвиженияССубконто.НомерСтроки) КАК NomStr,
    ХозрасчетныйДвиженияССубконто.Регистратор.Комментарий КАК KommDok,
    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Сумма КАК ЧИСЛО(15, 2)) КАК Summa
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
            &Начало,
            &Конец,
            СчетКт В ИЕРАРХИИ (&Счет90_1)
                И Активность = ИСТИНА
                И Организация В (&СписокОрганизаций),
            ,
            ) КАК ХозрасчетныйДвиженияССубконто

УПОРЯДОЧИТЬ ПО
    DHozOper

Запрос.УстановитьПараметр("Начало",НачалоДня(НачалоПериода));
    Запрос.УстановитьПараметр("Конец",Новый Граница(КонецДня(КонецПериода),ВидГраницы.Включая));
    Запрос.УстановитьПараметр("Счет90_1",ПланыСчетов.Хозрасчетный.Выручка);
    Запрос.УстановитьПараметр("СписокОрганизаций",Организации.ВыгрузитьКолонку("Организация"));
15 vhl
 
07.09.15
13:23
(0) попробуй сделать через "Хозрасчетный.Обороты". В "ДвиженияССубконто" был глюк что запросы по нему как говорили 1С "неоправданно долго"
16 Aloex
 
07.09.15
13:23
В параметрах ДвиженияССубконто задай виды ПВХ.
17 Фрэнки
 
07.09.15
13:25
(14) а теперь возьми в конфигураторе до правал своего пользователя посмотри на права доступа для рлс у объекта РегистрБухгалтерии.Хозрасчетный... видишь там еще один шаблон текста запроса указан? Вот он и должен стыковаться корректно, иначе будет отрабатывать на каждую запись по отдельности.
18 TARPV
 
07.09.15
14:24
(15) Вот это похоже на правду.

Протестировал взаимосвязь выполнения запроса к таблице "Хозрасчетный.Обороты" и наличие у пользователя  ограничения  доступа по организациям. У этой таблицы в отличие от "ДвиженияССубконто" нет замедления в выполнении запроса  в случае если у пользователя есть ограничение доступа по организациям.
19 Фрэнки
 
07.09.15
14:59
(18) только и текст запроса стал отличатся скорей всего.
Обращение бывшее как
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
            &Начало,
            &Конец,
            СчетКт В ИЕРАРХИИ (&Счет90_1)
                И Активность = ИСТИНА

                И Организация В (&СписокОрганизаций),

            ,
            ) КАК ХозрасчетныйДвиженияССубконто
с условием в параметре метода стало отрабатывать иначе.