Имя: Пароль:
1C
1С v8
Как на низком уровне работает "Разрешенные"?
0 Lama12
 
12.10.16
14:52
Может кто-нибудь объяснить "на пальцах" как работает "Разрешенные"? Такое ощущение, что от платформы к платформе, меняется поведение.
Есть запрос в котором обрабатывается регистр накопления. Регистратор - составной тип. Для простоты примем, что регистраторов всего 3. У каждого есть свой RLS (под определенным пользователем). В базе есть всего два вида документов которые могут быть регистратором для этого регистра. И вот, при попытке разыменовать поля регистратора происходит ошибка "Недостаточно прав для работы с таблицей ...". На месте "..." название третьего регистратора. Документов такого типа в базе вообще нет.
Мало того, теперь и конструктором запроса в консоле нельзя открыть запрос если в нем нет слова "Рарешенные" (под пользователем с ограниченными правами).

Что-то изменилось в 8.3.8 по сравнению с ранними версиями платформы? "Разрешенные" теперь и метаданные фильтрует?
1 Lama12
 
12.10.16
14:54
Кому интересно.
Вот запрос


ВЫБРАТЬ
    ДанныеРегистра.Физлицо,
    СУММА(ДанныеРегистра.СуммаВзаиморасчетовОстаток) КАК ОстатокВзаиморасчетов
ИЗ
    (ВЫБРАТЬ
        ВзаиморасчетыСРаботникамиОрганизацийОстатки.Физлицо КАК Физлицо,
        ВзаиморасчетыСРаботникамиОрганизацийОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовОстаток
    ИЗ
        РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций.Остатки(
                &НачалоМесяца,
                Организация = &ОбособленноеПодразделение
                    И Физлицо В (&ФизЛица)) КАК ВзаиморасчетыСРаботникамиОрганизацийОстатки
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ВзаиморасчетыСРаботникамиОрганизаций.Физлицо,
        ВзаиморасчетыСРаботникамиОрганизаций.СуммаВзаиморасчетов * ВЫБОР
            КОГДА ВзаиморасчетыСРаботникамиОрганизаций.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                ТОГДА 1
            ИНАЧЕ -1
        КОНЕЦ
    ИЗ
        РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций КАК ВзаиморасчетыСРаботникамиОрганизаций
    ГДЕ
        ВзаиморасчетыСРаботникамиОрганизаций.Организация = &ОбособленноеПодразделение
        И ВзаиморасчетыСРаботникамиОрганизаций.Физлицо В(&ФизЛица)
        И ВзаиморасчетыСРаботникамиОрганизаций.Период >= &НачалоМесяца
        И ВзаиморасчетыСРаботникамиОрганизаций.Период < &ДатаВзаиморасчетов
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ВзаиморасчетыСРаботникамиОрганизаций.Физлицо,
        ВзаиморасчетыСРаботникамиОрганизаций.СуммаВзаиморасчетов
    ИЗ
        РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций КАК ВзаиморасчетыСРаботникамиОрганизаций
    ГДЕ
        ВзаиморасчетыСРаботникамиОрганизаций.Организация = &ОбособленноеПодразделение
        И ВзаиморасчетыСРаботникамиОрганизаций.Физлицо В(&ФизЛица)
        И ВзаиморасчетыСРаботникамиОрганизаций.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
        И ВзаиморасчетыСРаботникамиОрганизаций.Период МЕЖДУ &НачалоКонецМесяца И &КонецМесяца
        И НЕ ВзаиморасчетыСРаботникамиОрганизаций.Регистратор ССЫЛКА Документ.НачислениеЗарплатыРаботникамОрганизаций
        И НЕ ВзаиморасчетыСРаботникамиОрганизаций.Регистратор ССЫЛКА Документ.ПереносДанных
        И ВзаиморасчетыСРаботникамиОрганизаций.Регистратор.Дата < &ДатаВзаиморасчетов
        И ЕСТЬNULL(ВзаиморасчетыСРаботникамиОрганизаций.Регистратор.ПериодРегистрации, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) = &НачалоМесяца
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ВзаиморасчетыСРаботникамиОрганизаций.Физлицо,
        ВзаиморасчетыСРаботникамиОрганизаций.СуммаВзаиморасчетов
    ИЗ
        РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций КАК ВзаиморасчетыСРаботникамиОрганизаций
    ГДЕ
        ВзаиморасчетыСРаботникамиОрганизаций.Регистратор = &Регистратор
        И ВзаиморасчетыСРаботникамиОрганизаций.Организация = &ОбособленноеПодразделение
        И ВзаиморасчетыСРаботникамиОрганизаций.Физлицо В(&ФизЛица)) КАК ДанныеРегистра

СГРУППИРОВАТЬ ПО
    ДанныеРегистра.Физлицо



Запрос из УПП. Немного модифицирован для удобства чтения. Под пользователем не обладающем ролью "РасчетчикРегламентированнойЗарплаты" без "Разрешенные" в консоли запросов открыть его в конструкторе запроса не получится.