Закрытие незавершенных сеансов

0. AnatolPopov 122 20.09.19 15:00 Сейчас в теме
Как удалять потерянные сеансы пользователей, чтобы они не мешали работе. Обработка протестирована на платформе версии 8.3.13.1644.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Maxx2008 26.09.19 15:13 Сейчас в теме
Сделал подобное при запуске 1с в режиме предприятия. У 90 процентов пользователей разрешён только один сеанс, поэтому при запуске чистим все, кроме текущего. У остальных пользователе могут быть одновременно запущено два-три сеанса: выгрузки/загрузки, большие отчёты, закрытия месяца и т.д. Плюсы: не зависших сеансов), минусы - чуть дольше загружается 1С, но люди предупреждены и относятся с пониманием)
У начальства механизм отключен, но это буквально три человека.
Есть в проекте фиксировать новый сеанс и старые чистить в фоне.
AnatolPopov; +1 Ответить
3. hollyfood 04.10.19 12:57 Сейчас в теме
(1) Подскажите, пожалуйста, каким способом реализовали запрещение пользователям открывать еще один сеанс к той же БД?
4. AnatolPopov 122 04.10.19 13:18 Сейчас в теме
5. Maxx2008 14.10.19 16:22 Сейчас в теме
(3)В процедуре ПриНачалеРаботыСистемы был добавлен кусок кода, например для пользователей, которым можно до двух сеансов:

//можно до двух сеансов
		КолвоСеансов =0;
		ТекНомерСоединения = НомерСоединенияИнформационнойБазы();
		УИДПользюка = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор;
		МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
		Для Каждого ТекСоединение Из МассивСоединений Цикл
			Если (ТекСоединение.ИмяПриложения = "1CV8") И (НЕ ТекСоединение.НомерСоединения = ТекНомерСоединения) И (НЕ ТекСоединение.Пользователь = Неопределено) И (ТекСоединение.Пользователь.УникальныйИдентификатор = УИДПользюка) Тогда
				КолвоСеансов=КолвоСеансов+1;;
			КонецЕсли;
		КонецЦикла;
		Если КолвоСеансов > 2 тогда
			Предупреждение("У Вас уже открыто два сеанса!",3);
			ЗавершитьРаботуСистемы(Ложь);
		КонецЕсли;
		Возврат;
Показать


Тут интересны два момента:
1) НомерСоединенияИнформационнойБазы() - Получает номер текущего соединения с информационной базой.
2) ПолучитьСоединенияИнформационнойБазы() - Получает массив описаний соединений с текущей информационной базой.

И всё, третий сеанс им не даёт открыть.

У нас ещё есть пользователи, которым можно любое количество сеансов.
Всем остальным было сделано при открытии нового сеанса просто сбрасывали все ранние. Так решилась проблема зависших сеансов, когда пользователи не могли зайти в документ, который они открывали зависшими сеансами.

Топорно, но работает)
volodya82; AnatolPopov; +2 Ответить
2. AnatolPopov 122 26.09.19 16:06 Сейчас в теме
Это у вас в самописной конфигурации реализовано или к типовым что-то пристроили?
6. Maxx2008 14.10.19 16:25 Сейчас в теме
(2) Много лет назад она была типовой)))
7. vasilev2015 2555 24.12.19 13:34 Сейчас в теме
Здравствуйте, Анатолий !

Подскажите, насколько большая конфигурация ?

Там есть лишние объекты ?
8. AnatolPopov 122 24.12.19 13:54 Сейчас в теме
(7) Это маленькая внешняя обработка. Никаких объектов ни в какой базе не создает, обходится реквизитами формы.
9. __guest__ 06.05.21 14:17 Сейчас в теме
Здравствуйте. Скачал обработку, тестирую, вроде работает. Такой вопрос. Можно ли как-то ее изменить так чтобы был функционал:
1. Подключение одновременно к нескольким экземплярам серверов 1С:Предприятия
2. Чтобы была опция просто удаления всех сеансов с указанных серверов 1С:Предприятия, вне зависимости от того, считает обработка их потерянными или нет.
10. AnatolPopov 122 06.05.21 16:16 Сейчас в теме
(9)
1. Несколько серверов - в смысле, чтобы в поле Сервер можно было задать список через запятую или еще как, а все остальное было как прежде?
Можно подумать. Гораздо лучшая идея - взять мой код, посмотреть на него критически, сказать "ну, кто ж так пишет" и сделать свой, гораздо более правильный ;) А потом опубликовать на Инфостарте и не забыть сказать в начале статьи, кто вдохновил вас на подвиг ;)
Тем более, что вы лучше знаете, чего хотите. Здесь много разработок именно так и возникли.
2. Удаление всех сеансов не глядя - как раз то, что мне предлагали сделать с самого начала в качестве единственной функции. Я тогда сказал, что с ума еще не сошел ;)
Наверно, это все же полезная опция. Может, даже полезнее, чем некоторые из имеющихся. Просто я всегда руководствовался принципом "не навреди" ;)
11. пользователь 12.05.21 08:36
Сообщение было скрыто модератором.
...
12. пользователь 12.05.21 08:38
Сообщение было скрыто модератором.
...
13. __guest__ 12.05.21 08:39 Сейчас в теме
(10)
Несколько серверов - в смысле, чтобы в поле Сервер можно было задать список через запятую или еще как

Наподобие. Анатолий, если более подробно, нам нужно несколько переделать вашу обработку, чтобы она удаляла зависшие сеансы не только из серверов 1С, но так же из базы контроля сеансов ( база, подключаемая в поле "Внешнее управление сеансами" в свойствах БД в оснастке Администрирование Серверов 1С:Предприяития. Мы за это готовы заплатить. Если интересует - давайте свяжемся и более подробно все обсудим
Skype sanya.admin1 .
14. AnatolPopov 122 12.05.21 13:14 Сейчас в теме
(13) К сожалению, я сейчас не готов взяться за такую работу. В последнее время приходится заниматься другими делами.
Оставьте свое сообщение
Вакансии
Консультант-программист по информационным системам 1С
Москва
зарплата от 150 000 руб. до 200 000 руб.
Полный день

Системный архитектор 1С
Москва
зарплата от 250 000 руб.
Полный день

Руководитель группы 1С
Екатеринбург
зарплата от 200 000 руб.
Полный день

Программист 1С
Уфа
зарплата от 110 000 руб.
Полный день

Функциональный архитектор
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день