Имя: Пароль:
1C
 
Пятничная задача на эксперта ;)
,
0 Fragster
 
гуру
14.07.17
10:44
Есть база на БСП 2.1, неопределенное время назад перестал формироваться отчет по правам доступа, зависает на запросе из процедуры ВидыОграниченийПравОбъектовМетаданных() формы отчета ПраваДоступа
в РС НаборыЗначенийДоступа около 150к записей
1 Fragster
 
гуру
14.07.17
10:45
ну и да - мсскуль, переиндексация, обновление статистик и сброс proccache сделан
2 директор мира
 
14.07.17
10:54
настраивай ТЖ
3 mistеr
 
14.07.17
11:03
(0) Запрос выложи, влом искать.
4 sFAQer
 
14.07.17
11:03
(0) Запрос то покажи
5 aleks_default
 
14.07.17
11:03
Текст процедуры/запроса в студию
7 Fragster
 
гуру
14.07.17
11:05

ВЫБРАТЬ
    ПостоянныеВидыОграничений.Таблица,
    ПостоянныеВидыОграничений.Право,
    ПостоянныеВидыОграничений.ВидДоступа,
    ПостоянныеВидыОграничений.ТаблицаОбъекта
ПОМЕСТИТЬ ПостоянныеВидыОграничений
ИЗ
    &ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПостоянныеВидыОграничений.Таблица,
    "Чтение" КАК Право,
    НаборыЗначенийДоступа.ВидДоступа
ПОМЕСТИТЬ ПеременныеВидыОграничений
ИЗ
    РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначенийДоступа
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
            ПО Идентификаторы.Ссылка = ПостоянныеВидыОграничений.ТаблицаОбъекта
                И (ПостоянныеВидыОграничений.Право = "Чтение")
                И (ПостоянныеВидыОграничений.ВидДоступа = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка))
        ПО (ТИПЗНАЧЕНИЯ(НаборыЗначенийДоступа.Объект) = ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки))
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Наборы.Объект КАК Объект,
            Наборы.НомерНабора КАК НомерНабора
        ИЗ
            РегистрСведений.НаборыЗначенийДоступа КАК Наборы
        ГДЕ
            Наборы.Чтение) КАК НомераНаборовПрава
        ПО НаборыЗначенийДоступа.Объект = НомераНаборовПрава.Объект
            И НаборыЗначенийДоступа.НомерНабора = НомераНаборовПрава.НомерНабора

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ПостоянныеВидыОграничений.Таблица,
    "Добавление",
    НаборыЗначенийДоступа.ВидДоступа
ИЗ
    РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначенийДоступа
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
            ПО Идентификаторы.Ссылка = ПостоянныеВидыОграничений.ТаблицаОбъекта
                И (ПостоянныеВидыОграничений.Право = "Добавление")
                И (ПостоянныеВидыОграничений.ВидДоступа = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка))
        ПО (ТИПЗНАЧЕНИЯ(НаборыЗначенийДоступа.Объект) = ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки))
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Наборы.Объект КАК Объект,
            Наборы.НомерНабора КАК НомерНабора
        ИЗ
            РегистрСведений.НаборыЗначенийДоступа КАК Наборы
        ГДЕ
            Наборы.Добавление) КАК НомераНаборовПрава
        ПО НаборыЗначенийДоступа.Объект = НомераНаборовПрава.Объект
            И НаборыЗначенийДоступа.НомерНабора = НомераНаборовПрава.НомерНабора

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ПостоянныеВидыОграничений.Таблица,
    "Изменение",
    НаборыЗначенийДоступа.ВидДоступа
ИЗ
    РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначенийДоступа
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
            ПО Идентификаторы.Ссылка = ПостоянныеВидыОграничений.ТаблицаОбъекта
                И (ПостоянныеВидыОграничений.Право = "Изменение")
                И (ПостоянныеВидыОграничений.ВидДоступа = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка))
        ПО (ТИПЗНАЧЕНИЯ(НаборыЗначенийДоступа.Объект) = ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки))
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Наборы.Объект КАК Объект,
            Наборы.НомерНабора КАК НомерНабора
        ИЗ
            РегистрСведений.НаборыЗначенийДоступа КАК Наборы
        ГДЕ
            Наборы.Изменение) КАК НомераНаборовПрава
        ПО НаборыЗначенийДоступа.Объект = НомераНаборовПрава.Объект
            И НаборыЗначенийДоступа.НомерНабора = НомераНаборовПрава.НомерНабора

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ПостоянныеВидыОграничений.Таблица,
    "Удаление",
    НаборыЗначенийДоступа.ВидДоступа
ИЗ
    РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначенийДоступа
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
            ПО Идентификаторы.Ссылка = ПостоянныеВидыОграничений.ТаблицаОбъекта
                И (ПостоянныеВидыОграничений.Право = "Удаление")
                И (ПостоянныеВидыОграничений.ВидДоступа = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка))
        ПО (ТИПЗНАЧЕНИЯ(НаборыЗначенийДоступа.Объект) = ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки))
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Наборы.Объект КАК Объект,
            Наборы.НомерНабора КАК НомерНабора
        ИЗ
            РегистрСведений.НаборыЗначенийДоступа КАК Наборы
        ГДЕ
            Наборы.Удаление) КАК НомераНаборовПрава
        ПО НаборыЗначенийДоступа.Объект = НомераНаборовПрава.Объект
            И НаборыЗначенийДоступа.НомерНабора = НомераНаборовПрава.НомерНабора
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПостоянныеВидыОграничений.Таблица,
    ПостоянныеВидыОграничений.Право,
    ПостоянныеВидыОграничений.ВидДоступа
ИЗ
    ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
ГДЕ
    ПостоянныеВидыОграничений.ВидДоступа <> ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    ПеременныеВидыОграничений.Таблица,
    ПеременныеВидыОграничений.Право,
    ПеременныеВидыОграничений.ВидДоступа
ИЗ
    ПеременныеВидыОграничений КАК ПеременныеВидыОграничений
ГДЕ
    ПеременныеВидыОграничений.ВидДоступа <> ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПеременныеВидыОграничений.ВидДоступа <> ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения)
    И ПеременныеВидыОграничений.ВидДоступа <> ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления)
    И ПеременныеВидыОграничений.ВидДоступа <> ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)
8 mehfk
 
14.07.17
11:08
(7) В более новых конфах он немного другой

    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПостоянныеВидыОграничений.Таблица,
    |    ПостоянныеВидыОграничений.Право,
    |    ПостоянныеВидыОграничений.ВидДоступа,
    |    ПостоянныеВидыОграничений.ТаблицаОбъекта
    |ПОМЕСТИТЬ ПостоянныеВидыОграничений
    |ИЗ
    |    &ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТипыЗначенийВидовДоступа.ВидДоступа,
    |    ТипыЗначенийВидовДоступа.ТипЗначений
    |ПОМЕСТИТЬ ТипыЗначенийВидовДоступа
    |ИЗ
    |    &ТипыЗначенийВидовДоступа КАК ТипыЗначенийВидовДоступа
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ИспользуемыеВидыДоступа.ВидДоступа,
    |    ИспользуемыеВидыДоступа.Представление
    |ПОМЕСТИТЬ ИспользуемыеВидыДоступа
    |ИЗ
    |    &ИспользуемыеВидыДоступа КАК ИспользуемыеВидыДоступа
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ПостоянныеВидыОграничений.Таблица,
    |    ""Чтение"" КАК Право,
    |    ТИПЗНАЧЕНИЯ(СтрокиНаборов.ЗначениеДоступа) КАК ТипЗначений
    |ПОМЕСТИТЬ ПеременныеВидыОграничений
    |ИЗ
    |    РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
    |        ПО (ПостоянныеВидыОграничений.Право = ""Чтение"")
    |            И (ПостоянныеВидыОграничений.ВидДоступа = НЕОПРЕДЕЛЕНО)
    |            И (ТИПЗНАЧЕНИЯ(НомераНаборов.Объект) = ТИПЗНАЧЕНИЯ(ПостоянныеВидыОграничений.ТаблицаОбъекта))
    |            И (НомераНаборов.Чтение)
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаборыЗначенийДоступа КАК СтрокиНаборов
    |        ПО (СтрокиНаборов.Объект = НомераНаборов.Объект)
    |            И (СтрокиНаборов.НомерНабора = НомераНаборов.НомерНабора)
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ПостоянныеВидыОграничений.Таблица,
    |    ""Изменение"",
    |    ТИПЗНАЧЕНИЯ(СтрокиНаборов.ЗначениеДоступа)
    |ИЗ
    |    РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
    |        ПО (ПостоянныеВидыОграничений.Право = ""Изменение"")
    |            И (ПостоянныеВидыОграничений.ВидДоступа = НЕОПРЕДЕЛЕНО)
    |            И (ТИПЗНАЧЕНИЯ(НомераНаборов.Объект) = ТИПЗНАЧЕНИЯ(ПостоянныеВидыОграничений.ТаблицаОбъекта))
    |            И (НомераНаборов.Изменение)
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаборыЗначенийДоступа КАК СтрокиНаборов
    |        ПО (СтрокиНаборов.Объект = НомераНаборов.Объект)
    |            И (СтрокиНаборов.НомерНабора = НомераНаборов.НомерНабора)
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ПостоянныеВидыОграничений.Таблица,
    |    ПостоянныеВидыОграничений.Право,
    |    ТипыЗначенийВидовДоступа.ВидДоступа
    |ПОМЕСТИТЬ ВсеВидыОграниченийПрав
    |ИЗ
    |    ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТипыЗначенийВидовДоступа КАК ТипыЗначенийВидовДоступа
    |        ПО ПостоянныеВидыОграничений.ВидДоступа = ТипыЗначенийВидовДоступа.ВидДоступа
    |            И (ПостоянныеВидыОграничений.ВидДоступа <> НЕОПРЕДЕЛЕНО)
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ
    |    ПеременныеВидыОграничений.Таблица,
    |    ПеременныеВидыОграничений.Право,
    |    ТипыЗначенийВидовДоступа.ВидДоступа
    |ИЗ
    |    ПеременныеВидыОграничений КАК ПеременныеВидыОграничений
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТипыЗначенийВидовДоступа КАК ТипыЗначенийВидовДоступа
    |        ПО (ПеременныеВидыОграничений.ТипЗначений = ТИПЗНАЧЕНИЯ(ТипыЗначенийВидовДоступа.ТипЗначений))
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ВсеВидыОграниченийПрав.Таблица,
    |    ВсеВидыОграниченийПрав.Право,
    |    ВсеВидыОграниченийПрав.ВидДоступа,
    |    ИспользуемыеВидыДоступа.Представление
    |ИЗ
    |    ВсеВидыОграниченийПрав КАК ВсеВидыОграниченийПрав
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИспользуемыеВидыДоступа КАК ИспользуемыеВидыДоступа
    |        ПО ВсеВидыОграниченийПрав.ВидДоступа = ИспользуемыеВидыДоступа.ВидДоступа";

9 sFAQer
 
14.07.17
11:09
(7) объединения надо убирать, они не очень...
10 Fragster
 
гуру
14.07.17
11:09
(8) скопировать/адаптировать и выполнить на старой копии (полугодовалой), то результаты неидентичны
11 Лефмихалыч
 
14.07.17
11:10
(0) а задачка-то в чем?
12 Fragster
 
гуру
14.07.17
11:10
(11) сделать так, чтобы отчет заработал, ваш КО
13 mehfk
 
14.07.17
11:11
(10) Я бы избавился от этого

        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Наборы.Объект КАК Объект,
            Наборы.НомерНабора КАК НомерНабора
        ИЗ
            РегистрСведений.НаборыЗначенийДоступа КАК Наборы
        ГДЕ
            Наборы.Удаление) КАК НомераНаборовПрава
14 mehfk
 
14.07.17
11:11
1с-ники тоже избавились :)
15 Fragster
 
гуру
14.07.17
11:12
убирание вложенного запроса ничего не дает
16 Лефмихалыч
 
14.07.17
11:13
а со справочником идентификаторов объектов метаданных все в порядке? Запусти с ключом ОбновитьТамЧо-тотамХренЗнаетЯНепомню
17 mistеr
 
14.07.17
11:21
(14) От подзапроса избавились, но соединение регистра с самим собой оставили. Нафига оно вообще?
18 Fragster
 
гуру
14.07.17
11:22
(16) нифига
19 mistеr
 
14.07.17
11:22
(7) Соединение с регистром идет по ТИПЗНАЧЕНИЯ(), значит индекс не используется. И так 4 раза. Вот и зависает.
20 Вафель
 
14.07.17
11:23
план запроса покажи
21 Fragster
 
гуру
14.07.17
11:24
(19) используется. если убрать соединение самого с собой - то все летает
(18) если убрать соединение самого с собой и перенести отбор по .чтение и т.п. в соединение с Идентификаторы, то результат не такой, как если его оставить
22 aleks_default
 
14.07.17
11:26
"и перенести отбор по .чтение и т.п. в соединение с Идентификаторы"
а зачем именно в соединение? переноси в условие ГДЕ
23 Вафель
 
14.07.17
11:27
А если (13) развернуть? там ведь группировок нет
24 Вафель
 
14.07.17
11:29
хотя это соединение вообще можно убрать
25 Fragster
 
гуру
14.07.17
11:30
(24) нельзя
26 Fragster
 
гуру
14.07.17
11:30
результат меняется
27 mistеr
 
14.07.17
11:31
(21) Покажи скульный план исходного.
28 Вафель
 
14.07.17
11:31
Ны ты условие то переносишь в ГДЕ?
29 Fragster
 
гуру
14.07.17
11:34
30 Fragster
 
гуру
14.07.17
11:36
актуальных данных нет, потому что дождаться выполнения не получается :)
31 Garykom
 
гуру
14.07.17
11:42
(12) Перепиши код уже.

Есть вход -  знаем требуемый выход, осталось только переписать запросы и добавить немного кода 1С.
32 Garykom
 
гуру
14.07.17
11:44
(31)+ Почему бы для начала не наложить условия на ограничение выборки из "РС НаборыЗначенийДоступа", в смысле по кусочкам никак?
33 mistеr
 
14.07.17
11:49
(29) Таки индекс не используется для доступа. Скан + Merge Join.
34 Fragster
 
гуру
14.07.17
12:05
короче, объясните мне, достаточно ли для целей работы отчета такого изменения?
результаты, вроде, совпадают
ВЫБРАТЬ
    ПостоянныеВидыОграничений.Таблица,
    ПостоянныеВидыОграничений.Право,
    ПостоянныеВидыОграничений.ВидДоступа,
    ПостоянныеВидыОграничений.ТаблицаОбъекта
ПОМЕСТИТЬ ПостоянныеВидыОграничений
ИЗ
    &ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПостоянныеВидыОграничений.Таблица,
    "Чтение" КАК Право,
    НаборыЗначенийДоступа.ВидДоступа
ПОМЕСТИТЬ ПеременныеВидыОграничений
ИЗ
    РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначенийДоступа
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
            ПО Идентификаторы.Ссылка = ПостоянныеВидыОграничений.ТаблицаОбъекта
                И (ПостоянныеВидыОграничений.Право = "Чтение")
                И (ПостоянныеВидыОграничений.ВидДоступа = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка))
        ПО (ТИПЗНАЧЕНИЯ(НаборыЗначенийДоступа.Объект) = ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки))
ГДЕ
    1 В
            (ВЫБРАТЬ ПЕРВЫЕ 1
                1
            ИЗ
                РегистрСведений.НаборыЗначенийДоступа КАК Наборы
            ГДЕ
                ТИПЗНАЧЕНИЯ(Наборы.Объект) = ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки)
                И Наборы.Чтение)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ПостоянныеВидыОграничений.Таблица,
    "Добавление",
    НаборыЗначенийДоступа.ВидДоступа
ИЗ
    РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначенийДоступа
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
            ПО Идентификаторы.Ссылка = ПостоянныеВидыОграничений.ТаблицаОбъекта
                И (ПостоянныеВидыОграничений.Право = "Добавление")
                И (ПостоянныеВидыОграничений.ВидДоступа = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка))
        ПО (ТИПЗНАЧЕНИЯ(НаборыЗначенийДоступа.Объект) = ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки))
ГДЕ
    1 В
            (ВЫБРАТЬ ПЕРВЫЕ 1
                1
            ИЗ
                РегистрСведений.НаборыЗначенийДоступа КАК Наборы
            ГДЕ
                ТИПЗНАЧЕНИЯ(Наборы.Объект) = ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки)
                И Наборы.Добавление)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ПостоянныеВидыОграничений.Таблица,
    "Изменение",
    НаборыЗначенийДоступа.ВидДоступа
ИЗ
    РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначенийДоступа
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
            ПО Идентификаторы.Ссылка = ПостоянныеВидыОграничений.ТаблицаОбъекта
                И (ПостоянныеВидыОграничений.Право = "Изменение")
                И (ПостоянныеВидыОграничений.ВидДоступа = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка))
        ПО (ТИПЗНАЧЕНИЯ(НаборыЗначенийДоступа.Объект) = ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки))
ГДЕ
    1 В
            (ВЫБРАТЬ ПЕРВЫЕ 1
                1
            ИЗ
                РегистрСведений.НаборыЗначенийДоступа КАК Наборы
            ГДЕ
                ТИПЗНАЧЕНИЯ(Наборы.Объект) = ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки)
                И Наборы.Изменение)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ПостоянныеВидыОграничений.Таблица,
    "Удаление",
    НаборыЗначенийДоступа.ВидДоступа
ИЗ
    РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначенийДоступа
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
            ПО Идентификаторы.Ссылка = ПостоянныеВидыОграничений.ТаблицаОбъекта
                И (ПостоянныеВидыОграничений.Право = "Удаление")
                И (ПостоянныеВидыОграничений.ВидДоступа = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка))
        ПО (ТИПЗНАЧЕНИЯ(НаборыЗначенийДоступа.Объект) = ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки))
ГДЕ
    1 В
            (ВЫБРАТЬ ПЕРВЫЕ 1
                1
            ИЗ
                РегистрСведений.НаборыЗначенийДоступа КАК Наборы
            ГДЕ
                ТИПЗНАЧЕНИЯ(Наборы.Объект) = ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки)
                И Наборы.Удаление)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПостоянныеВидыОграничений.Таблица,
    ПостоянныеВидыОграничений.Право,
    ПостоянныеВидыОграничений.ВидДоступа
ИЗ
    ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений
ГДЕ
    ПостоянныеВидыОграничений.ВидДоступа <> ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    ПеременныеВидыОграничений.Таблица,
    ПеременныеВидыОграничений.Право,
    ПеременныеВидыОграничений.ВидДоступа
ИЗ
    ПеременныеВидыОграничений КАК ПеременныеВидыОграничений
ГДЕ
    ПеременныеВидыОграничений.ВидДоступа <> ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПеременныеВидыОграничений.ВидДоступа <> ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения)
    И ПеременныеВидыОграничений.ВидДоступа <> ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления)
    И ПеременныеВидыОграничений.ВидДоступа <> ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)
35 aleks_default
 
14.07.17
12:11
Т.е. вот  это
ГДЕ
    1 В
            (ВЫБРАТЬ ПЕРВЫЕ 1
                1
            ИЗ
                РегистрСведений.НаборыЗначенийДоступа КАК Наборы
            ГДЕ
                ТИПЗНАЧЕНИЯ(Наборы.Объект) = ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки)
                И Наборы.Добавление)

будет работать быстрее чем просто
ГДЕ
НаборыЗначенийДоступа.Добавление
?
36 Вафель
 
14.07.17
12:12
(35) так это разные запросы.
В одном фильтр, в другом выполнить запрос если есть запись
37 Fragster
 
гуру
14.07.17
12:19
(35) ГДЕ
НаборыЗначенийДоступа.Добавление
дает другой результат...
ну и да, такая запись транслируется в exists на скуле и использует индексы при наличии
38 aleks_default
 
14.07.17
12:23
(36) Да, точно. В (7) запрос немного другой по смыслу. Но если в справочнике Идентификаторы все элементы с уникальным значением пустой ссылки, то да, результат будет одинаковый.
39 mistеr
 
14.07.17
12:32
(34) Я бы предложил

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ТИПЗНАЧЕНИЯ(НаборыЗначенийДоступа.Объект) КАК ОбъектТипЗначения,
    Наборы.Чтение
ПОМЕСТИТЬ
    ВТтипыЧтение
...


и дальше работать с ВТ
40 mistеr
 
14.07.17
12:33
(39) То есть

ГДЕ
    Наборы.Чтение
41 Fragster
 
гуру
14.07.17
16:16
кстати, исходный запрос таки выполнился за 14600 секунд
42 Fragster
 
гуру
14.07.17
16:18
измененный примерно одну секунду выполняется
Независимо от того, куда вы едете — это в гору и против ветра!