Каталог решений - Блокировка входа пользователей

Блокировка входа пользователей

Блокировка входа пользователей

В наличии

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

Категория:

Описание

Админ забрал все права на сервере, и вообще на сервер не пускает. Если выгнать всех пользователей можно, создав в расширении объект, то не давать им обратно заходить во время обновления не удавалось.  Есть права в базе 1С на открытие внешних обработок и полные права в базе.

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

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

&НаКлиенте
Процедура ЗаблокироватьПользователей(Команда)
ЗаблокироватьПользователейНаСервере();
КонецПроцедуры

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

&НаКлиенте
Процедура РазблокироватьПользователей(Команда)
РазблокироватьПользователейНаСервере();
КонецПроцедуры

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

КонецПроцедуры

Проверено на Бухгалтерии 3.0, 3.0.170.20, 3.0.171.16. Платформа: 8.3.25.1445.

has been added to your cart:
Оформление заказа