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

25.11.20

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

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

Скачать файл

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

Наименование SM По подписке [?] Купить один файл
Завершение работы пользователей (завершение работы по расписанию)
.dt 50,68Kb
7
7
1 SM
Скачать Купить за 1 850 руб.
Завершение работы пользователей.:
.dt 46,67Kb
24
24
1 SM
Скачать Купить за 1 850 руб.

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

Описание:

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

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

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

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

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

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

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

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

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

См. также

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

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

10000 руб.

02.09.2020    147356    806    393    

825

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

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

10000 руб.

10.11.2023    8346    29    10    

53

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

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

5940 руб.

27.05.2021    35918    246    89    

195

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 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.

15600 руб.

06.12.2023    6877    30    3    

61

Роли и права Системный администратор Программист Платформа 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)

13200 руб.

21.03.2022    15635    24    53    

46

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

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

19200 руб.

29.11.2019    25420    16    8    

36

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

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

2520 руб.

21.05.2019    1694159    564    194    

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

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