|   |   | 
| 
 | Запрос долго что-то (Профиль гр дост - по Организация, назн в группах доступа) | ☑ | ||
|---|---|---|---|---|
| 0
    
        korppinen 10.02.15✎ 19:35 | 
        8.3.5.1383
 БП 3.0.37.35 1. Скопировал типовой Профиль группы доступа ГлБухгалтер, назвал его ГлБухгалтер1. 2. Добавил в него ограничения доступа: Организация, Уч записи эл почты (Всезапрещены,Исключения назначаются в группах доступа). 3. Назначил пользователю. Всё ок.. работает. Есть внешний отчет.. (мой первый под УФ;) вот кусок кода.. Вопрос. Под Админом с учетом по всем организациям, исполняется мгновенно, под пользователем с профилем ГлБухгалтер1 и доступом только по разрешенной организации - этот запросик делается полминуты(!) Куда смотреть то? Спасибо. <code> МассивСчетов = БухгалтерскийУчетВызовСервераПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.РасчетныеСчета); Сообщить ("1.2 "+ТекущаяДата()); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ХозрасчетныйОстаткиИОбороты.Период КАК Дата, | ХозрасчетныйОстаткиИОбороты.Валюта КАК Валюта, | ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК НачальныйОстаток, | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаНачальныйОстатокДт КАК НачальныйОстатокВВалюте, | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК КонечныйОстаток, | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокДт КАК КонечныйОстатокВВалюте, | ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК Приход, | ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК Расход, | ХозрасчетныйОстаткиИОбороты.Регистратор, | ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.РасходныйКассовыйОрдер | ТОГДА ХозрасчетныйОстаткиИОбороты.Регистратор.Организация | КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер | ТОГДА ХозрасчетныйОстаткиИОбороты.Регистратор.Организация | ИНАЧЕ ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент | КОНЕЦ КАК Контрагент, | ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.РасходныйКассовыйОрдер | ТОГДА ХозрасчетныйОстаткиИОбороты.Регистратор.Основание | КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер | ТОГДА ХозрасчетныйОстаткиИОбороты.Регистратор.Основание | ИНАЧЕ ХозрасчетныйОстаткиИОбороты.Регистратор.НазначениеПлатежа | КОНЕЦ КАК Назначение, | ХозрасчетныйОстаткиИОбороты.Субконто1 КАК РасчетныйСчет |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачИтоги, &КонецПериода, Регистратор, Движения, Счет В (&МассивСчетов), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты |ГДЕ | ХозрасчетныйОстаткиИОбороты.Субконто1 В(&ВыделенныеРасчетныеСчета) | |УПОРЯДОЧИТЬ ПО | Дата |ИТОГИ | СУММА(НачальныйОстаток), | СУММА(НачальныйОстатокВВалюте), | СУММА(КонечныйОстаток), | СУММА(КонечныйОстатокВВалюте), | СУММА(Приход), | СУММА(Расход) |ПО | ОБЩИЕ, | РасчетныйСчет |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("КонецПериода", КонецДня(ПараметрыОтчета.КонецПериода)); Запрос.УстановитьПараметр("МассивСчетов", МассивСчетов); Запрос.УстановитьПараметр("НачИтоги", НачалоДня (ПараметрыОтчета.НачалоПериода)); Запрос.УстановитьПараметр("Организация", ПараметрыОтчета.Организация); ВыделенныеРасчетныеСчета = Новый Массив; Для каждого ТекСчет Из ПараметрыОтчета.БанковскиеСчета Цикл Если ТекСчет.Пометка Тогда ВыделенныеРасчетныеСчета.Добавить(ТекСчет.Значение); КонецЕсли; КонецЦикла; Запрос.УстановитьПараметр("ВыделенныеРасчетныеСчета", ВыделенныеРасчетныеСчета); РезультатЗапроса = Запрос.Выполнить(); Сообщить ("1.3 "+ТекущаяДата()); </code> | |||
| 1
    
        Fragster гуру 10.02.15✎ 21:33 | 
        отбор по субконто - в параметры виртуальной таблицы     | |||
| 2
    
        Fragster гуру 10.02.15✎ 21:34 | 
        ХозрасчетныйОстаткиИОбороты.Регистратор.ххх -> Выразить(ХозрасчетныйОстаткиИОбороты.Регистратор КАК док.ххх).ххх     | |||
| 3
    
        korppinen 11.02.15✎ 09:43 | 
        обновил до 8.3.5.1443.. всё тоже..
 2 - может и не супер оптимально у меня, но полминуты не из-за этого. | |||
| 4
    
        Fragster гуру 11.02.15✎ 10:06 | 
        (3) ты бы сделал сначала (1) и (2)     | |||
| 5
    
        korppinen 11.02.15✎ 10:54 | 
        Спасибо.. соптимизировали.. теперь эта фигня делается 5(!) сек у пользователя с правом только на одну организацию.. 
 Ну не в этом же дело? <code> МассивСчетов = БухгалтерскийУчетВызовСервераПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.РасчетныеСчета); Сообщить ("1.2 "+ТекущаяДата()); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ХозрасчетныйОстаткиИОбороты.Период КАК Дата, | ХозрасчетныйОстаткиИОбороты.Валюта КАК Валюта, | ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК НачальныйОстаток, | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаНачальныйОстатокДт КАК НачальныйОстатокВВалюте, | ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК КонечныйОстаток, | ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокДт КАК КонечныйОстатокВВалюте, | ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК Приход, | ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК Расход, | ХозрасчетныйОстаткиИОбороты.Регистратор, | ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.РасходныйКассовыйОрдер | ТОГДА ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ.РасходныйКассовыйОрдер).Организация | КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер | ТОГДА ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ.ПриходныйКассовыйОрдер).Организация | ИНАЧЕ ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент | КОНЕЦ КАК Контрагент, | ВЫБОР | КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.РасходныйКассовыйОрдер | ТОГДА ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ.РасходныйКассовыйОрдер).Основание | КОГДА ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер | ТОГДА ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Регистратор КАК Документ.ПриходныйКассовыйОрдер).Основание | ИНАЧЕ ХозрасчетныйОстаткиИОбороты.Регистратор.НазначениеПлатежа | КОНЕЦ КАК Назначение, | ХозрасчетныйОстаткиИОбороты.Субконто1 КАК РасчетныйСчет |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты( | &НачИтоги, | &КонецПериода, | Регистратор, | Движения, | Счет В (&МассивСчетов), | &СубконтоРС, | Организация = &Организация | И Субконто1 В (&ВыделенныеРасчетныеСчета)) КАК ХозрасчетныйОстаткиИОбороты | |УПОРЯДОЧИТЬ ПО | Дата |ИТОГИ | СУММА(НачальныйОстаток), | СУММА(НачальныйОстатокВВалюте), | СУММА(КонечныйОстаток), | СУММА(КонечныйОстатокВВалюте), | СУММА(Приход), | СУММА(Расход) |ПО | ОБЩИЕ, | РасчетныйСчет |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("КонецПериода", КонецДня(ПараметрыОтчета.КонецПериода)); Запрос.УстановитьПараметр("МассивСчетов", МассивСчетов); Запрос.УстановитьПараметр("НачИтоги", НачалоДня (ПараметрыОтчета.НачалоПериода)); Запрос.УстановитьПараметр("Организация", ПараметрыОтчета.Организация); Запрос.УстановитьПараметр("СубконтоРС", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.БанковскиеСчета); ВыделенныеРасчетныеСчета = Новый Массив; Для каждого ТекСчет Из ПараметрыОтчета.БанковскиеСчета Цикл Если ТекСчет.Пометка Тогда ВыделенныеРасчетныеСчета.Добавить(ТекСчет.Значение); КонецЕсли; КонецЦикла; Запрос.УстановитьПараметр("ВыделенныеРасчетныеСчета", ВыделенныеРасчетныеСчета); РезультатЗапроса = Запрос.Выполнить(); Сообщить ("1.3 "+ТекущаяДата()); <code> | |||
| 6
    
        korppinen 11.02.15✎ 10:58 | 
        не понимаю.. что то с правами..     | |||
| 7
    
        Fragster гуру 11.02.15✎ 11:04 | 
        автоупорядочивание     | |||
| 8
    
        Fragster гуру 11.02.15✎ 11:05 | 
        соответственно 
 Выразить(ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Спроавочник.ххх) КАК РасчетныйСчет | |||
| 9
    
        n0ther 11.02.15✎ 11:05 | 
        (0) rls что ли включил? и медленнее стало работать? страааанно     | |||
| 10
    
        korppinen 11.02.15✎ 11:30 | 
        Да.. не понимаю что такое.. Оптимальным запросом проблему не решить     | |||
| 11
    
        korppinen 11.02.15✎ 11:30 | 
        (8) Сделал.. та же песня     | |||
| 12
    
        n0ther 11.02.15✎ 11:38 | 
        (10) при включенном ограничении на уровне записей, у пользователя с ограничениями к этому запросу будет присоединен еще кусок из RLS, что однозначно замедлит его выполнение.     | |||
| 13
    
        korppinen 11.02.15✎ 11:44 | 
        (12) я не правильно организовал учет по одной организации?     | |||
| 14
    
        korppinen 11.02.15✎ 11:46 | 
        не ну есть же стандартные отчеты.. касс книга и пр, гораздо сложнее.. и они норм у такого пользователя формируются..     | |||
| 15
    
        n0ther 11.02.15✎ 11:51 | 
        (13) да почему, всё правильно. Различия в производительности под полными правами и под "подрезанными" будут все равно. Даже в типовых отчетах.
 Попробуй выполнить запрос в консоли запросов под правами пользователя. Если быстро выполнится то точно проблема RLS, если так же по времени, то надо запрос оптимизировать. | |||
| 16
    
        Fragster гуру 11.02.15✎ 13:10 | 
        ИНАЧЕ ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент - все портит вот такая лажа.     | |||
| 17
    
        Fragster гуру 11.02.15✎ 13:12 | 
        вероятно надо из корсубконто брать контрагента, а не из регистратора. Ну и про "назначение" то же самое     | |||
| 18
    
        Fragster гуру 11.02.15✎ 13:13 | 
        две точки при составном типе пагубно влияют, особенно если по какому-то из возможных типов есть РЛС     | |||
| 19
    
        korppinen 11.02.15✎ 13:19 | 
        Спасибо. и не лажануться то терь в запросе чуть.. на 8.1 точно такой не было.     | |||
| 20
    
        korppinen 20.02.15✎ 17:11 | 
        Решил так в итоге.. 
 УстановитьПривилегированныйРежим (Истина) Запрос= Новый Запрос...... УстановитьПривилегированныйРежим (Ложь) | |||
| 21
    
        Fragster гуру 20.02.15✎ 18:21 | 
        (20) а стоило просто решить вопрос с вдумя точками без выразить... ХозрасчетныйОстаткиИОбороты.Регистратор.НазначениеПлатежа     | |||
| 22
    
        Fragster гуру 20.02.15✎ 18:21 | 
        и ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |