|  | Пятничная задача на эксперта ;) | ☑ | 
    
        | 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 | 
        измененный примерно одну секунду выполняется     |  |