Освобождение лицензий, отключение неактивных пользователей. Управляемые формы

12.03.13

База данных - Журнал регистрации

Все та же проблема отсутствия свободных лицензий. Плюс освобождение базы для ночных регламентных работ (бэкап и т.п.).
Делюсь своим методом определения неактивности и описание решения.

Файлы

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

Наименование Скачано Купить файл
Процедуры в txt
.zip 2,67Kb
135 1 850 руб. Купить

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

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

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

Предпосылки:

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

*Выдирал процедуры "Как есть" для примера, сами поработайте над притиркой.

*Для своих "капиталистических" нужд (серверы за бугром), я также учитываю разницу времени между клиентом и сервером. Это оставил за кадром, чтобы не перегружать текстом.

 

ЗАЧЕМ и что это:

 Небольшие доработки в коде, чтобы каждая работающая клиентская машина САМОСТОЯТЕЛЬНО определяла время своей неактивности и самостоятельно (корректно) закрывала свою сессию. Тем самым освобождая лицензию.

 

Основа:

- Раз в 1100 секунд (время найдено эмпирическим путем как универсальное) отрабатывает регламентное задание, которое сохраняет ОПРЕДЕЛЕННЫЙ срез журнала регистрации в РегистрСведений (перетирая предыдущее сохранение).

- На каждый вход Админа проверяется "А не выключена ли регистрация событий в Журнале регистрации?".

- В настройках для Админа выведена настройка 3-х констант: Вкл/Выкл выбрасывалку; время простоя в минутах; и время начала выбрасывания (как часть даты - время).

- На запуске сеанса клиента стартуется процедура "УстановитьОжиданиеПростоя()", которая запускает обработчик ожидания начала времени выбрасывания.

- Обработчик ожидания начала времени выбрасывания каждые 10 минут проверяет не наступило ли "Константа время начала выбрасывания" (Это чтобы отошедшего покушать сотрудника не убило, у нас стоит на 18:00). И если уже да, запускает обработчик ожидания выбрасывания.

- Обработчик ожидания выбрасывания каждые "Константа времени простоя"/1.5 проверяет регистр сведений сохранения журнала регистрации и, если текущий пользователь за последние "Константа времени простоя" даже отчет не открывал, на пару минут выводит предупреждение и закрывает сеанс.

 

Постарался все процедуры выложить и как картинку и в тексте. Кому как удобнее

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

14400 руб.

20.08.2024    49079    277    143    

248

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

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

16000 руб.

10.11.2023    20890    86    42    

95

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

20400 руб.

06.12.2023    18699    68    10    

102

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

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    40542    124    152    

84

Журнал регистрации Системный администратор 1С v8.3 Управляемые формы 1C:Бухгалтерия Россия Платные (руб)

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

22800 руб.

22.02.2018    37488    61    55    

58

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

Брандмауэр для сервера 1С включает в себя управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

12000 руб.

06.02.2017    34311    147    18    

53

Журнал регистрации Системный администратор Программист 1С v8.3 1C:Бухгалтерия Платные (руб)

Журнал регистрации платформы 1С в SQL. Общая база хранения всех журналов. Через com-подключение регламентным заданием периодически догружает журналы регистраций из рабочих баз. Предоставляет настраиваемый доступ к журналам по правам подразделений. Формирует отчеты по пользователям и данным.

12000 руб.

23.05.2014    58223    53    17    

48
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mr zafod 23 22.09.12 13:36 Сейчас в теме
а почему нельзя использовать блокировку соединений для запуска регламентных заданий?
ну а по теме:

сам сталкивался с такой проблемой (отключение не работающих пользователей). Если позволите изложу другой, как мне кажется более верный вариант, опробованный в жизни:

Определяем, что неактивного пользователя нужно отключить через 30 минут простоя
При старте системы запускаем обработчик ожидания через каждые 5 минут
Если пользователь не работает, то обработчик до момента отключения должен стартануть ровно 6 раз ровно через 5 (+/- 10 секунд) минут. Нам остается только ждать этого момента. Заводим пару переменных, в одну копим количество стартов через 5 минут, в другую время последнего запуска. Если время последнего запуска - время текущего старта обработки ожидания больше 5 минут - значит пользователь какое-то время работал с программой - обнуляем переменные и ждем снова.

Ваш метод тоже хорош, но как-то "дорого" делать срез регламентным заданием и лазить в регистр. Тем более пользователь может работать в течении часа-двух без необходимости производить действия, отражающиеся в журнале регистрации.
Anna_A; AllexSoft; Stalker27; EmpireSer; kuza_87; CratosX; i_lo; Bitnikov; +8 Ответить
5. Bitnikov 398 24.09.12 10:30 Сейчас в теме
(1) mr zafod, Сорри... предыдущее письмо написал без ссылки.
Блокировку соединений использую, но для другого. В данном случае иные задачи.
Здесь фенечка в том, чтобы определять неработающих пользователей и ЗАКРЫВАТЬ совсем их сессии. Пусть завтра, если таки выйдут на работу, заново откроют.

В "Нашем" ДАННОМ варианте базы, работать без отражения в журнале регистрации (или в аудит логе, дублирующем журнал) невозможно. Если нет записей - пользователь не работает.
Конфа самописная для управления работой IT подразделения, с назначением работы, с передачей задач, отражения поэтапного выполнения, планирования через мс прожект и т.п.
К тому же, включается выбрасывалка ПОСЛЕ работы.

Ваш вариант основан на заторможенности клиента в случае работы пользователя? Если да, то лично "Нам" на подойдет. Таки работаеют ВСЕ в прозрачном(облачной) Васькином решении))) (WYSE) Аналог удаленки. При загрузке сервера Васькиного, торможение будет У ВСЕХ. Независимо от ранга и регалий.
Но как идея - неплохо.

А регистр последних действий я использую еще и для своих целей. Чтобы всегда наскоро посмотреть кто что делал, не открывая журнала регистрации. Например, кто влез в конфигуратор без санкции на то и разослать нотификацию.
8. mr zafod 23 24.09.12 13:06 Сейчас в теме
(5) Я не имел ввиду торможения и зависания. Я о том что есть у меня такие финансовые директора, которые бахают отчет о продажах за год по категориям и потом с экрана на собрании его мусолят в течении часа, при этом не обращаясь к базе (т.е. запись в журнал регистрации не производится), однако активно скролят и копипастят отчет. Именно для этого мне пришлось обратиться к обработке ожидания, т.к. любые интерактивные действия пользователя отсрочат выполнение такой обработки, что является показателем активности пользователя.
11. Bitnikov 398 24.09.12 13:51 Сейчас в теме
(8) mr zafod, Да, я это и назвал заторможенностью клиента в случае работы пользователя)) Идея хорошая.
31. serg1974 04.09.14 09:32 Сейчас в теме
(1) mr zafod, идея понравилась - но что-то не работает!
команда: ПодключитьОбработчикОжидания("ПроверитьНапоминания", 60);
включает обработку - которая выполняется ровно через 60 секунд - даже если я за 1 мин. успел создать и сохранитть документ!!
версия платформы: 1С:Предприятие 8.2 (8.2.19.83)
книги по 1с8 есть но не смог найти описание этой команды :(
32. Bitnikov 398 16.09.14 10:30 Сейчас в теме
(31) serg1974, Все правильно, она и должна отрабатывать постоянно. И по журналу работы пользователя система понимает работает ли он или простаивает
2. petrov_al 10 22.09.12 16:35 Сейчас в теме
Все бы ничего, но в конфу из-за этого придется лезть а это делать нехочется. Покрайней мере подключать обработчик нужно в типовых процедурах при начале работы системы. Отсюда вопрос, возможно ли это сделать на уровне сервера 1с?
6. Bitnikov 398 24.09.12 10:35 Сейчас в теме
(2) petrov_al, Без конфигурирования можно внешней библиотекой. Которая проверит время простоя всей системы или аппликейшна или чего другого. Я этим не занимался - не интересно. Нам итак для этой базы в случае миграции поднимать приходиться кучу запросов глобальным командам на установку Прожекта, IIS и т.п. Добавлять еще какую-то библиотеку не интересно, а у самих нас ПРАВ НЕТ.
Лучше уж сообразить своими внутренностями.
А где-то на инфостарте лежит решение через ком соединение. Поиск рулит
9. mr zafod 23 24.09.12 13:11 Сейчас в теме
(2) petrov_al, ну как вариант выполнения чего-то по расписанию в типовых конфигурациях без изменения давно существует костыль - например, Вам нужно запускать внешнюю обработку из справочника по расписанию. Делаете правила обмена, в параметрах заводите ссылочку на справочник внешних обработок. В правилах ПередВыгрузкой по ссылочке получаете обработку, сохраняете на диск и запускаете (для всего есть штатные средства в типовых).
10. mr zafod 23 24.09.12 13:13 Сейчас в теме
(2) petrov_al, Уровень сервера не может знать активен ли пользователь в своем клиентском приложении пока тот не обращается к серверу, об этом знает только клиент, поэтому в конфу лезть приходится
3. dyak84 23.09.12 09:16 Сейчас в теме
Вещь нужная и небходимая.Но подскажите будет ли нормально работать в кластерной много процесорной системе (имется ввиду клиент серверный SQL вариант работы. А то пока не нашел обработки которая завершала сеансы работы пользователей, всех без исключения. Зарание спасибо за ответ
7. Bitnikov 398 24.09.12 10:39 Сейчас в теме
(3) dyak84, ))) Да, будет. настройке монопенисуально на чем двигаться)))
У нас работает на серверном варианте (точнее, на кластере серверов).
"Наш" вариант основан на том, что каждый клиент уничтожает себя самостоятельно))) Суицидально настроенная работа)))

Но! Если нужна обработка, которая завершит на время все соединения, это стандартная "блокировка соединений с информационной базой". Опять же, в поиск.
4. пользователь 24.09.12 10:28
Сообщение было скрыто модератором.
...
12. zzz_natali 61 26.09.12 11:04 Сейчас в теме
Что будет, предположим, с открытым документом каким-нить а-ля Требование-накладная-перемещение-списание, который "марьиванна" стряпала пол-дня, остановилась на 324й строке, не сохранилась и срочняком свалила с работы в 18:01, чтобы успеть в садик за ребёнком?
CyberCerber; CratosX; +2 Ответить
13. Bitnikov 398 26.09.12 13:00 Сейчас в теме
(12) zzz_natali, отличный вопрос!
В моем исполнении документ деспотично закрывается без сохранение (специфика работы).

А в Вашем случае...
Каждый клиент закрывает себя сам. Пишите в процедуре ПроверитьВремяПростояПользователя() перебор всех открытых форм с записью каждого объекта
15. Angeros 27.09.12 07:18 Сейчас в теме
(12) zzz_natali, думаю логично будет приучить пользователя так не делать. Пару таких уроков и пользователь узнает где на форме есть кнопка записать, а вообще даже без этих технологий бывает свет маргнет комп зависнет - потому на практике то о чем вы говорите маловерятно. Все и так знают что важную работу надо записывать.
14. Angeros 27.09.12 07:14 Сейчас в теме
Что-то прочитал тему и не смог понять как-же все таки освободить лицензии. У меня проблема бывает что задание отработало, отвалилось, но при этом ключ удерживает за собой. сама программа уже не живая.
16. Bitnikov 398 27.09.12 10:35 Сейчас в теме
(14) Angeros, в теме описал способ определения неактивности. Освобождение лицензий в названии - лишь последствие удаление неактивных сеансов.

Про удержание лицензий.
Тоже так частенько происходит.

ОПИСАНИЕ
Работаем в серверном варианте. Ключи распределены по трем серверам. nethasp.ini на каждой машине настроили смотреть только два сервера и у узкого круга клиентов смотреть на все три.
Отключаемые машины остаются висеть трупами сеансов с отсчетом времени. При этом в случае повторного соединения, клиент не восстанавливает свою сессию ключа на этом сервере, а может занинять лицензию на другом ключе!

ПОПЫТКА НОМЕР РАЗ
Решения пока нет. Неспешно ищем, лицензий достаточно.
Поначалу покурили описания 1С, погуглили и решили поэкспериментировать с настройками баз на аппликейшне. Установили на всех базах "Разрешить выдачу лицензий сервером 1С:Предприятия" на Нет.

Как только закончим эксперимент и будет решение - напишу статью на Инфостарт.
17. Angeros 27.09.12 11:19 Сейчас в теме
(16) Спасибо за исчерпывающее пояснение, мы также столкнулись с этой проблемой когда клиент открывает новые сессии при этом хавает еще лицензии с другого сервера не учитывая что он уже используется выходит что вместо одного выбирает 2 лицензии... Мы плюнули решать эту проблему и заменили 2 ключа 50+20 на 1. сейчас 100 юзеров. и такой трудности нет. Увы нет возм. заниматься латанием дыр 1с.
18. dyak84 03.10.12 13:51 Сейчас в теме
Здраствуйте уважаемый автор. Подскажите как правильно применить вашу идею в 1С 8.2 УТ обычное приложение, Подскажите а сесии которые будут завершатся без подтверждения не будуть висеть на сервере. Зарание спасибо за ответ
19. Bitnikov 398 03.10.12 15:54 Сейчас в теме
(18) dyak84, добрый день.
Под обычным приложением всего лишь не используйте команды процедур "НаКлиенте" и "НаСервере". Вроде бы не использовал более ничего особенного, т.е. процесс притирки:
1. Создать константы
2. Создать регистр сведений
3. Вставить и подретушировать процедурки (убрать запуск ненужных процедур и функций (такие как проверка полные ли права у пользователя) или дописать нужные функции)

Сессии не будут висеть на КАКОМ сервере? Вы имеете в виду сеанс/соединение на аппликейшне? Или запись об использовании лицензии на хасп лиценз мененджере?

По порядку, если первое, то не будут. Потому что закрывает каждый клиент СЕБЯ САМ. Я не выкидываю его, его клиент 1С сам себя закрывает КОРРЕКТНО.

ЗЫ. Не забывайте ставить ПЛЮСИКИ! Не нравиться статья, то хотя бы за ответы плюсики
20. dyak84 03.10.12 18:03 Сейчас в теме
(19) Спасибо за исчерпывающий ответ. Вроде все ясно. Будуть вопросы буду писать. ПЛЮСЫ ПОСТАВИЛ
21. Abadonna 3976 24.10.12 00:54 Сейчас в теме
Если уж менять конфу, то и получить от этого желательно по максимуму.
MiracleNative
Метод УстановитьКонтрольАктивности();

Пример обработчика
Функция ПроверитьНеактивность() Экспорт
	ВремяРаботыWindows=Система.ВремяРаботыWindows();
	ИнтервалНеактивности=ПроцедурыСервера.ПолучитьЗначениеКонстанты("ИнтервалНеактивности");
	Если  ИнтервалНеактивности>0 Тогда // контролируется
		Если (ВремяРаботыWindows-ПоследнийКлик)>=ИнтервалНеактивности Тогда
			Неактивность=Истина;
			Система.УдалитьТаймер(60000); // чтобы больше не напоминала
		Иначе
			Неактивность=Ложь; // юзверь таки работает (кликает), блин ;)
		КонецЕсли;
	Иначе
		Неактивность=Ложь; // не контролируется
	КонецЕсли;
	Возврат Неактивность;
КонецФункции

Показать
22. Bitnikov 398 24.10.12 11:45 Сейчас в теме
(21) Abadonna, спс за информацию, но для МОИХ нужд не пойдет:
1. Потому что за копейку
2. Потому что овчинка не стоит выделки. Что я получу, что пользователь кликает по мышке и пользуется интернетом? Но в системой он не пользуется, поэтому уж лучше ее закрыть.
23. Konstatine 8 10.12.12 15:40 Сейчас в теме
Здравствуйте, уважаемый автор!
Система 1С: Документооборот 8.2 КОРП
Вставил процедуры общего модуля сервера в модуль сеанса (запустил базу без ошибок), потом процедуры модуля приложения в модуль управляемого приложения и пошли ошибки: "Переменная не определена (РаботаСПараметрамиСеанса)", "Переменная не определена (глТекущийПользователь)".
Подскажите, что я делаю неправильно?
24. Bitnikov 398 09.01.13 16:33 Сейчас в теме
(23) Konstatine, Прошу прощения за молчание. Декабрь выдался тяжелым.
глТекущийПользователь это экспортная переменная, объявленная у меня в модуле управляемого приложения. Если простое объявление не поможет, я покопаюсь в вырезанных модулях и скажу где поправить.
РаботаСПараметрамиСеанса - это серверный модуль, в котором инициируются переменные в том числе. Обратите внимание, что процедуры "для запуска из модуля приложения" НЕ должны иметь команды препроцессора &НаСервере
25. redgoll 22.01.13 07:51 Сейчас в теме
Спасибо за идею. Тоже бьюсь с нехваткой лицензий. Народ любит понаоткрывать сеансов. Только боюсь, если я это реализую на практике, пользователи взвоют, как это так 1С-ка сама закрылась, а я хотела поработать. У вас как, нормально к этому отнеслись?
27. Bitnikov 398 19.02.13 16:57 Сейчас в теме
(25) redgoll, У нас под контроль лицензий попадает только наша братия на системах учета рабочего времени. Бизнес подразделения и файнанс неа
26. limpsobaka 19.02.13 11:04 Сейчас в теме
Просьба скинуть на почту обработку limpusoid@yandex.ru.

Заранее спасибо.
28. Bitnikov 398 19.02.13 16:59 Сейчас в теме
(26) limpsobaka, ммм... Алексей, а обработки то и нет. Это все отдельные модули, которые нужно интегрировать в систему. И то, главное в них - понимание что и зачем делаецца, а не код!
29. Myst_ 65 27.02.13 11:16 Сейчас в теме
А почему нельзя было вложить cf файл для быстрого знакомства с кодом,а то фраза ".. Мне важны плюсы с рекомендациями, а не деньги" -- читается в ваше публикации по другому - Созданы Два файла (зачем то ?) чтобы за каждое скачивание файла вам капала вполне конкретная Виртуальная монета?
Cf будет хорошим дополнением статьи.
30. Bitnikov 398 12.03.13 09:56 Сейчас в теме
(29) Myst_, а почему бы и нет? Но сделаю это как освобожусь. А пока же, уже месяц висит очередная статья, которую все никак не допишу. Времени нет.

В статье я описал СПОСОБ. Для неленивых, чтобы было бесплатно, приложил скрины необходимых модулей.
И цеэфник и тексты модулей (два их, чтобы не отвечать на вопросы куда что помещать) все равно нужно скачивать.
Ну и сходу Ваше пожелание получить конфигурацию выглядит нагло. Я поделился идеей, выложил скрины для бесплатности, а мне предлагаете еще и к Вам приехать, настроить все на месте...

Но, как написал выше, закончу статью (другую) и сделаю CF с голой конфигурацией с примером.
Или... я в статью вложу модули! ИМХО, так будет даже доступнее.
33. XoloD 15 08.10.14 07:05 Сейчас в теме
При запуске регламентного задания регистр сведений ЖурналПоследнихДействий очищается и в него записываются новые записи из журнала регистрации. Как быть с такими моментами, когда регистр очистился и в этот момент идет проверка активности пользователя, соответственно фиксируется, что пользователь не активен ? Ситуация конечно редкая, но можно ли тут как то перестраховаться ?
34. Bitnikov 398 08.10.14 14:25 Сейчас в теме
(33) XoloD, у нас подобного не встречалось, но идея хорошая.
Рекомендую сделать перед проверкой активности пользователя проверку, что ЖурналПоследнихДействий не пуст. И останавливать проверку, если не заполнен.
В этом случае журнал уже наполниться, при перезапуске проверки.
А если регламентное заполнения ЖурналаПоследнихДействий остановлено и он не заполниться никогда, то и проверке активности незачем отрабатывать.
35. пользователь 18.12.14 16:57
Сообщение было скрыто модератором.
...
36. kuPyxa 15.01.15 12:03 Сейчас в теме
А будет работать на файловой базе это все? И подскажите если да, то какой код куда пихать, если не трудно.
37. Bitnikov 398 16.01.15 18:02 Сейчас в теме
На файловой частично будет работать. Т.е. выбрасывалка будет работать, но РЗ сохранения нужно перевести будет на ту же обработку ожидания.
Про код не отвечу. Писал эту разработку несколько лет назад, описал внедрение как мог подробно, время тратить открывать свой же код и смотреть как делал нет мотивации. Скучно.
38. пользователь 19.01.15 10:11
Сообщение было скрыто модератором.
...
Для отправки сообщения требуется регистрация/авторизация