1С 8.3 Пользователи, роли (права) доступа
Данные > Примеры кода 1С > 1С 8.3 Пользователи, роли (права) доступа
Пользователи в 1С 8.3 – это учётные записи сотрудников предприятия, которые используются для аутентификации в конкретной информационной базе с помощью пароля (может быть пустым). Администратор системы, с помощью учетных записей пользователей разграничивает роли (права доступа) к определённым объектам конфигурации в соответствии с их должностными обязанностями и политикой организации.
При вводе нового пользователя через Конфигуратор 1С, заполняются следующие признаки и поля:
- Имя и Полное имя - соответственно наименование и полное наименование пользователя информационной базы. При активации признака Аутентификация 1С: Предприятия, становятся доступен для входа в 1С. Пользователю запрещено изменять пароль (делает доступным возможность смены пароля пользователем в пользовательском режиме), Показывать в списке выбора (делает доступным выбор пользователя в списке, в противном случае имя пользователя необходимо вводить вручную).
- Аутентификация операционной системы - этот признак включает возможность авторизации с помощью имени пользователя операционной системы. Где «Пользователь» - это имя пользователя информационной системы (например, \\domain\artur.k, где domain - домен сети, а artur.k –это имя пользователя ОС). При старте сеанса 1С сначала проверяет авторизацию через ОС, а уже потом авторизацию 1С.
- Аутентификация OpenID - это включение возможности авторизации с помощью технологии OpenID (система, позволяющая пользователю использовать единую учётную запись для аутентификации на множестве не связанных друг с другом программ, сайтов, соц.сетей).
Оглавление:
Создать, удалить пользователя, вывести список пользователей в 1С 8.3:
Процедура СоздатьПользователя()
ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
ПользовательИБ.Имя = "Лев Толстой";
ПользовательИБ.Пароль = "Wp1865";
ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;
ПользовательИБ.Роли.Добавить(Метаданные.Роли.АдминистраторСистемы);
ПользовательИБ.ОсновнойИнтерфейс = Метаданные.Интерфейсы.Основной;
ПользовательИБ.Записать();
КонецПроцедуры
Процедура УдалитьПользователя()
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени("Лев Толстой");
ПользовательИБ.Удалить();
//ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
//ПользовательИБ.Удалить();
КонецПроцедуры
Процедура ВывестиСписокПользователей()
СписокПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ПользовательИБ Из СписокПользователей Цикл
Сообщить(ПользовательИБ);
КонецЦикла;
ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
ПользовательИБ.Имя = "Лев Толстой";
ПользовательИБ.Пароль = "Wp1865";
ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;
ПользовательИБ.Роли.Добавить(Метаданные.Роли.АдминистраторСистемы);
ПользовательИБ.ОсновнойИнтерфейс = Метаданные.Интерфейсы.Основной;
ПользовательИБ.Записать();
КонецПроцедуры
Процедура УдалитьПользователя()
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени("Лев Толстой");
ПользовательИБ.Удалить();
//ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
//ПользовательИБ.Удалить();
КонецПроцедуры
Процедура ВывестиСписокПользователей()
СписокПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ПользовательИБ Из СписокПользователей Цикл
Сообщить(ПользовательИБ);
КонецЦикла;
// см. получение юзеров из справочника: https://1cnik.by/poluchit_spisok_dejstvujuschih_polzovatelej.php
КонецПроцедуры
КонецПроцедуры
Блокировка работы пользователя в 1С 8.3:
&НаКлиенте
Процедура БлокировкаРаботыПользователя(Команда)
ЗаблокироватьРаботуПользователя();
КонецПроцедуры
Процедура БлокировкаРаботыПользователя(Команда)
ЗаблокироватьРаботуПользователя();
КонецПроцедуры
Получение имени текущего пользователя в 1С 8.3:
&НаКлиенте
Процедура ПолучениеИмениТекущегоПользователя(Команда)
Полученное_Имя=ИмяПользователя(); // Морозов А.И.
Полученное_Имя_Полное=ПолноеИмяПользователя(); // Морозов Александр Иванович
КонецПроцедуры
Процедура ПолучениеИмениТекущегоПользователя(Команда)
Полученное_Имя=ИмяПользователя(); // Морозов А.И.
Полученное_Имя_Полное=ПолноеИмяПользователя(); // Морозов Александр Иванович
КонецПроцедуры
Чтение и проверка прав и ролей пользователей в 1С 8.3:
&НаСервере
Процедура ЧтениеИПроверкаПравИРолейПользователей() // Варианты прав: Чтение, Изменение, Добавление, Удаление, Проведение
// Чтение права к объекту метаданных у текущего пользователя
Если ПравоДоступа("Изменение", Метаданные.Справочники.Материалы) Тогда
Сообщить("Доступ к справочнику Материалы на изменение открыт!");
КонецЕсли;
// Чтение права к объекту метаданных у определенной роли
Если Не ПравоДоступа("Удаление", Метаданные.Справочники.Материалы, Метаданные.Роли.Менеджер) Тогда
Сообщить("У роли Менеджер нет прав на удаление в справочнике Материалы!");
КонецЕсли;
// Проверка права к объекту метаданных у других пользователей
ВсеПользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого Пользователь Из ВсеПользователи Цикл
Если ПравоДоступа("Изменение", Метаданные.Справочники.Материалы, Пользователь) Тогда
Сообщить("Доступ для " + Пользователь.Имя + " на изменение открыт!");
КонецЕсли;
КонецЦикла;
// Чтение роли у текущего пользователя
Если РольДоступна("Администратор") Тогда
Сообщить("У Вас права Администратора!");
КонецЕсли;
// Проверка права у пользователя и в случае его отсутствия - вызов исключения
ВыполнитьПроверкуПравДоступа("Изменение", Метаданные.Справочники.Материалы); // "Нарушение прав доступа!"
КонецПроцедуры
Процедура ЧтениеИПроверкаПравИРолейПользователей() // Варианты прав: Чтение, Изменение, Добавление, Удаление, Проведение
// Чтение права к объекту метаданных у текущего пользователя
Если ПравоДоступа("Изменение", Метаданные.Справочники.Материалы) Тогда
Сообщить("Доступ к справочнику Материалы на изменение открыт!");
КонецЕсли;
// Чтение права к объекту метаданных у определенной роли
Если Не ПравоДоступа("Удаление", Метаданные.Справочники.Материалы, Метаданные.Роли.Менеджер) Тогда
Сообщить("У роли Менеджер нет прав на удаление в справочнике Материалы!");
КонецЕсли;
// Проверка права к объекту метаданных у других пользователей
ВсеПользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого Пользователь Из ВсеПользователи Цикл
Если ПравоДоступа("Изменение", Метаданные.Справочники.Материалы, Пользователь) Тогда
Сообщить("Доступ для " + Пользователь.Имя + " на изменение открыт!");
КонецЕсли;
КонецЦикла;
// Чтение роли у текущего пользователя
Если РольДоступна("Администратор") Тогда
Сообщить("У Вас права Администратора!");
КонецЕсли;
// Проверка права у пользователя и в случае его отсутствия - вызов исключения
ВыполнитьПроверкуПравДоступа("Изменение", Метаданные.Справочники.Материалы); // "Нарушение прав доступа!"
КонецПроцедуры
Сохранение, чтение и удаление настроек пользователя в 1С 8.3:
&НаСервере
Процедура СохранениеЧтениеУдалениеНастроекПользователя()
// Сохранение произвольных настроек конкретного пользователя
НастройкиПользователя = Новый Структура;
НастройкиПользователя.Вставить("Фамилия", "Дарк");
НастройкиПользователя.Вставить("Имя", "Жанна");
НастройкиПользователя.Вставить("Пол", "Ж");
НастройкиПользователя.Вставить("Возраст", 19);
// Параметры: Ключ объекта, Ключ настроек, Настройки, Описание настроек, Владелец настроек,
ХранилищеОбщихНастроек.Сохранить("Отчет.ОСВ", "КлючНастроек", НастройкиПользователя, ,ИмяПользователя());
// Сохранение произвольных настроек для всех пользователей
ВсеПользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого Пользователь Из ВсеПользователи Цикл
ХранилищеОбщихНастроек.Сохранить("Отчет.ОСВ", "КлючНастроек", НастройкиПользователя, ,Пользователь.Имя);
КонецЦикла;
// Чтение сохраненных настроек пользователя
ЧтениеНастроек = Неопределено;
Попытка
ЧтениеНастроек = ХранилищеОбщихНастроек.Загрузить("Отчет.ОСВ", "КлючНастроек",,ИмяПользователя());
Исключение
Сообщить("Не достаточно прав доступа к настройкам пользователя: "+ИмяПользователя());
КонецПопытки;
Если ЧтениеНастроек = Неопределено Тогда // Значит настроек нет
Сообщить("Не получилось прочитать настройки.");
Иначе // Чтение настроек
Сообщить("Имя:"+ЧтениеНастроек.Имя+"; Фамилия:"+ЧтениеНастроек.Фамилия+
"; Пол:"+ЧтениеНастроек.Пол+"; Возраст:"+ЧтениеНастроек.Возраст);
КонецЕсли;
// Удаление сохраненных настроек пользователя
ХранилищеОбщихНастроек.Удалить("Отчет.ОСВ", "КлючНастроек", ИмяПользователя());
// Удаление сохраненных настроек у всех пользователей
ХранилищеОбщихНастроек.Удалить("Отчет.ОСВ", "КлючНастроек", Неопределено);
КонецПроцедуры
Процедура СохранениеЧтениеУдалениеНастроекПользователя()
// Сохранение произвольных настроек конкретного пользователя
НастройкиПользователя = Новый Структура;
НастройкиПользователя.Вставить("Фамилия", "Дарк");
НастройкиПользователя.Вставить("Имя", "Жанна");
НастройкиПользователя.Вставить("Пол", "Ж");
НастройкиПользователя.Вставить("Возраст", 19);
// Параметры: Ключ объекта, Ключ настроек, Настройки, Описание настроек, Владелец настроек,
ХранилищеОбщихНастроек.Сохранить("Отчет.ОСВ", "КлючНастроек", НастройкиПользователя, ,ИмяПользователя());
// Сохранение произвольных настроек для всех пользователей
ВсеПользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого Пользователь Из ВсеПользователи Цикл
ХранилищеОбщихНастроек.Сохранить("Отчет.ОСВ", "КлючНастроек", НастройкиПользователя, ,Пользователь.Имя);
КонецЦикла;
// Чтение сохраненных настроек пользователя
ЧтениеНастроек = Неопределено;
Попытка
ЧтениеНастроек = ХранилищеОбщихНастроек.Загрузить("Отчет.ОСВ", "КлючНастроек",,ИмяПользователя());
Исключение
Сообщить("Не достаточно прав доступа к настройкам пользователя: "+ИмяПользователя());
КонецПопытки;
Если ЧтениеНастроек = Неопределено Тогда // Значит настроек нет
Сообщить("Не получилось прочитать настройки.");
Иначе // Чтение настроек
Сообщить("Имя:"+ЧтениеНастроек.Имя+"; Фамилия:"+ЧтениеНастроек.Фамилия+
"; Пол:"+ЧтениеНастроек.Пол+"; Возраст:"+ЧтениеНастроек.Возраст);
КонецЕсли;
// Удаление сохраненных настроек пользователя
ХранилищеОбщихНастроек.Удалить("Отчет.ОСВ", "КлючНастроек", ИмяПользователя());
// Удаление сохраненных настроек у всех пользователей
ХранилищеОбщихНастроек.Удалить("Отчет.ОСВ", "КлючНастроек", Неопределено);
КонецПроцедуры
💡 Шаблоны (готовые модели) кода 1С 8.3 с тегом #Пользователи, роли (права) доступа:
📰 Актуальные новости с тегом #Пользователи, роли (права) доступа:
- В версии 8.3.28 появился механизм блокировки входа пользователей информационной базы: настройка для пользователя "Аутентификация разрешена" и настройка периода разрешенной аутентификации.
- В версии 8.3.28 внесены улучшения в механизм двухфакторной аутентификации: настраиваемая длина кода подтверждения, устаревание кода, запрос нового кода и защита от подбора кода и массовой рассылки sms, пользовательское сообщение в окне второго фактора ("Код подтверждения был отправлен на ваш номер &MaskedPhone. Введите его в окно ниже").
- В версии 8.3.27 появилась возможность подключения заданных клиентов к выбранным серверам кластера. Есть бизнес-сценарии, в которых предпочтительно вынести работу отдельных пользователей на определенные рабочие серверы. Например, пользователям, запускающим расчет себестоимости, целесообразнее работать на выделенных серверах, чтобы не мешать работе обычных пользователей.
- В версии 8.3.27 появилась возможность аутентификации через электронную почту.
- В версии 8.3.26 появилась возможность завершения сеансов после установленного администратором времени неактивности клиента.
- В версии 8.3.26 добавлена возможность настройки нужного типа аутентификации по умолчанию. Реализована возможность сохранения пароля пользователя. На форме аутентификации будут отображаться все доступные для информационной базы или публикации способы аутентификации.
- В версии 8.3.26 реализован механизм проверки пароля по списку скомпрометированных паролей, а также через API, например: https://api.pwnedpasswords.com/range.
- В версии 8.3.26 реализована возможность получения даты последней активности пользователя
- В версии 8.3.26 реализована возможность задавать алгоритм хэширования паролей
- В версии 8.3.26 разработано журналирование изменения ролей, прав доступа пользователей и административных действий для целей аудита
- В версии 8.3.26 реализованы доп. варианты беспарольной аутентификации (qr-код)
- В версии 8.3.26 реализовано получение даты последней активности пользователя
- В версии 8.3.22 реализована автоматическая генерация паролей пользователей
- В версии 8.3.22 реализовано сохранение пользовательских настроек отчета при сохранении варианта.
- В версии 8.3.22 реализовано улучшение аутентификации с использованием OpenID Connect.
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник