Установить привилегированный режим 1с
Подскажите пожалуйста
есть отчет, с компонировокой данных, в котором есть такой запрос :
ВЫБРАТЬ
ХозрасчетныйОбороты.Счет,
ХозрасчетныйОбороты.Период,
ХозрасчетныйОбороты.Субконто1,
ХозрасчетныйОбороты.Субконто2,
ХозрасчетныйОбороты.Субконто3,
ХозрасчетныйОбороты.КорСчет,
ХозрасчетныйОбороты.КорСубконто1,
ХозрасчетныйОбороты.КорСубконто2,
ХозрасчетныйОбороты.КорСубконто3,
ХозрасчетныйОбороты.Организация,
ХозрасчетныйОбороты.Валюта,
ХозрасчетныйОбороты.ВалютаКор,
ХозрасчетныйОбороты.СуммаОборот,
ХозрасчетныйОбороты.СуммаОборотДт,
ХозрасчетныйОбороты.СуммаОборотКт,
ХозрасчетныйОбороты.ВалютнаяСуммаОборот,
ХозрасчетныйОбороты.ВалютнаяСуммаОборотДт,
ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт,
ХозрасчетныйОбороты.ВалютнаяСуммаКорОборот,
ХозрасчетныйОбороты.ВалютнаяСуммаКорОборотДт,
ХозрасчетныйОбороты.ВалютнаяСуммаКорОборотКт,
ХозрасчетныйОбороты.КоличествоОборот,
ХозрасчетныйОбороты.КоличествоОборотДт,
ХозрасчетныйОбороты.КоличествоОборотКт,
ХозрасчетныйОбороты.КоличествоКорОборот,
ХозрасчетныйОбороты.КоличествоКорОборотДт,
ХозрасчетныйОбороты.КоличествоКорОборотКт
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(,,Месяц) КАК ХозрасчетныйОбороты
Вопрос : как дать право пользователю с ограниченными правами его сформировать.
пробую всавить ПриОткрытии() формы - УстановитьПривилегированныйРежим(Истина) но оно нифига не работает ;
(12) Человеку надо не разрешенные, а все дать выбрать.
(11) Поставьте точку останова (выберите строку и нажмите F9) на строке с "Установить привелигированный режим", запустите отладку из конфигуратора. Посмотрите, выполняется ли вообще эта строка.
В клиент-серверном варианте при выполнении на клиенте данный метод не выполняет никаких действий.
Первое выполнение метода с параметром Истина в файловом варианте информационной базы или на сервере в клиент-серверном варианте информационной базы включает привилегированный режим.
1. Где установить режим НаСервере ??
2. В том и дело что пользователю полные Парва нельзя давать ((((. Что делать ?
Создать управляемую форму и вызывать требуюмую функциональность на стороне сервера в серверной процедуре
из обычного режима, даже если процедура установки привегилерованного режима описана в общем модуле обрамлена
всё равно данный режим не установить.
Уточняющий вопрос вам
а чём заключается ограниченный набор прав вашего пользователя
имеет ли он доступ на просмотр регистра бух-рии
Для СКД насколько я выяснил, имеет важное значение начальный набор прав, по нему инициализируются настройки СКД, заполняются
настройки на базе настроек по умолчанию
если у пользователя нет прав на (чтение, просмотр ) источника данных, то СКД и начальные настройки не заполнит, не важно что потом вы при формировании отчёта устанавливаете привегилерованный режим. Даже если вы установите привегилерованный режим, он устанавливается на сервере а настройки компоновщика на мой взгляд либо заполняются еще раньше, чем вызывается данный метод,
либо как то по другому, работает платформа, чего я не понял, В любом случае если не заполнятся настройки отчета не будет.
На приведенном вами скриншоте, вы запускаете отчёт, и получаете исключение, значит у вас как пользователя с ограниченным набором прав есть доступ на чтение.
Поэтому
1. что вам нужно сделать это определиться с правами
если вы хотите, чтобы юзер вообще данные не видел, доступ на чтение и просмотр, все равно предоставьте, единственное, на
чтение настройте RLS
как я привел на скрине 1. (предоставление доступа позволить СКД заполнить настройки формирования отчёта)
2. Формирование, отчёт СКД, мне видется единственный вариант, это сделать программно, в этом режиме мы можем перед выполнением
стандртного кода установить привегилерованный режим
Система прав доступа позволяет описывать наборы прав, соответствующие должностям пользователей или виду деятельности. Структура прав определяется конкретным прикладным решением.
Кроме этого, для объектов, хранящихся в базе данных (справочники, документы, регистры и т. д.) могут быть определены права доступа к отдельным полям и записям. Например, пользователь может оперировать документами (накладными, счетами и т. д.) определенных контрагентов и не иметь доступа к аналогичным документам других контрагентов.
Для реализации ограничения прав доступа в прикладных решениях предназначены специальные объекты конфигурации — Роли. Подробнее.
Интерактивные и основные права
Все права, поддерживаемые системой «1С:Предприятие 8», можно разделить на две большие группы: основные и интерактивные. Основные права описывают действия, выполняемые над элементами данных системы или над всей системой в целом, и проверяются всегда, независимо от способа обращения к данным. Интерактивные права описывают действия, которые могут быть выполнены пользователем интерактивно. Соответственно проверяются они только при выполнении интерактивных операций стандартными способами, причем в клиент-серверном варианте все проверки прав (кроме интерактивных) выполняются на сервере.
Основные и интерактивные права взаимосвязаны. Например, существует основное право Удаление, которому соответствуют два интерактивных права: Интерактивное удаление и Интерактивное удаление помеченных. Если пользователю запрещено Удаление, то и все интерактивные «удаления» также будут запрещены для него. В то же время, если пользователю разрешено Интерактивное удаление помеченных, это значит, что Удаление ему также разрешается.
Кроме того, основные права могут зависеть друг от друга. В результате образуются довольно сложные цепочки взаимосвязей, которые отслеживаются системой автоматически: как только разработчик снимает разрешение на какое-либо право, система сама снимает разрешения на все права, которые зависят от этого права. И наоборот, при установке какого-либо права разработчиком, система сама устанавливает все права, от которых это право зависит.
Например, для того, чтобы пользователь имел право Итерактивное удаление помеченных, ему необходимо обладать интерактивными правом Редактирование. Это право, в свою очередь, требует наличия интерактивного права Просмотр.
Право Интерактивное удаление помеченных требует наличия основного права Удаление. Интерактивное право Редактирование требует наличия основного права Изменение. Интерактивное право Просмотр требует наличия основного права Чтение.
Кроме этого основные права Изменение и Удаление требуют наличия основного права Чтение.
Ограничение доступа к данным на уровне записей и полей
Среди действий над объектами, хранящимися в базе данных (справочниками, документами и т. д.), есть действия, отвечающие за чтение или изменение информации, хранящейся в базе данных. К таким действиям относятся:
- чтение — получение записей или их фрагментов из таблицы базы данных;
- добавление — добавление новых записей без изменения существующих;
- изменение — изменение существующих записей;
- удаление — удаление некоторых записей без внесения изменений в оставшиеся.
Для этих действий в процессе настройки ролей могут быть заданы дополнительные условия на данные (ограничение доступа к данным). В этом случае над конкретным объектом, хранимым в базе данных, может быть выполнено запрошенное действие только в том случае, если ограничение доступа к данным для данных этого объекта принимает значение «истина». Аналогичные условия могут быть заданы и для таблиц базы данных, не имеющих объектной природы (регистров).
Для объектных таблиц и регистров сведений могут быть заданы разные ограничения для различных полей таблицы, что позволяет определять ограничения не только на уровне записей базы данных, но и на уровне отдельных ее полей:
Для регистров накопления, бухгалтерского учета и расчета условия позволяют разграничить доступ по значениям измерений (для регистров бухгалтерского учета по балансовым измерениям), а для объектных данных и регистров сведений условия позволяют разграничивать доступ к данным по любым полям.
Условия ограничения можно ввести вручную или создать с помощью конструктора ограничений доступа к данным.
Параметры сеанса
Параметры сеанса представляют собой объекты прикладного решения, которые предназначены для использования в ограничениях доступа к данным для текущего сеанса (но могут применяться и для других целей). Их значения сохраняются в течение данного сеанса «1С:Предприятия 8». Использование параметров сеанса позволяет снизить время доступа к данным при ограничении доступа на уровне записей и полей. Подробнее.
Выполнение на сервере без проверки прав
Привилегированные модули
Существует возможность назначения привилегированных модулей. В такие модули могут быть перенесены операции, использующие данные, на которые у текущего пользователя нет прав.
Например, пользователю могут быть назначены права, позволяющие создавать новый документ. Однако никаких прав на регистр, в котором этот документ создает движения при проведении, пользователю не дано. В такой ситуации процедура проведения документа может быть вынесена в привилегированный модуль, который выполняется на сервере без проверки прав. В результате, несмотря на то, что соответствующий регистр для пользователя недоступен, пользователь все же сможет проводить созданные им документы.
Привилегированный режим исполнения программного кода
Привилегированный режим исполнения кода, аналогичный режиму работы кода привилегированных модулей, можно включить/выключить средствами встроенного языка. Для этого в глобальном контексте предусмотрена процедура УстановитьПривилегированныйРежим (), а также функция ПривилегированныйРежим (), которая позволяет определить, включен привилегированный режим, или нет.
Использование привилегированного режима позволяет, во-первых, ускорить работу, так как не будут накладываться ограничения на доступ к данным, а во-вторых, позволяет выполнять операции с данными от лица пользователей, которым эти данные недоступны.
Привилегированный режим рекомендуется использовать тогда, когда с логической точки зрения нужно отключить проверку прав, или когда можно отключить проверку прав, чтобы ускорить работу. Допустимо использовать привилегированный режим тогда, когда работа с данными от лица некоторого пользователя не нарушает установленные для этого пользователя права доступа.
Добрый день. Не могу установить привилегированный режим во внешней обработке. Управляемые формы, файловая база. На основных формах УстановитьПривилегированныйРежим(Истина) отрабатывает, а на управляемых нет. Ошибок не пишет, просто не устанавливается. Кто-нибудь сталкивался?
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
В клиент-серверном варианте при выполнении на клиенте данный метод не выполняет никаких действий.
Выноси процедуру на сервер.
Обычные формы -> Толстый клиент.
Если в управляемых запустишь, тогда необходимо толстый клиент принудительно запускать.
на клиенте или на сервере устанавливаете?
на клиенте работать не будет.
Еще такой нюанс по управляемым формам, если данные передаются в другую процедуру/функцию, а установка привелигированного режима произошла вне их, то он работать не будет.
(3) V1shenka, Устанавливаю на сервере. Вот код:
(4) makmmakm, почти хакерство :)
Не устанавливается ПривилегированныйРежим, или не изменяет пользователя в параметрах сеанса? Это совсем разные вещи.
База типовая?
Установить ПривилегированныйРежим во внешней обработке может только пользователь с полными правами.
Иначе, первый же залетевший дятел уничтожил бы цивилизацию (с)
(7) Чуть поправлю не полные права дают возможность "устанавливать" привилегированный режим. А право администрирование. Которого у полных прав кстати нет. Для использования функционала
(8) право Администрирование вообще не дает право даже на запуск программы в режиме предприятия. Оно как бы для другого нужна.
Именно "Полные права" дают возможность "Установить" привилегированный режим для внешней обработки. Точнее даже не дает, а Привилегированный режим для полных прав включен автоматически. Его нельзя отключить.
вынести надо в серверный модуль (для клиент серверного) , иначе не включится. - а вот в файловом это сработает.. есть такие грабли - отладка на файловой и клиент-серверной это совсем разные вещи((
можно проверить вызовом ПривилегированныйРежим() - увидишь что Ложь.
Я имел ввиду права а не роли. В разных решениях состав прав у ролей может быть разный. Если взять последнюю БСП то с одними полными правами без права Администрирование вы не установите привилегированный режим нигде. Даже в привилегированном общем модуле будет отключен. В данный момент вы это делаете так как имеет по умолчанию роль Администратор системы.
(10) кажется Вы запутались в терминологии. Право "Полные права" нет. Совсем нет. Есть роль "Полные права", которая означает, что включены все права на все.
Если отключить право "Администрирование", то это уже не полные права.
С другой стороны одно единственное право "Администрирование" не позволит даже запустить программу в режиме предприятия.
Хотя я и понял, что Вы имеете ввиду, что право "Администрирование" является обязательным условием. Но оно входит в полные права.
Приведите цитату где я назвали роль Полные права - правом.
В каком решении право администрирование входит в роль "Полные права"?
Все конфигурации до БСП. Это текущие на ОФ. УТ10, БП2 и т.д.
На БСП построен механизм более гибкого регулирования правами прямо в коде.
В целом я Вас понял.
(13) Сейчас посмотрел древние (но еще рабочие) версии. Действительно там полные права это superuser.
Забыл этот момент. Хотя когда-то очень давно работал с этим. А еще раньше с топориками. Тогда все было проще.
P.S.: Работаю с последними версиями (всегда), так что за легкое недопонимание извиняюсь.
В ЗУП 3 такая же ситуация была. Ругался на запрос.
В итоге
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
.
Ещё момент - Если включен режим "Ограничивать доступ на уровне записей" - тоже может причинить кучу проблем, если в обработке используются другие элементы конфигурации, например Регистр Сведений Таблицы Прав Пользователей или Справочник Файлы - на них нужно явно давать разрешения на конкретную роль в самой конфигурации.
для пользователя стоит ограничения RLS на чтения Хозрасчетного плана счетов на 661 счет. Но нужно дать право пользователю формировать отчет Декларацию по труду, как правильно включить Привелигированный режим?
С такой постановкой вопроса ответ один: "Найти программиста 1С, чтобы тот "правильно" установил привилегированный режим =)".
могу кинуться копипастой из СП
Глобальный контекст (Global context)
УстановитьПривилегированныйРежим (SetPrivilegedMode)
Синтаксис:
Тип: Булево.
Определяет, будет ли включен привилегированный режим:
Истина - включить режим;
Ложь - выключить режим.
вызывать нужно НаСервере
либо зафигачить нужный код в общий привилегированный модуль
При нажатии на кнопке в отчете вызывается такая процедура я дописал установка режима но 1с не видить моих процедур как быть?
Процедура КоманднаяПанельФормыЗаполнить(Кнопка)
УстановкаРежима();
Очистить();
ЗаполнитьАвто();
ОтменаРежима();
УстановитьПривилегированныйРежим(Истина) нужно писать вначале процедуры, в которой идет обращение к данным. Либо вызывать процедуру обращения к данным из привилегированного общего модуля.
Надо учесть (из синт. помощьника): "В клиент-серверном варианте при выполнении на клиенте данный метод не выполняет никаких действий."
Пример обращение к параметру сеанса без контроля прав доступа из типовой конфы:
Окей я понян но только в Декларации о прибыли затруднительно будет переносит весь код в общие привелигированные модуля.
Как можно вызвать процедуру на сервере и там установить режим но будет ли он работать для клиента?
Спасибо.
Весь код переносить не нужно.
Например (грубый пример), есть процедура СФОРМИРОВАТЬ(), вызывается из формы, обращается к данным с проверкой прав.
Процедура Сформировать()
ЭтотОбъект.ПроцОбращенияКДанным();
конецпроцедуры
Нужно создать общий модуль, поставить в свойствах галочку Привилегированный. Создать в нем экспортную процедуру:
Процедура ПроцОбращенияКДаннымБезПроверкиПрав(объект)
объект.ПроцОбращенияКДанным(); //вызвать из привилегированного модуля. Проверки прав не будет
конецпроцедуры
Тут нужно учитывать, используется ли клиент-серверный вариант (с ним свои заморочки)
Но, возможно в конкретном случае будет более уместно вызывать УстановитьПривилегированныйРежим(истина) (если файловый вариант, то париться с клиент-сервером не надо)
В системе 1С Предприятие 8.3 можно задавать выполнение кода в привилегированном режиме. Привилегированный режим 1С – это режим, при котором отключается проверка прав на уровне записей (RLS), не производится контроль прав пользователя 1С (роли пользователя), что позволяет ускорить выполнение кода и позволяет прочесть или записать нужные данные.
2. Работа в привилегированном режиме
Имеется несколько возможностей работы в привилегированном режиме.
· Вызов процедуры или функции из общего модуля с включенным флагом «Привилегированный».
Здесь можно располагать процедуры чтения и изменения данных, которые нужно выполнить, несмотря на доступные пользователю права доступа к объектам конфигурации.
Например, есть пользователь с ролью «Кассир». Обычно эта роль с сильно ограниченным набором прав и ему доступен только документ регистрации продаж. Перед записью документа необходимо проверить взаиморасчеты с клиентом. В этом случае вызывается процедура из общего модуля с флагом «Привилегированный», а обратно возвращается результат проверки. При этом пользователю не доступны сами данные о взаиморасчетах.
Другой пример – документ продажи оформляет кладовщик, у которого нет прав на регистр накопления «Продажи». В привилегированном режиме он сможет провести документ и записать данные в регистр продаж, при этом доступа к данным регистра он не получит.
· Использование процедуры глобального контекста УстановитьПривилегированныйРежим (), где «Включить» – обязательный параметр типа Булево. В этом случае:
Истина – включает привилегированный режим;
Ложь – отключает привилегированный режим в 1С.
В клиент-серверном варианте работы информационной базы при вызове этого метода на клиенте привилегированный режим не включается.
Такой подход может использоваться при формировании отчета в 1С, где возможна ситуация, что отчет будет получать данные из регистров, которые недоступны пользователю. В этом случае процедуру получения данных нужно запустить в привилегированном режиме 1С:
В основном количество вызовов включения привилегированного режима должно быть равным количеству вызовов выключения режима, однако, они могут различаться. Привилегированный режим автоматически выключится при возврате из функции/процедуры, в который он был включен. Если количество вызовов выключения привилегированного режима будет больше чем количество вызовов включения, то будет вызвано исключение.
Добавим, что привилегированный режим следует включать только для тех участков кода, где это действительно необходимо и отключать сразу же после выполнения этого фрагмента, чтобы в дальнейшем не терялась проверка прав пользователя.
Существует метод проверки активности привилегированного режима:
ПривилегированныйРежим(), который возвращает Истина или Ложь.
Также, начиная с версии 8.2, в платформе для документов в свойствах объекта конфигурации добавлены свойства «Привилегированный режим при проведении» и «Привилегированный режим при отмене проведения». Эти свойства автоматически устанавливаются в значение Истина при создании документа. В результате проведение и отмена проведения документа будет выполнено в привилегированном режиме.
Для объекта конфигурации «Бизнес-процесс» добавлено свойство «Привилегированный режим при создании задач». Оно также автоматически устанавливается в значение Истина при создании нового бизнес-процесса.
Есть несколько исключений, при которых не будет установлен привилегированный режим:
· Если установку привилегированного режима пытаться вызвать из внешней обработки с включенной защитой от опасных действий у пользователя (ЗащитаОтОпасныхДействий);
· Если информационная база работает в клиент-серверном режиме, а в консоли кластера серверов в свойствах информационной базы выбран профиль безопасности без флага «к привилегированному режиму»:
Подводя итог, следует сканцентрировать внимание на том, что привилегированный режим в 1С нужно использовать тогда, когда это увеличит скорость работы системы за счет отключения проверки прав, но не будет противоречить логике программы. Данный режим уместен тогда, когда его использование точно не приведет к нежелательным проводкам или утечке данных.
Специалист компании ООО «Кодерлайн»
Решетников Дмитрий Сергеевич
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Читайте также: