Имя: Пароль:
1C
1С v8
Проблема с отчетом (Бухгалтерия 2.0., RLS по контрагентам, урезаны роли)
0 yabes
 
23.06.14
09:32
Всем доброе утро. Помогите, пожалуйста, разобраться.
Я делаю отчет в конфигурации Бухгалтерия 2.0, который показывает оплату от покупателей по выставленным им счетам. В базе настроено разграничение доступа к контрагентам на уровне записей и используются роли с достаточно ограниченным доступом по документам.

Вот запрос:
Поступление денежных документов

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Контрагент,
    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Договор,
    ВЫБОР
        КОГДА ХозрасчетныйОстаткиИОбороты.Субконто3 ССЫЛКА Документ.РеализацияТоваровУслуг
            ТОГДА "Счет на оплату покупателю"
        ИНАЧЕ "Другие документы"
    КОНЕЦ КАК ВидДокумента,
    ВЫБОР
        КОГДА ХозрасчетныйОстаткиИОбороты.Субконто3 ССЫЛКА Документ.РеализацияТоваровУслуг
            ТОГДА ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто3 КАК Документ.РеализацияТоваровУслуг).СчетНаОплатуПокупателю
        ИНАЧЕ ХозрасчетныйОстаткиИОбороты.Субконто3
    КОНЕЦ КАК Счет,
    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток КАК ЗадолженностьНаНачало,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК Выставлено,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК Оплачено,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК Задолженность
ПОМЕСТИТЬ ИтоговыеДанные
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , , , НЕ Счет В ИЕРАРХИИ (&Счет60), &ВидыСубконто, ) КАК ХозрасчетныйОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Контрагенты.Ссылка КАК Контрагент,
    ИтоговыеДанные.Договор,
    ИтоговыеДанные.ВидДокумента,
    ИтоговыеДанные.Счет,
    ИтоговыеДанные.ЗадолженностьНаНачало,
    ИтоговыеДанные.Выставлено,
    ИтоговыеДанные.Оплачено,
    ИтоговыеДанные.Задолженность
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ ИтоговыеДанные КАК ИтоговыеДанные
        ПО Контрагенты.Ссылка = ИтоговыеДанные.Контрагент

Пакетный запрос использовал, чтобы в результат попадали только те контрагенты к которым есть доступ у пользователя.

Проблема заключается в том, что отчет выдает ошибку, например: "Недостаточно прав для работы с таблицей "Документ.ОтчетПроизводстваЗаСмену"".
Как я понимаю все упирается в строку "ИНАЧЕ ХозрасчетныйОстаткиИОбороты.Субконто3" так как в этом случае идет соединение с таким количеством таблиц сколько видов документов бывает у Субконто3, а к некоторым из таблиц (к некоторым видам документов) у пользователя может не быть доступа.
Как тут можно исправить отчет, чтобы все заработало?
Ведь, например, у одного пользователя может быть доступ к документу РеализацияТоваровУслуг, а у второго нет доступа и если я даже вручную проверю вид документа и буду использовать "ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто3) КАК Документ.РеализацияТОваровУслуг", то все равно для пользователя у которого нет доступа выпадет ошибка.
1 vde69
 
модератор
23.06.14
09:37
сделай роль где для всех регистров и документов пропиши RLS "где ложь"

то есть доступ к таблице есть, но к данным нет. эту роль добавь всем...

вообще я для такого всегда делаю роль "БазовыеПрава" где описываю право входа в 1с и доступа к общим обьектам
2 yabes
 
23.06.14
09:42
(1) Дмитрий, если честно не понял
3 vde69
 
модератор
23.06.14
09:45
делаешь новую роль, в ней прописываешь для Документа ОтчетПроизводстваЗаСмену доступ на чтение, в доступе ставишь условие RLS "где ложь", эту роль даешь пользователю в дополнение к существующим.

проверяешь, будет следующая ошибка... таким образом пройдешь все регистраторы и будет тебе счастье
4 yabes
 
23.06.14
09:46
(1) Вы имеете ввиду дать доступ на программное чтение ко всем докам, но не на просмотр?
5 yabes
 
23.06.14
09:56
(3) попробую