Отчет на СКД. Часть данных нужна в привилегированном режиме.
Ситуация:
Есть отчет на СКД. Набор данных - запрос. Формирование выходного набора данных производится с использованием агрегирования данных по таблицам с RLS.
И у пользователя нет доступа ко всем записям таких таблиц. Но учесть агрегированные данные надо по всем записям.
Пример. Есть таблица:
Подразделение Контрагент Договор
Подразделение1 Контрагент1 Договор1
Подразделение1 Контрагент2 Договор2
Подразделение2 Контрагент1 Договор3
Подразделение3 Контрагент2 Договор4
И у пользователя по РЛС, допустим, есть доступ только к записям с Подразделение В (Подразделение1, Подразделение2)
И в отчет надо вывести Подразделение + Контрагент с учетом РЛС, если у контрагента КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Договор) > 1 по ВСЕЙ таблице (без учета РЛС).
Как такое реализовать более-менее универсально?
Получается, что нужно выполнить компоновку без учета РЛС (привилегированно), а на результат уже как-то применить РЛС. Как такое сделать?
Есть отчет на СКД. Набор данных - запрос. Формирование выходного набора данных производится с использованием агрегирования данных по таблицам с RLS.
И у пользователя нет доступа ко всем записям таких таблиц. Но учесть агрегированные данные надо по всем записям.
Пример. Есть таблица:
Подразделение Контрагент Договор
Подразделение1 Контрагент1 Договор1
Подразделение1 Контрагент2 Договор2
Подразделение2 Контрагент1 Договор3
Подразделение3 Контрагент2 Договор4
И у пользователя по РЛС, допустим, есть доступ только к записям с Подразделение В (Подразделение1, Подразделение2)
И в отчет надо вывести Подразделение + Контрагент с учетом РЛС, если у контрагента КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Договор) > 1 по ВСЕЙ таблице (без учета РЛС).
Как такое реализовать более-менее универсально?
Получается, что нужно выполнить компоновку без учета РЛС (привилегированно), а на результат уже как-то применить РЛС. Как такое сделать?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ну так выполняйте компоновку в привилегированном режиме. В модуле объекта вставьте вот это:
В цикле вывода "Пока ЭлементРезультата <> Неопределено Цикл" программно применяйте ограничения
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
УстановитьПривилегированныйРежим(Истина);
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки,,,Ложь);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.НачатьВывод();
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
Пока ЭлементРезультата <> Неопределено Цикл
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
КонецПроцедуры
ПоказатьВ цикле вывода "Пока ЭлементРезультата <> Неопределено Цикл" программно применяйте ограничения
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот