Завершение работы пользователей. Файловый и клиент-серверный вариант. Без доработки конфигураций.



Обработка позволяет отключить сеансы всех пользователей, подключенных к базе данных. При этом обеспечивается возможность быстрого входа в заблокированную базу.

Данная обработка похожа на типовую «Блокировка установки соединений с информационной базой», но имеет некоторые существенные отличия:

1. Отображение списка активных пользователей

2. Возможность создать ярлык на рабочем столе для запуска информационной базы с кодом разрешения

При выполнении команды «Установить блокировку» будут отключены все сеансы, в том числе и тот, из которого вы запустили обработку. Однако, у вас есть возможность при установке блокировки заблаговременно создать на своем Рабочем столе ярлык, при помощи которого вы можете войти в заблокированную базу. Иными словами, вам не придется мучаться, прописывая в свойствах ярлыка необходмые параметры запуска.

Есть, конечно, и некоторые минусы. Например, обработка не выкинет пользователей, у которых открыто модальное окно типа предупреждения «Документ не проведен». Вопросы типа «Объект изменен. Сохранить изменения?» игнорируются и сеанс пользователя завершается без сохранения данных.

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

Было бы, конечно, весьма полезно прикрутить сюда и отправку сообщений пользователям, но вариантов реализации данного действа средствами 1С без использования «Регистр сведений+ОбработчикОжидания» нигде найти не удалось. Так что, пока так.

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

PS. Реализована возможность выбирать сообщение пользователям из шаблонов, причем в шаблон будет подставлено время окончания блокировки. Только вот редактировать эти  шаблоны придется в Конфигураторе, в модуле формы, а именно — в процедуре «КнопкаИзШаблонаНажатие(Элемент)». Писать какой-либо другой механизм для их хранения лень.

 

Update от 14.09.2011

Благодаря пользователям cbr900 и 7OH, предоставивших свои алгоритмы создания ярлыка для клиент-серверного варианта, реализован и этот режим.

Также устранена ошибка, указанная пользователем tezin, заключавшаяся в том, что при создании ярлыка вылетала ошибка о невозможности присвоить значение переменной «РабочийСтол».

Теперь о нюансах.

В клиент-серверном варианте работы обработка работает корректно, создает правильный ярлык, НО возможна ситуация, что после запуска базы в режиме Конфигуратора с кодом разрешения не удается запустить отладку, т.к. база остается заблокированной. При этом, если отдельно запустить базу с кодом разрешения, то все нормально. С чем это связано пока не разобрался.

PS. Если в клиент-серверном варианте воспользоваться типовой обработкой, то результат — тот же: из Конфигуратора не запускается отладка.

 

Update от 05.10.2011

Реализована управляемая форма обработки, а также учтены замечания пользователей maxx и r0610201.

 

99 Comments

  1. cbr900

    Хорошая штука! Главное, что механизм работает.

    Для клиент-серверного варианта также хотелось быт увидеть))

    Reply
  2. cbr900
    Reply
  3. tezin

    Создание ярлыка вылетает с ошибкой

    {ВнешняяОбработка.ОтключениеПользователей.МодульОбъекта(79)}: Поле объекта недоступно для записи (РабочийСтол)

    РабочийСтол = WShell.SpecialFolders().Item(«Desktop»);

    Reply
  4. 7OH

    1. При открытии и после выполнения надо проверять, что блокировка есть.

    Да и на блокировку надо ровняться а не на галочку про пользователей.

    2. Вариант файл-серверного ярлыка

    КаталогБазы = СтрокаСоединенияИнформационнойБазы();
    флФайловый=Истина;
    Если Найти(КаталогБазы,»File=»)=0 Тогда
    флФайловый=Ложь;
    КонецЕсли;
    
    Если флФайловый Тогда
    КаталогБазы = СтрЗаменить(КаталогБазы,»File=»,»»);
    Иначе
    КаталогБазы = СтрЗаменить(КаталогБазы,»Srvr=»,»»);
    КаталогБазы = СтрЗаменить(КаталогБазы,»Ref=»,»/»);
    КонецЕсли;
    
    КаталогБазы = СтрЗаменить(КаталогБазы,»;»,»»);
    КаталогБазы = СтрЗаменить(КаталогБазы,Кавычка,»»);
    
    Путь = СтрЗаменить(КаталогБазы,»»,»-«);
    Путь = СтрЗаменить(КаталогБазы,»/»,»-«);
    Путь = СтрЗаменить(Путь,»:»,»»);
    Путь = СтрЗаменить(Путь,» «,»»);
    Путь = СтрЗаменить(Путь,».»,»»);
    
    ИмяЯрлыка = РабочийСтол + «» + Путь + «.lnk»;
    
    Аргументы = » CONFIG «+?(флФайловый,»/F»,»/S») + Кавычка + КаталогБазы + Кавычка + » /uc» + КодРазрешения;

    Показать

    Немного проще и перед CONFIG слэш не нужен 😉

    3. А вот идея отличная.

    Reply
  5. Damian

    Спасибо cbr900 и 7OH, ваши замечания в ближайшее время учту.

    Reply
  6. Damian

    tezin, это тот момент, о котором написал cbr900: нельзя использовать переменную с именем «РабочийСтол». Исправлю в скором времени.

    Reply
  7. Damian

    Замечания учтены, ошибки исправлены.

    Текст публикации и файл обработки обновлен.

    ОФФ: Я смотрю мне за написание комментов СтартМани начисляется. Уже вижу, как публикации пестрят тучей ничего не значащих комментариев 😀

    Посмотрим, как эти СтартМани аукнутся на качестве сайта.

    Reply
  8. anig99

    Хммм. КрестНаПузе…

    Крест на пузе.

    Пьют без меры.

    Кто такие?

    Тамплиеры!

    Reply
  9. Ledok

    В случае, когда пользователь работает в УТ11 и у него остался не сохраненный документ, обработка НЕ МОЖЕТ завершить его сеанс, так как появляется сообщение «Сохранить изменения?».

    Может, кто встречался с такой проблемой? Если да, поделитесь решением..

    Reply
  10. PVG_73

    У меня не получилось завершить сессии, правда я пробовал это на своем же компе. Открыл несколько сессий, запустил обработку, но ничего не произошло. Ярлык для базы создался на рабочем столе.

    Когда закрыл и попытался зайти, то уже не смог сие сделать, только через ярлык.

    В чем может быть проблема?

    Reply
  11. SinglCOOLer

    Хорошая идея, особенно если нет возможности вносить изменения в конфу 🙂

    Reply
  12. PVG_73

    (10) Да забыл отметить…. Качал обработку вчера около 18:00 по мск…. 🙂

    Reply
  13. den_vladimir

    Заметил, что типовая форма блокировки для БП 2.0 вообще нормально не работает! Буду пробовать с этим решением!

    Спасибо за труд!

    Reply
  14. Damian

    (9) Ledok, пробовал в разных конфигурациях для Украины (БП, УТП, УПП, ЗУП). Во всех случаях обработка выбрасывает пользователя, даже если у него открыт несохраненный документ/элемент справочника.

    Происходит при этом следующее (с интервалом в 1 минуту):

    1. Обработка честно сообщает, что работа завершается

    2. Выскакивает окно с вопросом «Данные были изменены. Сохранить изменения?»

    3. Опять обработка сообщает, что работа завершается

    4. Работа, таки, завершается.

    Сей опыт был проведен в нескольких базах путем простого наблюдения при политике невмешательства.

    Что происходит в УТ сказать не могу. Однако, справедливости ради, хочется отметить, что начал прикручивать к обработке управляемую форму и в конфигурации УНФ такая же ситуация, как и у Вас: при открытом окне с несохраненными данными сеанс не сбрасывается.

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

    Reply
  15. Ledok

    Damian, я уже давно пользуюсь самописным bat файлом, который делает тоже самое и отлично работает на большинстве баз,

    а вот именно УТ11, как вы отметили с управляемыми формами, не работает.

    Попробовала выполнить для БП 2.0 на платформе 8.2, сработало на ура.

    Так что делаю вывод, что это связано с управляемыми формами…

    Reply
  16. PVG_73

    Damian, все таки поясните что я не так могу делать….

    конфа самописная… создаю на своем компе 2 разные сессии и никаких сообщений и завершений сеансов… 🙁

    Reply
  17. PVG_73

    (16) Попробовала на типовой… действительно работает….. даже вопрос на выходе не помешал…. 🙂

    странно что тогда может не хватает в самописе…. 🙁

    Reply
  18. PVG_73

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

    и те два убитых сеанса остались мотыляться в активных зверЪях…. пока не закрыл у себя последний конфигуратор…. 🙂

    Reply
  19. PVG_73

    Спасибо, за обработку.

    Damian, если получится понять что может не хватать в самописе, черканите, если мне удастся разобраться то отпишусь здесь.

    Reply
  20. Alexey55

    Спасибо! пригодилась)

    Reply
  21. anton.fly7

    ая так делаю

    СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();

    Если Найти(ВРег(СтрокаСоединения), «FILE») <> 0 Тогда

    File = «»;

    Выполнить(
    СтрокаСоединения);

    СтрокаСоединения = «/F»»» + File + «»»»;

    Иначе

    Srvr = «»; Ref = «»;

    Выполнить(
    СтрокаСоединения);

    СтрокаСоединения = «/S»»» + Srvr + «» + Ref + «»»»;

    КонецЕсли;

    Reply
  22. valek82

    Хотелось, бы конечно, чтобы можно было выбирать , кого блокировать.

    Reply
  23. SERJ_1CC

    Полезная вещица, пригодится…

    Reply
  24. cerg110

    очень полезна, ато часто если работают через удаленный рабочий стол на серваке есть зависшие сеансы.

    Reply
  25. zhleonid8

    респ

    Reply
  26. Master07

    Прикольно )))))

    Reply
  27. SoulPower

    Спасибо, очень полезно.

    Reply
  28. powerpc

    Спасибо, пригодилось

    Reply
  29. CyberCerber

    Спасибо, вещь незаменимая.

    Reply
  30. krv2k

    (0) Это шутка или намеренная дезинформация?

    Не вводите людей в заблуждение, обработка никакие сеансы не отключает, а просто устанавливает блокировку соединений. А то, что сеансы отваливаются, так это заслуга механизма типовых конфигураций (поэтому у пользователя PVG_73 обработка «не работает»).

    Или меняйте описание, или удаляйте обработку с сайта.

    Reply
  31. PVG_73

    (30) Уважаемый, krv2k, подскажите, а что это за механизмы типовой. Просто времени разбираться не было, но понимаю, что сие должно лежать на поверхности… 🙂

    Reply
  32. Damian

    (30) Руслан, позвольте с Вами не согласиться. Блокировка сеансов устанавливается не на уровне типовых конфигураций, а на уровне платформы. Почитайте синтакс-помощник, раздел «Глобальный контекст»-«Процедуры и функции работы с информационной базой»-«УстановитьБлокировкуСеансов».

    Как Вы думаете, мы с Вами сможем написать конфигурацию, на которую эти правила распространяться не будут?

    Хотя, смотря какую таблетку выбрать 🙂 (с) Matrix

    Reply
  33. krv2k

    (32) спасибо, синтаксис-помощник я читал. Еще раз повторюсь: не путайте «Блокировку сеансов» и «Завершение работы пользователей». Перед написанием следующего комментария, обязательно посмотрите как реализовано «Завершение работы пользователей» в типовых конфигурациях.

    Reply
  34. krv2k

    (31) Этот механизм основан на обработчике ожидания, подключаемом для каждого пользователя при входе в систему (вызывается каждые 60 секунд). В обработчике проверяется, установлена ли блокировка сеансов, и если установлена, то сеанс завершается.

    Reply
  35. PVG_73

    (34) Спасибо, Руслан, нашел я этот кусок кода… 🙂

    Reply
  36. Sairys

    давно искал что то подобное. Спасибо за обработку.

    Reply
  37. onyx

    Очень нужная и полезная штуковина….

    Reply
  38. MrXaN

    Огромное спасибо за обработку

    Reply
  39. sergnik

    Спасибо, юзаем

    Reply
  40. r0610201

    Обязательно необходимо отметить, что работать это будет только в типовых конфигурациях. Чтобы это работало не только в типовых, надо завершать сеансы самому, через V82.COMConnector.

    Reply
  41. ValeriVP

    (40) не всегда получится — надо через DCOM, а это права и прочие проблемы.

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

    Reply
  42. mihas1001

    Интересно, корректно ли обрабатывается случай когда в момент отключения пользователь редактирует информацию в БД?

    Reply
  43. volodyapgu

    Большое спасибо за обработку. Помогает в крупных фирмах корректно «отключать» большую часть сотрудников, а с отдельными лицами уже проще решить вопрос.

    Reply
  44. YPermitin

    Огромное спасибо за труды))) Очень полезная утилита.

    Reply
  45. silver-fox87

    Спасибо! Очень нужна была такая обработка!

    Reply
  46. evn-zorin

    (42) mihas1001,

    В любом случае можно будет протестировать БД средствами 1С на наличие ошибок.

    Reply
  47. jour

    на терминалке очень любят оставлять все, нужная вещь!

    Reply
  48. nshrek2

    Спасибо, вещь хорошая, пригодится.

    Reply
  49. mikit

    Спасибо огромное давно искала что-то подобное

    Reply
  50. ooosnika

    мне очень пригодилась обработка,спасибо автору

    Reply
  51. bahbah

    Очень полезная штука, не раз пользовался.

    Глюков не встречал.

    Спасибо, лови плюс.

    Reply
  52. KSM

    Спасибо!

    Reply
  53. Damian

    Учтены замечания пользователей krv2k и r0610201 — описание изменено.

    А также добавлена управляемая форма.

    Reply
  54. mrdug

    что-то не пойму что с файлом? Предприятие его не видит.

    Reply
  55. SanyaGrek

    Спасибо! Главная проблема теперь решена. А то юзеров не выгонишь. Так работать хотят.

    Reply
  56. pt_olga

    хотелось бы попробовать эту обработку… но пока нет денех 🙁

    Reply
  57. pt_olga

    хотя пока вполне хватает стандартных средств… 🙂

    Reply
  58. pmtvv

    Однозначно плюс

    Reply
  59. andos77

    Спасибо!

    Reply
  60. Gar1ck

    За шаблоны отдельное спасибо!!!

    Reply
  61. air_mike

    Удобная штука для клиентского варианта. Но в «сервере» стандартная блокировка, через консоль, намного удобнее для меня.

    Reply
  62. dmd

    Поигрался немного, но пользуюсь стандартными методами.

    Reply
  63. aragor

    Спасибо очень удобно!

    Reply
  64. onyx

    Спасибо огромное давно искала что-то подобное

    Reply
  65. 1C82

    ШИКАРНО! Кашерно ! Просто супер ! А то taskill уже надоело , да и не вежливо это. В файловой базе пока альтернативы не вижу.

    Reply
  66. Ninelle

    Классная штука! особенно, когда приходишь к клиенту с большим количеством «медленных» сотрудников. недождешься, когда выйдут сами 🙂

    Reply
  67. Asaqura

    +5

    Reply
  68. orel

    +100500 Спасибо! Уже пару раз пригодилась!

    Reply
  69. sergnik

    Спасибо, помогла выбросить юзера, который пару дней висел в файловой базе, и из-за не могли сохранить базу

    и боялись перезагрузить комп ))

    Reply
  70. cs25

    Выдаёт ошибку (клиент-серверный вариант):

    Ошибка при прерывании соединений: {Форма.ФормаСписка.Форма(264)}: Ошибка при вызове метода контекста (ConnectAgent): Произошла исключительная ситуация (V81.COMConnector.1): Различаются версии клиента и сервера (8.1.15.14 — 8.2.14.519), клиентское приложение: COM-администратор

    Reply
  71. Attest

    Спасибо! Однозначно в арсенал!

    Reply
  72. AruslanM

    Заметил, что типовая форма блокировки неохотно выгоняет пользователей!

    Буду пробовать с этим решением!

    Спасибо за труд!

    Reply
  73. temp2003

    В файловом варианте работает хорошо… И список пользователей виден четко, никогда не задваивается, в отличае от типового монитора пользователей… Правда, вот этот ярлычек на рабочем столе…Каждый раз раз как-то думаешь » а вдруг потом сам войти не сможешь…» )))) это единственный недостаток )))

    Reply
  74. Damian

    (74), не бойтесь, мой друг :)!

    Если Вы запомнили код разрешения, который сами же и установили, то в базу всегда войти сможете.

    В файловом варианте, на крайний случай, можно удалить файл 1Cv8.cdn из папки с базой для снятия всех блокировок.

    Reply
  75. dim0n_la

    Я немного не понял.

    Как именно реализован процесс завершения работы пользователей в файловом варианте работы БД?

    Я так понял из описания, что обработка имеет два основных отличия от типовой.

    Но я не вижу как она может выполниться для «любой» конфигурации? Может имелось ввиду для любой типовой конфигурации? Если так, то опять же не вижу в чем ценность обработки, ведь нетиповую надо дорабатывать функционалом в модуле приложения с обработчиками ожидания и пр.

    Reply
  76. temp2003

    (76) dim0n_la,

    Обработка, скажем так, упрощает типовой функционал по выгонялке пользователей ))) Интерфейс пользователя улучшен ))) а ценность в этом и заключается — удобнее работать… А если конфигурация совсем новая у вас, вы ее сами разработали, то конечно, придется встроить предварительно часть блока из типовых конфигураций….

    Reply
  77. dem_mad

    Спасибо! Все просто и надежно…

    Reply
  78. petrovaUL

    Возьму на «вооружение» для небольших БД, стандарные 1С-кие обработки для завершения работы пользователей часто не срабатывают. Спасибо. Плюс +.

    Reply
  79. nurislam

    Здорово.Молодец.

    Reply
  80. Ledok

    Доброго времени суток!

    Не слышно ли чего нового по поводу завершения работы пользователей для баз на управляемых формах (таких как Управление торговлей 11 и Управление небольшой фирмой ред.1.3) ?

    до сих пор очень актуально,

    а то уже замучилась по утрам убирать файлы блокировок..

    Reply
  81. Damian

    (81), насчет нового не в курсе. А по поводу файлов — напишите батник, который будет удалять эти файлы за полчаса (час, два, в полночь 🙂 до начала рабочего дня.

    Reply
  82. Ted1982

    Очень полезная обработка. Спасибо. После того, как закрыли права на использование консоли серверов и стало невозможно выкинуть из базы бухов (уходят в отпуск, сами в базе, а территориально находятся через пол-страны) Ваша обработка реально выручает.

    Reply
  83. vishenka

    У меня не работает почему-то. Запускаю в файловом варианте. Предупреждение выдает, а пользователей не выкидывает (хотя если поставить типовую блокировку — выкидывает)

    В чем может быть причина?

    Reply
  84. Гость

    Огромное спасибо! Незаменимая вещь!

    Reply
  85. s3nsay

    Огромное спасибо! Незаменимая вещь!Ваша обработка реально выручает.

    Возьму на «вооружение» для небольших БД, стандарные 1С-кие обработки для завершения работы пользователей часто не срабатывают. Спасибо. Плюс +.

    Reply
  86. OscarTT

    Незаменимая вещь!

    Reply
  87. zipik

    Отлично!!

    Reply
  88. zipik

    Полезная штука!

    Reply
  89. NtS

    у меня не работает на УТ, ничего не пойму, можно пошагово расписать, как работать с обработкой?

    Reply
  90. Damian

    (91) на типовой УТ должно работать 100%. Что именно не работает?

    Reply
  91. NtS

    (92)запускаю, ставлю галку «отключить пользователей», нажимаю «установить блокировку» и ничего не происходит((

    ярлык на рабочем столе создается нормально

    Reply
  92. NtS

    (92) разобралась )) надо похоже время с запасом ставить, не за минуту до завершения

    Reply
  93. karloson

    Пользователей выкидывает и пускает обратно по времени, но не создается ярлык на рабочем столе((

    УТ 11 8.2

    Reply
  94. mabuta_serg

    Здоров разработчикам.

    У меня не работает почему-то. Запускаю в файловом варианте. Предупреждение выдает, а пользователей не выкидывает

    Может это из-за управляемой формы?

    Что я не так делаю

    Reply
  95. djserega

    У меня тоже самое (96), висит на предупреждении о завершении работы и не закрывается

    Reply
  96. redgoll

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

    Reply
  97. redgoll

    Протестил, все работает. И очень удобно, что конфигуратор не закрывается. Правда, как быть, если его открыл не я? )) Выходит, что тот, другой пользователь не будет выгнан?

    Reply
  98. DrAku1a

    +1, но сейчас можно указать в настройках подключения к ИБ на последней вкладке «Дополнительные параметры запуска» ключ /UC<код_разблокировки>, например /UC012345 — и никаких ярлыков создавать не нужно будет…

    Reply
  99. zatravka

    (7) а как иначе не за деньги получить местные разработки?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *