1с отчет в привилегированном режиме
Появилось несколько задач сделать внешние отчеты без ограничения прав, обычные формы, клиент- сервер, УПП 1.3.
Дано: пользователь с ролями "Пользователь ", "Вывод информации", надо сделать для него отчет, например, по Основным средствам.
1. Роли добавить пользователю нельзя;
2. УстановитьПривилегированныйРежим(Истина) - во внешних отчетах на обычных формах не работает;
3. Сделать отчет на управляемых формах и встроить отчет в конфигурацию - заказчик против, т.к. у него уже настроен доступ ко внешним отчетам и обработкам через RLS.
в остается формирование отчета в привилегированном модуле.
1. В конфигурацию добавляем общий модуль ДоработкиПривилегированный с галками Сервер, Вызов сервера, Привилегированный, в который помещаем функцию формирования отчета, см.код ниже.
2. В отчете, как обычно, в основной схеме компоновки добавляем набор данных - Запрос, делаем настройки. При запуске отчета создается программно еще одна схема - но с набором данных - Объект. Копируются все поля, параметры и ресурсы. Эта схема используется в отчете для инициализации компоновщика настроек и пользователь может настроить структуру без красных крестиков на полях.
Настройки, которые установил пользователь передаются на сервер, загружаются в настройки компоновщика основной схемы
Отчет по основной схеме формируется на сервере в общем модуле ДоработкиПривилегированный, возвращается назад уже готовый результат - Табличный документ.
Очень важно. В основной схеме компоновки данных в наборах данных обязательно должны быть указаны типы значений полей.
Функция СформироватьОтчет из модуля отчета:
Функция из модуля отчета, которая создает схему с набором данных Объект:
В процедуре ПрименитьНастройку модуля отчета:
В модуле отчета основную схему компоновки данных подменяем на созданную нами схему:
Функция в общем модуле ДоработкиПривилегированный (почти копия ТиповыеОтчеты.УниверсальныйМеханизмФормированияОтчета)
В архиве внешний отчет и текст для общего модуля. Тестировался на Управление производственным предприятием, редакция 1.3 (1.3.82.1). Не проверяла на сложных схемах с произвольными макетами, вложенными схемами.
Что при разработке отчетов требуется чтобы у пользователя с ограниченными правами, отчет формировался полностью без проверки прав!
Особенно если настроен RLS
Есть несколько способов как это сделать:
1. Установить привилегированный режим в модуле отчета
Форма отчета должна быть Управляемой, далее в модуле отчета процедура обработчика «При компоновке результата»:
2. Формирование в привилегированном режиме через Общий модуль с галкой Привелигерованный
Создаем общий модуль
так же как в пункте 1 в обработчике «При компоновке результата» пишем:
В общем модуле МЕ_ДляОтчетаСКД_ПривелРежим код:
3. Если включен режим Использовать ограничение на уровне прав доступа - RLS
Часто используется в типовых. Тут в модуле для текущего пользователя можно на время формирования отчету установить параметр сеанса ИспользоватьОграниченияПравДоступаНаУровнеЗаписей в Ложь и RLS не сработает.
После завершения формирования, не забудьте включить rls обратно установив = Истина
4. Если в запросе используется конструкция вида регистратор.дата и это поле не отображается в полях отчета СКД
Допустим Вы сделали запрос по регистру накоплений и через регистратор обратились к дате или сумме документа и при формировании отчета СКД, эти поля недоступны !? как же быть?
Проблема в том - что у регистратором может выступать несколько документов и видимо права чтение/просмотр есть не на все - поэтому через скд эта таблица целиком недоступна, решение:
1. открыть доступ на все регистраторы регистра
2. в запросе четко обозначить тип
Похожие FAQ
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени Ввод по строке - поиск по первым символам или в любом месте наименования 6
При разработке конфигурации, для упрощении ввода документов потребовалось настроить ввод номенклатуры по совпадению любой части наименования! В 1С 8.3 по умолчанию настройки справочника номенклатуры такие: При такой настройке, механизм поиска в Динамический отчет на СКД с разными вариантами 4
На днях делал несколько однотипных отчетов на СКД. Общий принцип: формируются все варианты отчета, указанные в настройках схемы и каждый вариант выводится на отдельной вкладке. Потом возникла мысль попробовать объединить все схемы в один отчет Посмотреть все результаты поиска похожих
Еще в этой же категории
Как программно свернуть группировки в СКД (система компоновки данных)? 21
При формировании отчетов на СКД по умолчанию все группировки развернуты, но бывает что необходимо сразу после формирования показать отчет со свернутыми группировками! Данный код в модуле отчета позволяет свернуть группировки до необходимого уровня Как в СКД вывести дату и время формирования отчета? 6
Есть несколько вариантов вывода информации перед основным отчетом,какой лучше?! - зависит от задачи: Допустим нам нужно вывести дату и время формирования отчета и свою шапку отчета, например так: Варианты решения: 1. Использование группиров Динамический отчет на СКД с разными вариантами 4
На днях делал несколько однотипных отчетов на СКД. Общий принцип: формируются все варианты отчета, указанные в настройках схемы и каждый вариант выводится на отдельной вкладке. Потом возникла мысль попробовать объединить все схемы в один отчет СКД Внешний источник данных, грузим из ТЗ и далее получаем остатки на каждый документ 3
Очень часто бывают ситуации, когда необходимо сделать отчет СКД на сложном запросе, который используюет в себе вложенные запросы и объединения внутренние и полные и т.д. - в результате в консоли этот запрос формируется верно, а в скд половина полей СКД не выводит поле в отчет 3
Если в запросе используется конструкция вида регистратор.дата или получение еще какого-либо реквизита через регистратор и это поле не отображается в полях отчета СКД, то: Допустим Вы сделали запрос по регистру накоплений и через регистратор обратил Посмотреть все в категории Схема Компоновки Данных
Что при разработке отчетов требуется чтобы у пользователя с ограниченными правами, отчет формировался полностью без проверки прав!
Особенно если настроен RLS
Есть несколько способов как это сделать:
1. Установить привилегированный режим в модуле отчета
Форма отчета должна быть Управляемой, далее в модуле отчета процедура обработчика «При компоновке результата»:
2. Формирование в привилегированном режиме через Общий модуль с галкой Привелигерованный
Создаем общий модуль
так же как в пункте 1 в обработчике «При компоновке результата» пишем:
В общем модуле МЕ_ДляОтчетаСКД_ПривелРежим код:
3. Если включен режим Использовать ограничение на уровне прав доступа - RLS
Часто используется в типовых. Тут в модуле для текущего пользователя можно на время формирования отчету установить параметр сеанса ИспользоватьОграниченияПравДоступаНаУровнеЗаписей в Ложь и RLS не сработает.
После завершения формирования, не забудьте включить rls обратно установив = Истина
4. Если в запросе используется конструкция вида регистратор.дата и это поле не отображается в полях отчета СКД
Допустим Вы сделали запрос по регистру накоплений и через регистратор обратились к дате или сумме документа и при формировании отчета СКД, эти поля недоступны !? как же быть?
Проблема в том - что у регистратором может выступать несколько документов и видимо права чтение/просмотр есть не на все - поэтому через скд эта таблица целиком недоступна, решение:
1. открыть доступ на все регистраторы регистра
2. в запросе четко обозначить тип
Похожие FAQ
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 10
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме Автоматическая установка ширины колонки табличного документа. 0
Процедура, которая " примерно" делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего: Процедура РасчетШириныКолонок(Табличный Посмотреть все результаты поиска похожих
Что при разработке отчетов требуется чтобы у пользователя с ограниченными правами, отчет формировался полностью без проверки прав!
Особенно если настроен RLS
Есть несколько способов как это сделать:
1. Установить привилегированный режим в модуле отчета
Форма отчета должна быть Управляемой, далее в модуле отчета процедура обработчика «При компоновке результата»:
2. Формирование в привилегированном режиме через Общий модуль с галкой Привелигерованный
Создаем общий модуль
так же как в пункте 1 в обработчике «При компоновке результата» пишем:
В общем модуле МЕ_ДляОтчетаСКД_ПривелРежим код:
3. Если включен режим Использовать ограничение на уровне прав доступа - RLS
Часто используется в типовых. Тут в модуле для текущего пользователя можно на время формирования отчету установить параметр сеанса ИспользоватьОграниченияПравДоступаНаУровнеЗаписей в Ложь и RLS не сработает.
После завершения формирования, не забудьте включить rls обратно установив = Истина
4. Если в запросе используется конструкция вида регистратор.дата и это поле не отображается в полях отчета СКД
Допустим Вы сделали запрос по регистру накоплений и через регистратор обратились к дате или сумме документа и при формировании отчета СКД, эти поля недоступны !? как же быть?
Проблема в том - что у регистратором может выступать несколько документов и видимо права чтение/просмотр есть не на все - поэтому через скд эта таблица целиком недоступна, решение:
1. открыть доступ на все регистраторы регистра
2. в запросе четко обозначить тип
Похожие FAQ
Мне нужно чтобы мой отчет(встроенный в конфигурацию, на СКД) получил и показал пользователю данные без ограничений по РЛС, как сделать так, чтобы отчет работал в привилегированном режиме?
(1) Но тогда придется делать запрос в модуле отчета и передавать его результат в СКд объектом, я правильно понимаю? А можно сделать так, чтобы отчет сам отработал в привилегированном режиме?
(6) нашел вот такую тему:
КомпоновщикМакетаКомпоновкиДанных (DataCompositionTemplateComposer)
Выполнить (Execute)
Синтаксис:
Тип: СхемаКомпоновкиДанных.
Тип: МакетОформленияКомпоновкиДанных.
Указывает тип генератора макета компоновки данных.
Возможные типы:
ГенераторМакетаКомпоновкиДанных (DataCompositionTemplateGenerator)
.
Значение по умолчанию: Тип("ГенераторМакетаКомпоновкиДанных").
Тип: Булево.
Определяет, выполнять ли проверку прав на просмотр полей и проверку доступности поля во включенных функциональных возможностях.
Тип: Структура.
Содержит параметры функциональных опций, используемые при исполнении отчета.
Возвращаемое значение:
Тип: МакетКомпоновкиДанных.
Созданный макет компоновки.
Описание:
зачем такие извращения, если есть в модуле ПриКомпоновкеРезультата() и там вполне можно УстановитьПривилегированныйРежим(Истина);
(10) Сделал в модуле объекта нужного отчета
когда открываю отчет под пользователем с ограничениями РЛС пишет мне:
Тоже самое, когда открываю, еще до того, как открывается форма, пишет мне
Получается, только запрос в модуле объекта писать, так, и потом объектом в СКД?
У пользователя, из под которого я пробую вообще нет прав на просмотр поступлений(в профиле групп доступа не указана соответствующая роль), это привилегированный режим обойдет?
(25) В (0) про ограничение по РЛС написано которое можно обойти, отсутствие прав как таковых это другая немного тема.
Не?
(0)схему выполнить на сервере привилигированно, пользователю уже показать Табличный документ, предположу что неразрешенных ссылок в нем не должно быть.
(27) То и означает, ограничения на уровне строк данных, т.е. доступ к самой таблице подразумевается что есть.
Ваше мнение что такое РЛС?
(29) Это запрет на просмотр "строк данных" (в таблицах). И привилегированный режим никак тут не поможет эти ограничения обойти, если как в (4) (а много ты видел отчетов где нет ссылок, а только их представления?)
(30)Еще раз говорю, если доступ к таблице есть, то РЛС обходится легко.Код я привел выше.
Проведите эксперимент.
1. Отчет в составе конфы.
2 в скд запрос выбрать все поля из справочника организации, в настройках детальные записи ссылка, код, инн все что хотите
3. Скопируйте процедуру прикомпоновке в модуль объекта.
4. Откройте пользователем у которого рлс на организации и удивитесь что в отчете показаны ВСЕ организации, даже те к которым у него нет доступа
(31) Лениво проверять, поверю наслово.
Только добавлю, что РЛС накладывается на "базовые" права "Чтение", "Добавление", "Изменение" и "Удаление", а на "Просмотр" уже не наложить, и вот отсутствие у пользователя права на право (пардон за каламбур) "Просмотр" все-таки поставит крест на идее вывода в отчет ссылок, пусть и успешно полученных в привилегированном режиме :)
Предлагаю сойтись на том, что право "Просмотр" (которое никак ограничивать через РЛС нельзя) для объекта метаданных должно у пользователя быть, если в отчет выводятся ссылки. Ну и для просмотра всех таких ссыллок, а не только тех, что разрешены через РЛС, нужно использовать привилегированный режим.
Вроде так.
(32) Интересная информация. Видимо, у таких отчетов обязательно используются отборы (возможно автоматические), списки значений для которых формируются вне привилегированного режима. Не видит же пользователь там данные по неразрешенным организациям?
Кстати там и хитрые шаблоны РЛС есть типа "две организации в шапке" (для документов передачи чего-нибудь из одной в другую) и еще похлеще.
(33)Переобулись?
Зачем сливать в кучу разные понятия.
1.Как вы называете "Базовые права" это первый уровень ограничения, разрешено пользователю в принципе что то делать с объектом или нет, а РЛС это второй т.е. следующий уровень.РЛС без положительного первого уровня смысла не имеет вовсе.
2.В отчетах РЛС обходится методом выше и в отчете вы увидите и ссылки и не ссылки все что захотите.Но интерактивно открыть эти ссылки не получится если РСЛом они запрещены. Т.е. все работать будет штатно.
3.Выводы верные.Но сколько сил нужно чтобы вы поняли что были не правы.
(13) Можно, попробовать:
- В отчете очищаем поле Основная схема компоновки данных, тогда при открытии не будет ошибки отсутствия прав на таблицу
- При компоновке результата: включаем привилегированный режим, компонуем отчет по-своему с использованием СКД.
(35) Ну, не совсем переобулся. Без права на "Просмотр" обход РЛСов в отчетах не поможет, так что "все ок будет" - не всегда, однако :)
Но Я открыт всему новому!
Вот как получилось - в запросе везде прописал ВЫБРАТЬ РАЗРЕШЕННЫЕ, а в модуле отчета сделал как в (18). Так работает, менеджер с ограничениями по РЛС получает все данные.
Читайте также: