Авторизация: создание справочника "Пользователи" в 1C:Предприятие 8.3

26.06.23

Администрирование - Роли и права

Авторизация является важной частью любой информационной системы, и в 1C:Предприятие 8.3 можно легко реализовать авторизацию пользователей с использованием специального справочника "Пользователи". В этой статье мы рассмотрим этапы создания справочника "Пользователи" с реквизитами "Логин", "Пароль", "Роль" и "Уникальный идентификатор", где роль будет ссылаться на перечисление "Роли".

Важной частью любой информационной системы является авторизация пользователей. В 1C:Предприятии 8.3 предусмотрены удобные средства для реализации авторизации с помощью специального справочника "Пользователи". В данной статье мы рассмотрим этапы создания справочника "Пользователи" с реквизитами "Логин", "Пароль", "Роль" и "Уникальный идентификатор". Особенностью будет то, что роль будет связана с перечислением "Роли".

 

Шаг 1: Создание справочника "Пользователи"

  1. Запустите 1C:Предприятие 8.3 и откройте нужную информационную базу.
  2. В меню выберите "Справочники" -> "Справочники" или воспользуйтесь горячей клавишей F8.
  3. В открывшемся окне нажмите кнопку "Создать" для создания нового справочника.
  4. Введите название справочника, например, "Пользователи", и нажмите "ОК".

 

Шаг 2: Создание перечисления "Роли"

  1. В меню выберите "Справочники" -> "Перечисления" или воспользуйтесь горячей клавишей Ctrl+Shift+E.
  2. В открывшемся окне нажмите кнопку "Создать" для создания нового перечисления.
  3. Введите название перечисления, например, "Роли", и нажмите "ОК".
  4. В списке значений перечисления добавьте нужные роли, например, "Администратор", "Менеджер", "Директор" и т.д.
  5. Нажмите "ОК", чтобы сохранить созданное перечисление.

 

 

 

Шаг 3: Добавление реквизитов в справочник

  1. В открывшемся окне справочника "Пользователи" нажмите кнопку "Реквизиты".

  2. В списке реквизитов нажмите кнопку "Добавить" для добавления нового реквизита.

  3. Добавьте следующие реквизиты и их типы данных:

    • Логин (Тип: Строка, Длина: 50)
    • Пароль (Тип: Строка, Длина: 50)
    • Роль (Тип: ПеречислениеСсылка.Роли)
    • УникальныйИдентификатор (Тип: УникальныйИдентификатор)
  4. Нажмите "ОК", чтобы сохранить добавленные реквизиты.

 

 

 

Шаг 4: Добавление формы элемента в событиях формы

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

  1. Сохраните изменения.

 

Шаг 5: Дополнительная настройка и использование

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

Это были основные этапы создания справочника "Пользователи" с реквизитами "Логин", "Пароль", "Роль" и "Уникальный идентификатор" в 1C:Предприятие 8. Вы можете дополнить данный функционал своими настройками и логикой в зависимости от требований вашей информационной системы.

Авторизация в 1C:Предприятие 8.3 Создание справочника "Пользователи"

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    127280    689    389    

740

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

14400 руб.

06.12.2023    3792    20    1    

42

Infostart УДиФ: Управление данными и формами 1С

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 руб.

10.11.2023    4763    12    2    

38

Запрет доступа к данным по зарплате для БП 3.0 и КА 2.5

Зарплата Роли и права Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

5700 руб.

27.05.2021    33355    206    89    

166

Роли для кладовщика

Логистика, склад и ТМЦ Роли и права Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

2520 руб.

21.05.2019    1692751    554    192    

133

Расширение для разграничения доступа к контрагентам и обработка для группового назначения доступа для Бухгалтерии (RLS) 3.0.143.42

Роли и права Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение предназначено для Бухгалтерии предприятия (версии ПРОФ и КОРП). Типовая конфигурация остается на поддержке. С помощью расширения менеджер по продажам будет иметь доступ к контрагентам и списку их документов только в случае, если он является для них ответственным. Пользователю с полными правами также доступна обработка «Назначение ответственных» для группового добавления/удаления ответственного в карточке контрагента. Есть версия данного расширения для клиентов Fresh - в магазине расширений (Fresh)

9360 руб.

14.09.2022    5880    7    4    

9

Универсальная система оповещений в базе или по почте по произвольным условиям, расписанием, ролям и пользователям (Расширение / конфигурация для платформ 8.3.6+, для ЛЮБЫХ баз)

Роли и права Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

Данная система разработана как альтернатива стандартной системе напоминаний. Но имеет ряд существенных преимуществ: отображение в базе или с отправкой по почте, свое расписание, возможность фильтрации по ролям и пользователям, формирование своих запросов и макетов, шаблоны писем, работа в фоне. А также может блокировать работу пользователей при заданных условиях. Может работать в составе любой конфигурации. Имеется справка с описанием возможностей. (Обновление от 20.02.2024, версия 2.2, расширение)

19200 руб.

29.11.2019    24836    14    8    

33
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 1801 26.06.23 23:11 Сейчас в теме
Это что за сферический пример в вакууме? Мало того, что для всего этого есть БСП, так еще и пример в статье с реальностью соотносится примерно никак.
mc2; 0x00; +2 Ответить
2. user1398474 27.12.23 16:16 Сейчас в теме
Спасибо, очень помогло, особенно когда в силу обстоятельств, тащить ворох ненужных модулей из БСП совершенно не хочется.
Оставьте свое сообщение