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

25.11.20

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
Завершение работы пользователей (завершение работы по расписанию)
.dt 50,68Kb
8 1 850 руб. Купить
Завершение работы пользователей.:
.dt 46,67Kb
26 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

Описание:

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

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

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

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

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

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

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

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

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

См. также

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

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

15500 руб.

02.09.2020    196380    1085    409    

1006

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

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

15000 руб.

10.11.2023    15553    66    33    

84

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 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, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.06.2025, версия 1.3

19200 руб.

06.12.2023    14270    61    8    

90

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

Мучаетесь со списком типовых ролей? Не хотите иметь дело с конфигуратором? Не знаете что делают имеющиеся права в базе? Хотите просто и удобно добавлять и настраивать, по одному клику, доступы и поведение при записи/удалении/проведении/открытии списка/фильтрацию данных в списках или формах выбора для пользователя или группы пользователей и для любого объекта? Не хотите переживать, что при обновлении конфигурации все права и роли слетят? (Обновление от 27.03.2023, версия 1.9)

16800 руб.

21.03.2022    17064    27    54    

49

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

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

9360 руб.

14.09.2022    6926    11    6    

15

Ценообразование, анализ цен Роли и права Системный администратор 1С v8.3 Управление правами 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Расширение возможностей программы 1С:УНФ 1.6 и 3.0. Функционал расширения - разграничение всевозможных прав пользователей и контроль при совершении различных действий.

3000 руб.

23.02.2018    61591    173    264    

164

Роли и права Системный администратор 1С v8.3 1С:Документооборот Управленческий учет Платные (руб)

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

3500 руб.

23.10.2015    64838    117    25    

130
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Sedaiko 593 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 230 24.10.19 12:53 Сейчас в теме
Интересная разработка!
Было бы ваше "ВАУУ" добавив выполнение по условию...
- например,
--- в 12-00 предупреждать и завершать все сеансы
--- или при простое более 30 минут

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