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



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

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

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 не будет опубликован. Обязательные поля помечены *