Ограничение прав пользователя в 1с 8.3. Бухучет инфо

НАСТРОЙКА ПРАВ ПОЛЬЗОВАТЕЛЕЙ. БСП. ПРОФИЛЬ ДОСТУПА 8.6.2.
Платформа: 8.2.17.153 и выше или 8.3.4.365 и выше.

СРЕДСТВА АДМИНИСТРИРОВАНИЯ:

Универсальный редактор. Мультиобработчик:
- Системный Администратор (WSH & WMI):
- Настройка прав пользователей. БСП.

ВАЖНО! Поддерживаются конфигурации, содержащие справочник "Профили групп доступа" .

Тестовая среда:
- "Розница...":
- Розница 2.0, 2.1, 2.2 (РОССИЯ);
- Розница 2.0 (УКРАИНА);
- Розница 2.0 (БЕЛАРУСЬ).
- "Управление торговлей...":
- Управление торговлей 11.0, 11.1, 11.2, 11.3 (РОССИЯ);
- Управление торговлей 3.0 (УКРАИНА);
- Управление торговлей 3.1 (БЕЛАРУЬ).
- "Бухгалтерия...":
- Бухгалтерия предприятия 3.0 (РОССИЯ);
- Бухгалтерия сельскохозяйственного предприятия 3.0 АРГОСОФТ (РОССИЯ).
- "Комплексная автоматизация":
- Комплексная автоматизация 2.0, 2.2 (РОССИЯ);
- "ERP Управление предприятием":
- ERP Управление предприятием 2 (РОССИЯ)
- "Управление небольшой фирмой...":
- Управление небольшой фирмой 1.4, 1.5 (РОССИЯ).
- "Зарплата и управление персоналом...":
- Зарплата и управление персоналом 3.0 (РОССИЯ).
- "Розница. Магазин автозапчастей...":
- Розница. Магазин автозапчастей 2.1 (РОССИЯ).

ВЕРСИЯ 8.6.2 (08.2017)
- БСП 2.3.6.35.
- ERP Управление предприятием 2.
- Прочие изменения.

ВЕРСИЯ 8.6.1 (02.2017)
- БСП 2.3.4.107.
- Прочие изменения.

ВЕРСИЯ 8.6 (11.2016)
- Подсветка ролей по 2 (двум) подстрокам.
- Прочие изменения.

ВЕРСИЯ 8.5 (09.2016)
- Версия БСП 2.3.3.77. Новые роли.
- Поддержка "Комплексная автоматизация" 2.2, "Управление торговлей" 11.3.
- Прочие изменения.

ВВЕДЕНИЕ.

Подсистема безопасности 1С:Предприятие.

Распространенными настройками безопасности в операционных системах является так называемый набор разрешений на чтение/запись для различных групп пользователей, например, Windows AD (Active Directory).
Подсистема безопасности, применяемая в программном обеспечении 1С, получила название – роли.

Библиотека стандартных подсистем (БСП) :

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

- Справочник "ГруппыДоступа" - данный справочник содержит информацию по группам доступа.
Ведение групп доступа позволяет быстро и просто управлять разграничением прав в системах с большим количеством пользователей.

- Элементы конфигурации "Роли" . Задаются в режиме "Конфигуратор". Расположены в разделе "Общие".
Список созданных в режиме конфигурирования ролей используется в элементах справочника "ПрофилиГруппДоступа". Роли недоступны для редактирования в пользовательском режиме.

- Планы Видов Характеристик (ПВХ) "ВидыДоступа" - используется для определения всевозможных объектов, для которых необходимо установить контроль доступа.
Например, элементами данного ПВХ могут быть элементы справочников "ПапкиФайлов", "ВидыЦен", "Пользователи", "ВнешниеПользователи" и др.

- Справочник "ПрофилиГруппДоступа" - используется для назначения прав группе пользователей, при этом профиль содержит информацию о доступных участникам этой группы ролях, видах доступа.
ПрофильГруппДоступа позволяет, в дальнейшем, легко изменять доступность или недоступность конкретных видов объектов для всех пользователей группы прав доступа.

- Общие Формы : "ПраваДоступа" и "ПраваДоступаУпрощенно" - позволяют включить Пользователя в Группу доступа/Профиль, просмотреть разрешенных ролей и отчет по правам, "ПраваПоЗначениямДоступа" (ПВХ "ВидыДоступа")

Кроме того, используется ряд внутренних регистров сведений :

Регистр сведений "ГруппыЗначенийДоступа";
- Регистр сведений "ЗависимостиПравДоступа";
- Регистр сведений "ЗначенияГруппДоступа";
- Регистр сведений "НаборыЗначенийДоступа";
- Регистр сведений "ТаблицыГруппДоступа";
- Регистр сведений "ПраваРолей";

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

Windows и 1С:

В Windows существуют группы безопасности, которые могут выступать в качестве групп доступа:
- Администраторы;
- Пользователи;
- Опытные пользователи;
- Гости;
- др.

В 1С:Предприятие имеется большой набор профилей, регламентирующий права пользователей, например:
- Управляющий;
- Менеджер;
- Маркетолог;
- Кладовщик;
- Кассир;
- др.

Все эти профили относятся к категории "Пользователь" в терминологии Windows.
Имеется также профиль "Администратор", предоставляющий полный доступ к данным и метаданным конфигурации без каких-либо ограничений.
Профиль типа "Опытный пользователь" в 1С:Предприятие, как правило, отсутствует.

НАЗНАЧЕНИЕ ОБРАБОТКИ: СОЗДАНИЕ ПРОФИЛЯ С ШИРОКИМИ ПРАВАМИ.

"не меньше - не больше":
Используя существующие правила назначения прав пользователям, сформировать профили с расширенными правами.
При этом необходимо дать столько прав, сколько нужно.

ВАЖНО! Роль "ПолныеПрава" по-умолчанию не назначается.

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

ТРИ КЛИКА:

КЛИК 1-ый. Профиль "ОБОБЩЕННЫЙ ПО ПРОФИЛЯМ":

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


В

КЛИК 2-ой. Профиль "ОПЫТНЫЙ ПОЛЬЗОВАТЕЛЬ":

Состоит из ролей, входящих в необъектный профиль "Опытный [пользователь]".
Пользователи, для которых будет задействован данный профиль, получат наиболее широкий набор прав из возможных для Пользователя.
При необходимости можно изменить состав выбираемых ролей.


В

КЛИК 3-ий. Профиль "РАЗРЕШЕНО, ЧТО НЕ ЗАПРЕЩЕНО":

Состоит из ролей, не входящих в необъектный профиль "Административные".
Режим назначения ролей "от обратного". Указывается лишь то, что необходимо отнести к "Административным" ролям - остальное Пользователям.
При необходимости можно изменить состав выбираемых ролей.


В

Перечень прав определяется по роли в текущей строке таблицы "Роли профилей".

ОСОБЕННОСТИ:

1. Место использования обработки.

Для корректной работы обработку рекомендуется использовать на ГлавномУзле РИБ .

Ситуация характерная для конфигурации Розница 2.0.6.4 РИБ:
- Обновление поставляемых профилей правильно работает только на ГлавномУзле.
(поэтому на ПодчиненномУзле кнопка "Обновить поставляемые профили" блокируется).
- Запись профиля на ПодчиненномУзле в типовой форме некорректна.
Аналогично тому, как организована работа со справочником "ИдентификаторыОбъектовМетаданных" (только ГлавныйУзел РИБ).

2. Обновление поставляемых профилей. Предопределенные профили.
Это настройка предустановленных шаблонов групп доступа пользователей, предполагает возврат к начальному списку ролей всех предопределенных профилей конфигурации, поставляемых "1С",
т.е. для поставляемого предопределенного профиля будет установлен минимально необходимый набор ролей.
ВНИМАНИЕ! Если Вы меняли состав ролей предопределенных профилей, то эти изменения могут быть утеряны.

Профили в справочнике "ПрофилиГруппДоступа" часто имеют статус предопределенных.
Создать новые профили предопределенными или нет - на Ваше усмотрение.

3. Роль "ПолныеПрава" . Профиль для администрирования системы .
В составе системы имеется предопределенный профиль "Администратор", в который включена роль "Полные права".
Эта роль предоставляет полный доступ к данным и метаданным конфигурации без каких-либо ограничений.
ВНИМАНИЕ! Не рекомендуется добавлять роль "Полные права" в какие-либо другие профили, так как она автоматически отключает любые другие ограничения доступа.
Профиль, содержащий роль "Полные права", "вырождается" в профиль "Администратор".

4. Роль "Администратор" и Внешние обработки.
Внешня обработка выполняется в БЕЗОПАСНОМ РЕЖИМЕ.

В безопасном режиме:
- игнорируется привилегированный режим;
- запрещены внешние по отношению к платформе 1С:Предприятия действия: COM; загрузка внешних компонент; запуск внешних приложений и команд операционной системы; доступ к файловой системе, кроме временных файлов; доступ к интернет.

Попытка во внешней обработке отключить Безопасный режим приводит к ошибке: "В данной процедуре/функции не был установлен безопасный режим".

Добавление в профиль доступа роли "Администратор" снимает вышеуказанные ограничения.

ВНИМАНИЕ! Не рекомендуется устанавливать роль "АдминистраторСистемы", т.к. эта роль, наряду с ролью "ПолныеПрава" назначается профилю "Администратор".

ТЕСТОВАЯ СРЕДА:
Операционная система (x32/x64): Windows XP, Windows 7/8, Windows Server 2003 R2 SP2.
1С:Предприятие:
Платформа: 8.2.17.153 и выше или 8.3.4.365 и выше.
Архитектура: Файловый вариант.
Конфигурации: Различные, содержащие справочник "Профили групп доступа" .
Режим совместимости: НеИспользовать.
Режим использования модальности = Использовать/НеИспользовать.
Режим запуска: Управляемое приложение.

С уважением к сообществу МА!

Как в программе 1С 8.3 настроить права доступа?

В данной статье рассмотрим как работать с пользователями в 1С Бухгалтерии 8.3:

  • создавать нового пользователя
  • настраивать права - профили, роли и группы доступа
  • как в 1С 8.3 настроить ограничение прав на уровне записей (RLS) - например, по организациям

Инструкция подойдет не только для бухгалтерской программы, но и для многих других, построенных на базе БСП 2.х: 1С Управление торговлей 11, Зарплата и управление персоналом 3.0, ERP 2.0, Управление небольшой фирмой и других.

В интерфейсе программы 1С управление пользователями производится в разделе «Администрирование», в пункте «Настройка пользователей и прав»:

Как создать нового пользователя в 1С

Что бы завести в 1С Бухгалтерии 3.0 нового пользователя и назначить ему определенные права доступа, в меню «Администрирование» существует пункт «Настройки пользователей и прав». Заходим туда:

Управление списком пользователей осуществляется в разделе «Пользователи». Здесь можно завести нового пользователя (или группу пользователей), либо отредактировать уже существующего. Управлять списком пользователей может только пользователь с административными правами.

Создадим группу пользователей с названием «Бухгалтерия», а в ней двух пользователей: «Бухгалтер 1» и «Бухгалтер 2».

Что бы создать группу, нажимаем кнопку, которая выделена на рисунке выше и вводим наименование. Если в информационной базе есть другие пользователи, которые подходят на роль бухгалтера, можно тут же их добавить в группу. В нашем примере таких нет, поэтому нажимаем «Записать и закрыть».

Теперь создадим пользователей. Устанавливаем курсор на нашу группу и нажимаем кнопку «Создать»:

В полное имя введем «Бухгалтер 1», имя для входа зададим «Бух1» (именно оно будет отображаться при входе в программу). Пароль укажем «1».

Обязательно убедитесь, что установлены флажки «Вход в программу разрешен» и «Показывать в списке выбора», иначе пользователь себя не увидит при авторизации.

«Режим запуска» оставим «Авто».

Настройка прав доступа - ролей, профилей

Теперь нужно указать «Права доступа» данному пользователю. Но сначала нужно его записать, иначе появится окно с предупреждением, как показано на рисунке выше. Нажимаем «Записать», затем «Права доступа»:

Выбираем профиль «Бухгалтер». Данный профиль стандартный и настроен на основные права, необходимые бухгалтеру. Нажимаем «Записать» и закрываем окно.

В окне «Пользователь (создание)» нажимаем «Записать и закрыть». Так же создаем второго бухгалтера. Убеждаемся, что пользователи заведены и могут работать:

Следует отметить, что один и тот же пользователь может принадлежать нескольким группам.

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

Зайдем в раздел «Профили групп доступа».

Допустим, нам нужно разрешить нашим бухгалтерам просматривать журнал регистрации.

С нуля создавать профиль довольно трудоемко, поэтому скопируем профиль «Бухгалтер»:

И внесем в него необходимые изменения - добавим роль «Просмотр журнала регистрации»:

Дадим новому профилю другое наименование. Например «Бухгалтер с дополнениями». И установим флажок «Просмотр журнала регистраций».

Теперь нужно сменить профиль у пользователей, которых мы завели ранее.

Ограничение прав на уровне записи в 1С 8.3 (RLS)

Разберемся, что означает ограничение прав на уровне записи или как называют её в 1C - RLS (Record Level Security). Что бы получить такую возможность, нужно установить соответствующий флажок:

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

Заходим опять в раздел управления профилем, два раза кликаем по профилю «Бухгалтер с дополнениями» и переходим на закладку «Ограничения доступа»:

«Вид доступа» выберем «Организации», «Значения доступа» выберем «Все разрешены, исключения назначаются в группах доступа». Нажимаем «Записать и закрыть».

Теперь возвращаемся в раздел «Пользователи» и выбираем, например, пользователя » Бухгалтер 1″. Нажимаем кнопку «Права доступа»:

Через кнопку «Добавить» выбираем организацию, данные по которой будет видеть «Бухгалтер 1».

Обратите внимание! Использование механизма разграничения прав на уровне записей может отразится на производительности программы в целом. Заметка для программиста: суть RLS в том, что система 1С добавляет в каждый запрос дополнительное условие, запрашивая информацию о том, разрешено ли читать пользователю данную информацию.

Прочие настройки

Разделы «Копирование настроек» и «Очистка настроек» вопросов не вызывают их названия говорят сами за себя. Это настройки внешнего вида программы и отчетов. Например, если вы настроили красивый внешний вид справочника «Номенклатура» - его можно тиражировать на остальных пользователей.

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

Флажок «Разрешить доступ внешним пользователям» дает возможность добавлять и настраивать внешних пользователей. Например, вы хотите организовать на базе 1С интернет магазин. Клиенты магазина как раз и будут являться внешними пользователями. Настройка прав доступа осуществляется аналогично обычным пользователям.

По материалам: programmist1s.ru

В данной статье речь пойдет о том, как самостоятельно, легко и просто предоставить права для работы в программе «1С: Бухгалтерия 8» сотрудникам предприятия. Можно предоставить доступ только к тем отчетам, справочникам или документам, которые необходимы конкретному сотруднику для работы, и ограничить доступ, не входящим в список настроек. Устанавливать настройки по доступу будем на основе программы «1С: Бухгалтерия 8» версия 3 конфигурация «Такси». Установка настроек по доступу не займёт много времени и знаний, прочитав данную статью, может произвести её любой из сотрудников, который работал или имеет представление о программных продуктах семейства 1С.

Кому предоставляются права доступа?

Права доступа можно предоставить:

  • Одному пользователю;
  • Группе лиц (пользователей).

Для облегчения работы службы, которая занимается предоставлением прав, лучше эту процедуру выполнять по группам, а не по конкретным лицам, работающим в данный период времени.

Группы могут группироваться в зависимости от:

  • Должности (подразделения);
  • Функциональных обязанностей;
  • Других характеристик или параметров.

Права могут предоставляться на:

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

В программе 1С выделено четыре основных профиля по предоставленным правам:

  • Администратор;
  • Главный бухгалтер;
  • Бухгалтер;
  • Синхронизация данных с другими программами;
  • Только просмотр.

Как настроить права доступа в 1С?

Пользователь программы 1С, только с правами «Администратора», который имеет «Полные права», может предоставлять (настраивать) права доступа для сотрудников организации.

Чтобы настроить права доступа необходимо в главном меню выбрать раздел «Администрирование», далее перейти на «Настройки программы» и там выбрать «Настройки пользователей и прав».

При настройке пользователей и прав необходимо заполнить шесть разделов, каждый из которых описан ниже, это:

  • Пользователи;
  • Профили групп доступа;
  • Кодирование настроек;
  • Очистка настроек;
  • Настройки пользователей;
  • Внешние пользователи.

В разделе «Пользователи» создаются данные по сотруднику организации, которому предоставляются права. При этом нужно заполнить такие поля:

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

Далее в настройке устанавливается признак «Отображать автора документа», в поле «Ответственный» в созданном документе.

Удобная функция, так как руководителю отдела при обнаружении ошибки видно, кто создал данный документ, для устранения и недопущения такой ошибки в будущем.

В разделе «Профили групп доступа» можно установить признак «Ограничить доступ на уровне записей» по всем сотрудникам организации или создать действия (роли) по каждому сотруднику, которому предоставляются права в программе 1С. При этом нужно выбрать на закладке «Разрешённые действия (роли)» необходимые позиции и после этого на закладке «Описание» будет прописано, какие действия включают данные права.

Права администратора лучше не предоставлять для «обычной» работы в программе, так как данные права дают большие возможности в базе 1С, не только просматривать, изменить, удалять документы, но и другие функции, в которые входит и изменение конфигурации программы.

В разделе «Копирование настроек пользователей» позволяет производить копирование настроек уже предоставленным другим сотрудникам предприятия. Есть возможность копировать все настройки или отдельные настройки, выбранным пользователям или всем пользователям.

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

В разделе «Очистка настроек пользователей» позволяет производить очистку настроек у выбранных пользователей или у всех пользователей разом, не заходя в индивидуальную настройку по каждому сотруднику. Данная функция позволяет очистить все настройки или выбранные настройки.

Раздел «Настройка пользователей» позволяет управлять настройками отчётов, внешним видом программы и прочими настройками. Они также предоставляются конкретному пользователю программы 1С.

Также внешним пользователям можно предоставить право просматривать программу. Удобная функция для предоставления просмотра программы внешним аудиторам, партнёрам и другим пользователям. При установлении признака «Разрешить доступ внешним пользователям открывается блок «Внешние пользователи», в котором устанавливается выбор вида пользователей:

  • Контрагенты;
  • Физические лица.

При выборе одного из вида открываются данные по внешнему пользователю, которые нужно заполнить, это имя и пароль при входе в систему. После записи становиться активным закладка «Права доступа», в которой устанавливаются права: администратор, главный бухгалтер, синхронизация данных с другими программами, только просмотр.

Права всем предоставлены, желаю удачной и перспективной работы.

Часто возникает необходимость в частичном ограничении доступа к данным. Например, когда пользователь должен видеть документы только своей организации. В таких случаях в 1С используется механизм ограничения доступа на уровне записей (так называемый, RLS – Record Level Securiy).

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

Для решения задачи будем использовать платформу “1С:Предприятие 8.2″. Создадим новую конфигурацию в свойствах которой в качестве основного режима запуска будет выбран вариант “Управляемое приложение”.

Далее создадим справочник “Организации” и ещё два справочника – “Контрагенты” и “Пользователи” с реквизитом “Организация”. Кроме справочников нам понадобятся два параметра сеанса – “Организация” и “Пользователь” (соответствующих типов). Значения этих параметров устанавливаются при запуске сеанса работы с конфигурацией и хранятся до его завершения. Именно значения этих параметров мы и будем использовать при добавлении условий ограничения доступа на уровне записей.

Установка параметров сеанса выполняется в специальном модуле – “Модуль сеанса”

В этом модуле опишем предопределенную процедуру “УстановкаПараметровСеанса” в которой вызовем функцию заранее подготовленного общего модуля “ПолныеПрава”. Это необходимо в силу особенностей работы базы данных в режиме управляемого приложения, когда часть программного кода может выполняться только на стороне сервера (подробно на объяснении этих принципов в данной статье я останавливаться не буду).

Код 1C v 8.х Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
ПолныеПрава.УстановитьПараметрыСеанса();
КонецПроцедуры

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

Код 1C v 8.х Функция ОпределитьТекущегоПользователя()
ТекПользователь = Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя(),Истина);
Возврат ТекПользователь;
КонецФункции

Процедура УстановитьПараметрыСеанса() Экспорт
ТекущийПользователь = ОпределитьТекущегоПользователя();
ТекущаяОрганизация = Справочники.Организации.ПустаяСсылка();
Если ЗначениеЗаполнено(ТекущийПользователь) Тогда
ТекущаяОрганизация = ТекущийПользователь.Организация;
КонецЕсли;
ПараметрыСеанса.Пользователь = ТекущийПользователь;
ПараметрыСеанса.Организация = ТекущаяОрганизация;
КонецПроцедуры

Функция ПараметрСеансаУстановлен(ИмяПараметра) Экспорт
Возврат ЗначениеЗаполнено(ПараметрыСеанса[ИмяПараметра]);
КонецФункции

Функция РольДоступнаПользователю(ИмяРоли) Экспорт
Возврат РольДоступна(ИмяРоли);
КонецФункции

В модуле управляемого приложения будем проверять наличие пользователя конфигурации в справочнике “Пользователи” (для простоты будем искать его по наименованию) и завершать работу системы если он не найден. Это необходимо для того, чтобы обеспечить заполнение параметров сеанса.

Код 1C v 8.х Процедура ПередНачаломРаботыСистемы(Отказ)
// всех кроме администратора будем проверять на наличие в справочнике "Пользователи"
Если Не ПолныеПрава.РольДоступнаПользователю("ПолныеПрава") Тогда
Если НЕ ПолныеПрава.ПараметрСеансаУстановлен("Пользователь") Тогда
Предупреждение("Пользователь """ + ИмяПользователя() + """ не найден в справочнике!");
Отказ = Истина;
Возврат;
КонецЕсли;
КонецЕсли;
КонецПроцедуры

Теперь можем перейти непосредственно к описанию ограничений доступа. Для этого создадим роль “Пользователь” и перейдем на закладку “Шаблоны ограничений”, где добавим новый шаблон “КонтрагентыЧтениеИзменение” со следующим текстом шаблона: ГДЕ Организация =Организация #Параметр(1)


Текст шаблона ограничений является расширением языка запросов. В отличии от обычного запроса, текст ограничения должен в обязательном порядке содержать условие “ГДЕ”. В качестве значений параметров запроса (в нашем случае это “&Организация”) используются значения одноименных параметров сеанса. Конструкция вида #Параметр(1) означает, что на это место система подставит текст, переданный в качестве первого параметра в месте использования шаблона. С помощь приведенного шаблона будет выполняться проверка каждой записи таблицы (в нашем случае это будет справочник “Контрагены”). Для записей, значение реквизита “Организация” которых совпадает с заданным в соответствующем параметре сеанса, условие описанное в шаблоне будет выполняться. Таким образом эти записи будут доступны для чтения, изменения или добавления (в зависимости от того для какого из этих прав применяется шаблон). Продемонстрирую вышеизложенное на нашем примере.

Перейдем на закладку “Права” роли “Пользователь” и откроем список прав справочника “Контрагенты”. Будем использовать шаблон ограничений “КонтрагентыЧтениеИзменеие” для прав “Чтение”, “Изменение” и “Доблавление”.

Для права “Чтение” будем использовать шаблон с параметром “ИЛИ ЭтоГруппа”. При этом пользователям данной роли будет разрешено чтение не только элементов справочника “Контрагенты” своей организации, но и всех групп этого справочника.

#КонтрагентыЧтениеИзменение("ИЛИ ЭтоГруппа")

Поскольку при добавлении новых элементов справочника системой выполняется неявное чтение предопределенных реквизитов (это нужно, например, для нумерации), то необходимо обеспечить беспрепятственное чтение этих полей. Для этого добавим дополнительную строку с пустым текстом ограничения в таблицу ограничения доступа к данным и перечислим поля для которых действует данное правило – Ссылка, Версия данных, Родитель, Код.

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

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

Будут перечислены все те грабли, которые собрал автор, чтобы вы о них знали.

Наверняка, уже все знают, что из себя представляет новая система, поэтому предистория вкрадце:

Как было раньше(в обычном приложении):

Есть документ. Есть Роли - ПолныеПрава, ДокументНетДоступа, ДокументТолькоЧтение, ДокументЧтениеИРедактирование. В конфигураторе(аналогичный механизм в реж предприятия) вы выставляете пользователям эти роли и у них появляются соответствующие права доступа на документ. Все просто и скучно и даже зевать хочется.

С введением управляемого приложения разработчики решили усложнить(читается как расширить) настройки прав доступа.

Теперь:

Вводная та же. Чтобы дать пользователю какие-то права на документ - сначала вам необходимо создать элемент справочника Профили групп доступа. Это некий агрегирующий(суммирующий значения) объект, который объединяет роли в группы ролей. Теоритически таких профилей можно создать сколько угодно много с различным набором ролей(N*(n-1), где N - количество ролей), но на практике количество профилей определяется количеством должностных обязанностей пользователей в организации и их гораздо меньше, чем ролей.

Создаем профили Бесправный(с ролью ДокументНетДоступа), Аудитор(с ролью ДокументТолькоЧтение), Бухгалтер(с ролью ДокументЧтениеИРедактирование).

Чтобы "привязать" эти профили к пользователям - нужно создать элементы справочника ГруппыДоступа. В типовых они создаются автоматически, когда вы отмечаете галочками профили для пользователя. Этот справочник соединяет профиль и пользователя(или нескольких пользователей).

При записи этого элемента справочника система автоматически добавляет роли (из профиля) в роли пользователя. Поэтому не стоит напрямую редактировать роли в конфигураторе, как раньше - при редактировании прав в Предприятии все роли в конфигураторе будут обновлены на роли из профилей пользователя. Кроме того, будет наблюдаться явное противоречение между набором профилей с ролями и ролями, установленными в конфигураторе.

Как хранятся роли в Профиле групп доступа, спросите вы. Ведь роли - это объекты МД, это не ссылочные типы. Отвечаю - для этого(и не только) разработчики создали служебный справочник ИдентификаторыОбъектовМетаданных, в котором хранится(в иерархии!) имена, синонимы, значения пустых ссылок всех объектов МД. Если вы хотите создать Профиль программно и добавить в него роль, то код примерно будет таким:

Код 1C v 8.2 УП РодительРоли = Справочники.ИдентификаторыОбъектовМетаданных.НайтиПоНаименованию("Роли");//ничего страшного искать по наименованию,

//справочник - служебный и непосредственного редактрования в нем нет
ИдентификаторМоейРоли = Справочники.ИдентификаторыОбъектовМетаданных.НайтиПоРеквизиту("Имя","МояРоль",РодительРоли);
Если ЗначениеЗаполнено(ИдентификаторМоейРоли) Тогда
НайденныйИдентификаторМоейРоли = МойПрофиль.Роли.Найти(ИдентификаторМоейРоли);
Если НайденныйИдентификаторМоейРоли= неопределено тогда
НовСтрока = МойПрофиль.Роли.Добавить();
НовСтрока.Роль = ИдентификаторМоейРоли;
КонецЕсли;
КонецЕсли;

Код 1C v 8.2 УП Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(ИСТИНА,ЛОЖЬ,ЛОЖЬ);//ЕстьИзменения, ЕстьУдаленные, ТолькоПроверка

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

Но обратная связь не работает - вы в режиме предприятия назначили пользователю профиль(с созданием группы доступа), а роль у пользователя в конфигураторе не добавилась! Что делать?

За синхронизацию ролей/профилей отвечает константа ПараметрыРаботыПользователей. Если роли не обновляются в конфигураторе, следует обновить её значение:

Код 1C v 8.2 УП Константы.ПараметрыРаботыПользователей.СоздатьМенеджерЗначения().ОбновитьОбщиеПараметры();

Хорошо, скажите вы. А как быть, если я хочу создать группы доступа программно? Да не вопрос. Единственное ограничение - не допускаются дубли связок Профиль-Пользоваль в группах доступа. Примерный код будет таким:

Код 1C v 8.2 УП //МойПрофиль - профиль, который мы хотим добавить пользователю МойПользователь

Если МойПрофиль = Справочники.ПрофилиГруппДоступа.Администратор Тогда // если мы хотим пользователю дать роль Администратора,
//то нельзя создавать новую группу доступа, надо редактировать предопределенную Администраторы
ГруппаДоступаАдм = Справочники.ГруппыДоступа.Администраторы;
Если ГруппаДоступаАдм.Пользователи.Найти(МойПользователь) = неопределено Тогда
ГруппаДоступаАдмОб= ГруппаДоступаАдм.ПолучитьОбъект();
НовСтрока = ГруппаДоступаАдмОб.Пользователи.Добавить();
НовСтрока.Пользователь = МойПользователь;
ГруппаДоступаАдмОб.Записать();
КонецЕсли;
Иначе // все прочие профили, кроме Администратора
Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|ГруппыДоступа.Ссылка
|ИЗ
|Справочник.ГруппыДоступа КАК ГруппыДоступа
|ГДЕ
|ГруппыДоступа.Профиль = &Профиль
|И (ГруппыДоступа.Пользователь = &Пользователь
|ИЛИ ГруппыДоступа.Пользователи.Пользователь = &Пользователь)
|И НЕ ГруппыДоступа.ПометкаУдаления ";
Запрос.УстановитьПараметр("Профиль",МойПрофиль);
Запрос.УстановитьПараметр("Пользователь",МойПользователь);
Выборка = Запрос.Выполнить().Выбрать();
Если НЕ Выборка.Следующий() тогда //нет такого профиля, надо создать
МояГруппаДоступаОб = справочники.ГруппыДоступа.СоздатьЭлемент();
МояГруппаДоступаОб.Наименование = Строка(МойПрофиль);
МояГруппаДоступаОб.Пользователь = мойПользователь;
Нов = МояГруппаДоступаОб.Пользователи.Добавить();
Нов.Пользователь = МойПользователь;
МояГруппаДоступаОб.Профиль = МойПрофиль;
МояГруппаДоступаОб.Записать();
КонецЕсли; //Нет такого профиля
КонецЕсли;//профиль Администратор

После выполнения этого кода, если все, что нужно обновлено - типовая конфигурация добавит пользователю роли.

Раз уж пошли по программному пути, вот код, который добавляет пользователя в справочник Пользователи и ПользователяИБ в ПользователиИнформационнойБазы:

Код 1C v 8.2 УП ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
ПользовательИБ.имя = "Иванов";
ПользовательИБ.ПолноеИмя = "Иванов Иван Иванович";
ПользовательИБ.АутентификацияСтандартная = ИСТИНА;
ПользовательИБ.Пароль = "";
ПользовательИБ.записать();
Пользователь = Справочники.Пользователи.НайтиПоРеквизиту("ИдентификаторПользователяИБ",ПользовательИБ.УникальныйИдентификатор));
если Пользователь.Наименование = "" Тогда
//создаем пользователя
ПользовательОб = Справочники.Пользователи.СоздатьЭлемент();
ОписаниеПользователяИБ = Пользователи.НовоеОписаниеПользователяИБ();
ЗаполнитьЗначенияСвойств(ОписаниеПользователяИБ,ПользовательИБ);
ОписаниеПользователяИБ.УникальныйИдентификатор = Соединение.NewObject("УникальныйИдентификатор",ПользовательИБ.УникальныйИдентификатор);
ПользовательОб.Наименование = ОписаниеПользователяИБ.ПолноеИмя;
ОписаниеПользователяИБ.Вставить("Действие","Записать");
ПользовательОб.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ",ОписаниеПользователяИБ);
ПользовательОб.записать();
КонецЕсли;

Если вы добавляете не программно, то добавлять нужно из режима Предприятия - тогда пользовательИБ у вас сам создатся.

И если раньше, в обычном приложении, достаточно будет добавить польз в конфигураторе - и при заходе в Предприятие, этот польз сам создавался в спр Пользователи, то с управляемым приложением такой фокус не прокатит - система не даст зайти под пользователемИБ, которого нет в справочнике Пользователи.