Завершение работы пользователей

25.11.20

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

Завершение работы пользователей с помощью подключения обработчика ожидания.

Скачать файлы

Наименование Файл Версия Размер
Завершение работы пользователей (завершение работы по расписанию)
.dt 50,68Kb
7
.dt 50,68Kb 7 Скачать
Завершение работы пользователей.:
.dt 46,67Kb
22
.dt 46,67Kb 22 Скачать

Завершение работы пользователей с помощью подключения обработчика ожидания.

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

Задачи были следящие:

1.Уведомить всех пользователей базы о скором выключении базы.

2.Завершить сеансы пользователей с возможностью сохранения данных.

3.Ну и для особо «Работящих», завершить без сохранения.

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

Первым делом создаем перечисление «РежимыЗавершенияРаботыПользователей»

Затем две константы «РежимЗавершенияРаботыПользователей» (ПеречислениеСсылка.РежимыЗавершенияРаботыПользователей) и «РежимЗавершенияРаботыПользователейТаймАут» (Число)

 

Нам потребуется общая форма:

В модуле данной формы пишем:

&НаСервере
Процедура ЗаписатьНаСервере()
	Константы.РежимЗавершенияРаботыПользователей.Установить(ЭтотОбъект.РежимыЗавершенияРаботыПользователей);
	Константы.РежимЗавершенияРаботыПользователейТаймАут.Установить(ЭтотОбъект.РежимЗавершенияРаботыПользователейТаймАут);
КонецПроцедуры

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ЭтотОбъект.РежимыЗавершенияРаботыПользователей = Константы.РежимЗавершенияРаботыПользователей.Получить();
	ЭтотОбъект.РежимЗавершенияРаботыПользователейТаймАут = ЗавершенияРаботыПользователей.РежимЗавершенияРаботыПользователейТаймАут();
КонецПроцедуры

И наконец, создаем два общих модуля один для «Сервера» другой для «Клиента» (у меня это «ЗавершенияРаботыПользователей» и «ЗавершенияРаботыПользователейКлиент»)

Модуль ЗавершенияРаботыПользователейКлиент:

Процедура ОбработчикКонтрольРежимаЗавершенияРаботыПользователей() Экспорт
	
	ТекущийРежим = ЗавершенияРаботыПользователей.ТекущийРежимЗавершенияРаботыПользователей();
	
	Если ТекущийРежим = ЗавершенияРаботыПользователей.ПредупредитьПользователейОЗавершенииРаботы() Тогда
		ВывестиПредупреждение("Работа системы будет завершена через несколько минут!", 10, "Завершение работы системы");
	ИначеЕсли ТекущийРежим = ЗавершенияРаботыПользователей.ЗавершитьССохранениемДанныхПользователей() Тогда
		ВывестиПредупреждение("Работа системы будет завершена!", 10, "Завершение работы системы");
		ЗавершитьРаботуСистемы(Истина);
	ИначеЕсли ТекущийРежим = ЗавершенияРаботыПользователей.ПрекратитьРаботуБезусловно() Тогда
		ПрекратитьРаботуСистемы();
	КонецЕсли; 
	
КонецПроцедуры 

Процедура УстановитьКонтрольРежимаЗавершенияРаботыПользователей() Экспорт
	ТекущийРежим = ЗавершенияРаботыПользователей.ТекущийРежимЗавершенияРаботыПользователей();
	
	Если ЗавершенияРаботыПользователей.РольДоступнаЗавершенияРаботыПользователей() Тогда
		Если ТекущийРежим <> ЗавершенияРаботыПользователей.РазрешитьРаботу() Тогда
			Если ЗавершенияРаботыПользователей.РежимыЗавершенияРаботыПользователейЗначениеЗаполнено() Тогда
				ВывестиПредупреждение("Установлен режим завершения работы пользователей: " + ТекущийРежим + ".",10, "Завершение работы системы");
			Иначе
				ВывестиПредупреждение("Режим завершения работы пользователей не установлен.", 10, "Завершение работы системы");
			КонецЕсли; 
		КонецЕсли; 
	Иначе
		ОбработчикКонтрольРежимаЗавершенияРаботыПользователей();
		ТаймАут = ЗавершенияРаботыПользователей.РежимЗавершенияРаботыПользователейТаймАут();
		ПодключитьОбработчикОжидания("ОбработчикКонтрольРежимаЗавершенияРаботыПользователей", ТаймАут);
	КонецЕсли; 
КонецПроцедуры 

Функция ВывестиПредупреждение(ТекстСообщения, ТаймАут = 0, Заголовок = "") Экспорт
	Предупреждение(ТекстСообщения, ТаймАут, Заголовок);
КонецФункции

 

 Модуль ЗавершенияРаботыПользователей:

Функция ТекущийРежимЗавершенияРаботыПользователей() Экспорт 
	Возврат Константы.РежимЗавершенияРаботыПользователей.Получить();	
КонецФункции

Функция РольДоступнаЗавершенияРаботыПользователей() Экспорт 
	Возврат РольДоступна("ПравоЗавершенияРаботыПользователей");
КонецФункции

Функция ПредупредитьПользователейОЗавершенииРаботы() Экспорт 
	Возврат Перечисления.РежимыЗавершенияРаботыПользователей.ПредупредитьПользователейОЗавершенииРаботы;
КонецФункции

Функция ЗавершитьССохранениемДанныхПользователей() Экспорт 
	Возврат Перечисления.РежимыЗавершенияРаботыПользователей.ЗавершитьССохранениемДанныхПользователей;
КонецФункции

Функция ПрекратитьРаботуБезусловно() Экспорт 
	Возврат Перечисления.РежимыЗавершенияРаботыПользователей.ПрекратитьРаботуБезусловно;
КонецФункции

Функция РазрешитьРаботу() Экспорт 
	Возврат Перечисления.РежимыЗавершенияРаботыПользователей.РазрешитьРаботу;
КонецФункции

Функция РежимыЗавершенияРаботыПользователейЗначениеЗаполнено() Экспорт 
	Возврат ЗначениеЗаполнено(Константы.РежимЗавершенияРаботыПользователей.Получить());
КонецФункции

Функция РежимЗавершенияРаботыПользователейТаймАут() Экспорт 
	Если ЗначениеЗаполнено(Константы.РежимЗавершенияРаботыПользователейТаймАут.Получить()) Тогда 
	    ТаймАут = Константы.РежимЗавершенияРаботыПользователейТаймАут.Получить();
	Иначе
		ТаймАут = 60;
	КонецЕсли;
	Возврат ТаймАут;
КонецФункции

Теперь чтобы все заработало  нам необходимо добавить  строчку в модуль приложения:

Процедура ПриНачалеРаботыСистемы()
	УстановитьКонтрольРежимаЗавершенияРаботыПользователей();
КонецПроцедуры

Описание:

Пользователям которые должны работать (администраторы, чтобы сделать обновления) даем Роль – «ЗавершенияРаботыПользователей». Таким пользователям при запуске базы  сообщается в каком режиме работает в данное время система. У всех остальных пользователей запускается обработчик ожидания "ОбработчикКонтрольРежимаЗавершенияРаботыПользователей", который в зависимости от установленного значения константы «РежимЗавершенияРаботыПользователей» с периодичностью константы «РежимЗавершенияРаботыПользователейТаймАут» выполняет действия:

- «ПредупредитьПользователейОЗавершенииРаботы» - пользователю выдается сообщение "Работа системы будет завершена через несколько минут!" с периодичностью константы «РежимЗавершенияРаботыПользователейТаймАут»;

- «ЗавершитьССохранениемДанныхПользователей» - пользователю выдается сообщение «Работа системы будет завершена!», после закрытия всех документов работа будет завершена;

- «ПрекратитьРаботуБезусловно» работа будет завершена без предупреждения пользователя.

В режиме «РазрешитьРаботу» сообщения никакие не выдаются

Обработка тестировалась на платформе  1С:Предприятие 8.3 (8.3.14.1694).

Обновление 25.11.2020:

Добавлено завершение работы по расписанию.

Завершение работы пользователей ПодключитьОбработчикОжидания

См. также

SALE! 20%

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

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

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

13000 10400 руб.

02.09.2020    122137    670    389    

714

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

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

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

5700 руб.

27.05.2021    32731    204    89    

165

Автоподбор ролей для профилей и групп доступа в любых типовых базах 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.

12000 руб.

06.12.2023    2976    13    1    

34

SALE! 20%

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

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

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

10000 8000 руб.

10.11.2023    3531    11    1    

34

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

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

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

9360 руб.

14.09.2022    5759    7    4    

9

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

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

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

2520 руб.

21.05.2019    1692307    552    192    

133

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

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

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

18000 руб.

29.11.2019    24692    13    8    

33
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Sedaiko 572 07.10.19 11:25 Сейчас в теме
2. demon1981 07.10.19 11:44 Сейчас в теме
А чем не устроила типовая система завершения работы пользователей при помощи объекта БлокировкаСеансов.
3. user921814 21 07.10.19 16:04 Сейчас в теме
(2) конфигурация самописная. Это решение мне показалось гораздо проще чем решение из Библиотеки стандартных подсистем.
4. demon1981 08.10.19 05:40 Сейчас в теме
(3)а, я просто БСП в свою самописку внедрил :)
5. gaglo 09.10.19 09:50 Сейчас в теме
Решение практически совпадает с примененным в очень древнем УПП (1.0 - когда БСП, поди, еще не было).
6. webresurs 205 24.10.19 12:53 Сейчас в теме
Интересная разработка!
Было бы ваше "ВАУУ" добавив выполнение по условию...
- например,
--- в 12-00 предупреждать и завершать все сеансы
--- или при простое более 30 минут

возможно?
Оставьте свое сообщение