Установить привилегированный режим 1с

Обновлено: 07.07.2024

Подскажите пожалуйста
есть отчет, с компонировокой данных, в котором есть такой запрос :
ВЫБРАТЬ
ХозрасчетныйОбороты.Счет,
ХозрасчетныйОбороты.Период,
ХозрасчетныйОбороты.Субконто1,
ХозрасчетныйОбороты.Субконто2,
ХозрасчетныйОбороты.Субконто3,
ХозрасчетныйОбороты.КорСчет,
ХозрасчетныйОбороты.КорСубконто1,
ХозрасчетныйОбороты.КорСубконто2,
ХозрасчетныйОбороты.КорСубконто3,
ХозрасчетныйОбороты.Организация,
ХозрасчетныйОбороты.Валюта,
ХозрасчетныйОбороты.ВалютаКор,
ХозрасчетныйОбороты.СуммаОборот,
ХозрасчетныйОбороты.СуммаОборотДт,
ХозрасчетныйОбороты.СуммаОборотКт,
ХозрасчетныйОбороты.ВалютнаяСуммаОборот,
ХозрасчетныйОбороты.ВалютнаяСуммаОборотДт,
ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт,
ХозрасчетныйОбороты.ВалютнаяСуммаКорОборот,
ХозрасчетныйОбороты.ВалютнаяСуммаКорОборотДт,
ХозрасчетныйОбороты.ВалютнаяСуммаКорОборотКт,
ХозрасчетныйОбороты.КоличествоОборот,
ХозрасчетныйОбороты.КоличествоОборотДт,
ХозрасчетныйОбороты.КоличествоОборотКт,
ХозрасчетныйОбороты.КоличествоКорОборот,
ХозрасчетныйОбороты.КоличествоКорОборотДт,
ХозрасчетныйОбороты.КоличествоКорОборотКт
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(,,Месяц) КАК ХозрасчетныйОбороты

Вопрос : как дать право пользователю с ограниченными правами его сформировать.
пробую всавить ПриОткрытии() формы - УстановитьПривилегированныйРежим(Истина) но оно нифига не работает ;

(12) Человеку надо не разрешенные, а все дать выбрать.
(11) Поставьте точку останова (выберите строку и нажмите F9) на строке с "Установить привелигированный режим", запустите отладку из конфигуратора. Посмотрите, выполняется ли вообще эта строка. (1) или вы хотите, чтобы пользователь с ограниченными правами видел всю информацию регистра? В клиент-серверном варианте при выполнении на клиенте данный метод не выполняет никаких действий.
Первое выполнение метода с параметром Истина в файловом варианте информационной базы или на сервере в клиент-серверном варианте информационной базы включает привилегированный режим. вопрос остается не понятным
как дать право пользователю с ограниченными правами его сформировать ? (3)
1. установить режим НаСервере
2. дать пользователю нужные права 1. Где установить режим НаСервере ??
2. В том и дело что пользователю полные Парва нельзя давать ((((. Что делать ? Выполнять процедуру в событии ПриСозданииНаСервере.

Создать управляемую форму и вызывать требуюмую функциональность на стороне сервера в серверной процедуре

из обычного режима, даже если процедура установки привегилерованного режима описана в общем модуле обрамлена

всё равно данный режим не установить.

а можно как-то подробнее расписать, не могу понять что и где делать

Уточняющий вопрос вам
а чём заключается ограниченный набор прав вашего пользователя
имеет ли он доступ на просмотр регистра бух-рии

Для СКД насколько я выяснил, имеет важное значение начальный набор прав, по нему инициализируются настройки СКД, заполняются
настройки на базе настроек по умолчанию
если у пользователя нет прав на (чтение, просмотр ) источника данных, то СКД и начальные настройки не заполнит, не важно что потом вы при формировании отчёта устанавливаете привегилерованный режим. Даже если вы установите привегилерованный режим, он устанавливается на сервере а настройки компоновщика на мой взгляд либо заполняются еще раньше, чем вызывается данный метод,
либо как то по другому, работает платформа, чего я не понял, В любом случае если не заполнятся настройки отчета не будет.
На приведенном вами скриншоте, вы запускаете отчёт, и получаете исключение, значит у вас как пользователя с ограниченным набором прав есть доступ на чтение.

Поэтому
1. что вам нужно сделать это определиться с правами
если вы хотите, чтобы юзер вообще данные не видел, доступ на чтение и просмотр, все равно предоставьте, единственное, на
чтение настройте RLS
как я привел на скрине 1. (предоставление доступа позволить СКД заполнить настройки формирования отчёта)

2. Формирование, отчёт СКД, мне видется единственный вариант, это сделать программно, в этом режиме мы можем перед выполнением
стандртного кода установить привегилерованный режим

Объект "Роли" предназначен для определения набора прав (совокупности разрешений) пользователей конфигурации (ограничения прав доступа в прикладных решениях). Роль определяет, какие действия, над какими объектами метаданных может выполнять пользователь, выступающий в этой роли.

Роль в конфигурации может соответствовать:

  • должностям групп пользователей или
  • видам деятельности групп пользователей,

для работы которых предназначена данная конфигурация (например, "Администратор" или "Продавец").

В процессе ведения списка пользователей прикладного решения каждому пользователю ставится в соответствие одна или несколько ролей (т.е. в версии 1C 8.х каждый пользователь может иметь несколько ролей).

Для каждого из объектов (справочники, документы) разработчик устанавливает свой набор прав — чтение, запись, изменение, и т.д.

Роли 1С настройка прав доступа

Описание ролей 1С

В 1С общая логика управления доступом - это логика разрешений (нет никаких механизмов запрета доступа, а есть только механизмы выдачи доступа).

По умолчанию доступ ко всем данным запрещен. Настройка доступа заключается в выдаче каждому пользователю нужных ему прав: если какой-то ролью пользователю дано право на просмотр, например, документов "Накладная", то никакими способами нельзя это право отнять (другими ролями или любыми другими механизмами платформы и конфигурации). Т.е. если доступ уже выдан, то забрать его другими ролями нельзя. Поэтому при ограничении ролями доступа пользователям к справочнику очень важно проверять, что пользователю не назначена никакая другая роль на тот же справочник.

Можно изначально выдать не полный доступ к справочнику, а отфильтровать с помощью RLS данные, на которые мы даем доступ.

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

Настройка объекта "Роли" 1С

Окно настройки объекта "Роли" содержит две вкладки:

  1. Права (основная)
  2. Шаблоны ограничений (для настройки прав на уровне записей - RLS, Row Level Security).

Настройка ролей в 1С

Настройка объекта "Роли" на вкладке "Права"

Вкладка "Права" окна настройки объекта "Роль" содержит:

  • Список "Объекты" — список метаданных, на которые могут устанавливаться права доступа.
  • Список "Права" — список доступных для настроек прав.
  • Табличную часть "Ограничение доступа к данным" — поля роли для настройки RLS (настроек прав на уровне записей).
  • Флаг "Устанавливать права для новых объектов" — если флаг установлен, на новые объекты метаданных будут автоматически установлены разрешающие права.
  • Флаг "Устанавливать права для реквизитов и табличных частей по умолчанию" — если флаг установлен, реквизиты и табличные части будут наследовать права владельца (справочника, документа и т.д.).
  • Флаг "Независимые права подчиненных объектов" — если флаг установлен, то права родительского объекта не учитываются. Если флажок снят, то при определении права подчиненного объекта анализируется соответствующее право родительского объекта: если у родительского объекта право отсутствует, у подчиненного объекта также отсутствует право, вне зависимости от состояния права у подчиненного объекта.

Список прав на всю конфигурацию 1С:

  1. Чтение — чтение (программное).
  2. Добавление — добавление (программное).
  3. Изменение — изменение (программное).
  4. Удаление — удаление (программное).
  5. Просмотр — просмотр.
  6. Интерактивное добавление — интерактивное добавление.
  7. Редактирование — редактирование.
  8. Интерактивная пометка удаления — интерактивная пометка на удаление.
  9. Интерактивное снятие пометки удаления — снятие пометки на удаление.
  10. Интерактивное удаление помеченных— удаление помеченных объектов.
  11. Ввод по строке — использование режима ввода по строке.
  12. Интерактивное удаление — непосредственное удаление (shift +del).
  1. Интерактивное проведение — проведение.
  2. Отмена проведения — отмена проведения документов.
  3. Интерактивное проведение неоперативное — проведение (стандартными командами форм) документа в неоперативном режиме.
  4. Интерактивная отмена проведения — интерактивная отмена проведения.
  5. Интерактивное изменение проведенных — право на редактирование проведенного документа. Если право у роли не установлено, то форма такого документа открывается в режиме просмотра и пользователь не может:
    • удалить проведенный документ,
    • установить пометку удаления,
    • перепровести или
    • сделать непроведенным.
Права только для регистров сведений, накопления и бухгалтерии

УправлениеИтогами — управление итогами регистра бухгалтерии и регистра накопления (установка периода, по который рассчитаны итоги, и пересчет итогов).

Палитра свойств общего модуля 1С

Объект "Общие модули" содержит программный код (процедуры и функции), вызываемый из других мест конфигурации (используемый в других программных модулях), и может принадлежать всей конфигурации.

Примеры общего модуля 1С:

  • расчет количества разницы рабочих дней;
  • пересчет курсов валют;
  • пересчет количества/цены/суммы в табличной части; проведения по какому-то регистру, и др.

Особенности объекта "Общий модуль":

  1. содержат только раздел процедур и функций;
  2. не могут содержать объявления переменных ;
  3. нет раздела основной программы
  4. экспортируемые переменные, процедуры и функции модуля приложения не доступны в общих модулях;
  5. экспортируемые процедуры и функции общих модулей доступны :
    • в модуле приложения,
    • других общих модулях,
    • остальных программных модулях.
  6. в конфигурации общих модулей может быть несколько (в отличие от модуля приложения, единственного для конфигурации ).

Палитра свойств объекта "Общие модули"

Палитра свойств общего модуля 1С


"Глобальный" — если флаг установлен, функции и процедуры из этого модуля становятся доступны в глобальном контексте (их можно вызвать в любом месте конфигурации, обращаясь без названия общего модуля). При этом названия процедур и функций должны быть уникальны в рамках глобального контекста.

Если флаг не установлен, то экспортируемые методы общего модуля не являются частью глобального контекста и могут иметь одинаковые имена в разных неглобальных общих модулях.

"Клиент (управляемое приложение)" — если флаг установлен, методы общего модуля будут доступны для тонкого клиента, веб-клиента, а также для толстого клиента в режиме управляемого приложения.

В контексте неглобального общего модуля с установленным свойством "Клиент (управляемое приложение)" доступны экспортируемые переменные, процедуры и функции модуля управляемого приложения.

"Сервер" — если флаг установлен, процедуры и функции данного общего модуля могут быть выполнены на сервере (в клиент-серверном варианте).

"Внешнее соединение" — если флаг установлен, программные коды данного общего модуля могут быть выполнены при подключении внешним источником (например, COM).

В контексте неглобального общего модуля с установленным свойством " Внешнее соединение" доступны экспортируемые переменные, процедуры и функции модуля внешнего соединения.

"Клиент (обычное приложение)" - если флаг установлен, все процедуры и функции общего модуля могут использоваться в клиентском приложении. Внимание: свойство "Клиент (обычное приложение)" показывается, если в настройках конфигурации режима запуска ("Сервис - Параметры") установлен режим "Управляемое приложение и обычное приложение".

В контексте неглобального общего модуля с установленным свойством "Клиент (обычное приложение)" доступны экспортируемые переменные, процедуры и функции модуля обычного приложения.

"Вызов сервера" — флаг, разрешающий вызов сервера, процедуры и функции доступны на клиенте (само свойство доступно, если установлен флаг компиляции "Сервер", все остальные флаги компиляции стоит снять во избежание различных проблем). Если флаг "Вызов сервера" не установлен, то процедуры и функции модуля доступны только на сервере.

"Привилегированный" — если флаг установлен, то устанавливаются полные права доступа при выполнении действий с базой данных в процедурах и функциях общего модуля. При установленном свойстве выполнение производится только на сервере.

"Повторное использование" — свойство определяет настройки возвращаемых значений и доступно, если общий модуль не является глобальным . Если опция включена, то в ходе выполнения кода система запоминает параметры и результат работы функций после первого вызова функции. При повторном вызове функции с такими же параметрами , происходит возврат запомненного значения (из первого вызова) без выполнения самой функции.

Опция может принимать следующие значения:

  1. Не использовать — отключение;
  2. На время вызова — на время выполнения определенной процедуры;
  3. На время сеанса — пока пользователь не закрыл сеанс (программу).
Особенности свойства "Повторное использование возвращаемых значений"

Особенности сохранения результатов вызова:

  • если функция выполняется на сервере и вызывается из серверного кода, то значения параметров и результат вызова запоминаются для текущего сеанса на стороне сервера;
  • если функция выполняется на толстом или тонком клиенте, то значения параметров и результатов вызова запоминается на стороне клиента;
  • если функция выполняется на стороне сервера, а вызывается из клиентского кода, то значения параметров вызова запоминаются и на стороне клиента и на стороне сервера.

Сохраненные значения удаляются:

  1. если свойство установлено в значение "На время вызова":
    • на стороне сервера – при возврате управления с сервера;
    • на стороне клиента – при завершении работы процедуры или функции встроенного языка верхнего уровня (вызванной системой из интерфейса, а не из другой процедуры или функции встроенного языка);
  2. если свойство общего модуля установлено в значение "На время сеанса":
    • на стороне сервера – при окончании сеанса;
    • на стороне клиента – при закрытии клиентского приложения.

Сохраненные значения могут быть удалены:

  1. после долгого неиспользования (более 5 (20?) минут);
  2. при нехватке оперативной памяти в рабочем процессе сервера;
  3. при перезапуске рабочего процесса;
  4. при переключении клиента на другой рабочий процесс.

После удаления значений вызов экспортной функции выполняется как при первом вызове!

Рекомендации по выставлению флагов общего модуля 1С:

  • не используйте флаг «Глобальный» повсеместно - это сократит время запуска приложения, а также улучшит читаемость кода (при осмысленном названии модулей);
  • не желательно использовать больше одного флага компиляции, при необходимости выполнять методы в разных контекстах выносите их в отдельный общий модуль;
  • флаг «Вызов сервера» имеет смысл, только если модуль компилируется «На сервере» (все остальные флаги компиляции стоит снять во избежание различных проблем);
  • если в методах модуля происходит массовая обработка данных, чтение и запись в базу данных, то для увеличения скорости работы лучше отключить контроль прав доступа, выставив флаг «Привилегированный» (этот режим доступен только для общих модулей, компилируемых на сервере).

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Глобальный контекст (Global context)
УстановитьПривилегированныйРежим (SetPrivilegedMode)
Синтаксис:

Тип: Булево.
Определяет, будет ли включен привилегированный режим:
Истина - включить режим;
Ложь - выключить режим.

вызывать нужно НаСервере

либо зафигачить нужный код в общий привилегированный модуль

При нажатии на кнопке в отчете вызывается такая процедура я дописал установка режима но 1с не видить моих процедур как быть?

Процедура КоманднаяПанельФормыЗаполнить(Кнопка)
УстановкаРежима();
Очистить();
ЗаполнитьАвто();
ОтменаРежима();

УстановитьПривилегированныйРежим(Истина) нужно писать вначале процедуры, в которой идет обращение к данным. Либо вызывать процедуру обращения к данным из привилегированного общего модуля.
Надо учесть (из синт. помощьника): "В клиент-серверном варианте при выполнении на клиенте данный метод не выполняет никаких действий."

Пример обращение к параметру сеанса без контроля прав доступа из типовой конфы:

Окей я понян но только в Декларации о прибыли затруднительно будет переносит весь код в общие привелигированные модуля.
Как можно вызвать процедуру на сервере и там установить режим но будет ли он работать для клиента?
Спасибо.

Весь код переносить не нужно.
Например (грубый пример), есть процедура СФОРМИРОВАТЬ(), вызывается из формы, обращается к данным с проверкой прав.

Процедура Сформировать()
ЭтотОбъект.ПроцОбращенияКДанным();
конецпроцедуры

Нужно создать общий модуль, поставить в свойствах галочку Привилегированный. Создать в нем экспортную процедуру:

Процедура ПроцОбращенияКДаннымБезПроверкиПрав(объект)
объект.ПроцОбращенияКДанным(); //вызвать из привилегированного модуля. Проверки прав не будет
конецпроцедуры

Тут нужно учитывать, используется ли клиент-серверный вариант (с ним свои заморочки)
Но, возможно в конкретном случае будет более уместно вызывать УстановитьПривилегированныйРежим(истина) (если файловый вариант, то париться с клиент-сервером не надо)

Читайте также: