Удобная "выгонялка" пользователей из 1С без доработок кода




Удобная выгонялка пользователей из 1С без доработки конфигурации.

!Внимание! Тестировал только на 25-ом релизе!
Патчим 1С (seven.dll) и у нас готовая выгонялка пользователей. Управляется одним движением мыши по значку 1С в трее (появляется когда открываем конфигуратор), после чего у пользователей идет оповещение в трее и в заголовке окна о том что 1С будет закрыто через 5 минут. Идет отсчет времени. Для тех кто попытался зайти будет выведено предупреждение и пользователь не будет допущен в базу пока не будет отменена блокировка базы.
Исходники прилагаются.
Основано на разработках romix, за что ему огромное человеческое спасибо!

* 11.03.08 Добавил возможность настраивать выполнение произвольных команд до блокировки и после (например net send * «Можно заходить в базу», test.cmd и т.д.) Если указать путь к файлу как . est.cmd то запуск будет из каталога ИБ.
Добавил возможность отключения иконки в трее. может потребовать если надо запускать конфигуратор в пакетном режиме. Надо просто создать файл notray в каталоге ИБ.
* 22.06.07 Добавил возможность настраивать выводимое сообщение и время ожидания в сек.
После закрытия баз dbf версии не требуется заново индексировать базу.
* 01.11.07 Исправлена ошибка при закрытии монитора и 1С в режиме заблокированной базы.

62 Comments

  1. andrewalexk

    🙂

    значит говоришь юзерам «поробуйте»…?.

    хехе

    Reply
  2. 😉 .. синтаксис русского языка сложней дается чем Delphi

    Reply
  3. -Alfa-

    Комплексная конфигурация 1С 7.7, база в формате DBF, выполнил все инструкции, файл seven.dll успешно пропатчен, при запуске конфигуратора появляется значек в трее. Но ни один пользователь не получает сообщений, база не блокируется. Подскажите, если были похожие случаи, что я мог неправильно сделать

    Reply
  4. quick

    Не возникало такой проблеммы по крайней мере на 24 и 25 релизе. Возможно вы забыли пропапчить 1С у пользователей ;).

    Reply
  5. quick

    На сайте обновление.

    * исправлено «поробуйте» -> «попробуйте»

    :))

    Reply
  6. -Alfa-

    Пропатчил у пользователей, ни один не видит сообщений, на одной из машин под управлением Windows 2000, даже не отображается значек в трее, (если запустить на ней 1С в режиме конфигуратора)

    Reply
  7. akm-76

    А в терминале будет работать?

    Reply
  8. VV

    Ради интереса проделал все предложенное.

    1. В базу, пока не закомментировал в ини строку, зайти больше не смог — не пускала, хотя несколько раз нажимал Разблокировать.

    2. Срубает некорректно — потом переиндексировать надо.

    3. В терминале будет работать?

    Reply
  9. quick

    интересно а у остальных 270 работает? 🙂

    Reply
  10. quick

    Нашел ошибку при блокировке базы. Можно скачивать пробовать, так же выложил исходники.

    Reply
  11. idw

    А можно сделать так, чтобы самому в настройках можно было выставлять время, через которое база 1С будет закрыта?

    Reply
  12. egles

    вещь полезная +1

    Reply
  13. support

    Почему здесь нет скриншотов?

    Reply
  14. egles

    Хорошо бы если этот проект имел продолжение, идея заключается в том что в терминальном режиме пользователи порой просто нажимают на крестик в правом верхнем углу экрана какбы закрыв терминал и довольные хотелось бы чтобы обработка проверяла активность пользователей, т.е. допустим если изменений в док, или в справочниках и т.д. нет более 30 минут дата завершить работу пользователей и хорошобы показывала список текущих пользователей — вот такие пожелания к этому проекту!

    P/S не смог посмотреть скриншоты и не понял как работает открыть и закрыть базу. Единственное када в конфигураторе решил применить изменения тада вылезает сообщение у пользователей о вынужденном закрытии!

    Reply
  15. anagkh

    шас посмотрим

    Reply
  16. Abadonna

    За unit PatchMemory — бАААлшое спасибо.

    Windows.TerminateProcess(Windows.GetCurrentProcess,1); — наверное, все-таки некорректно: 1С будет завершена аварийно.

    +1

    Reply
  17. Abadonna

    Благодаря одной твоей «ошибочке» при выкладывании исходников

    пришлось качнуть JEDI VCL, коими остался очень доволен 🙂

    Так что еще +10 в уме 😉

    Reply
  18. quick

    http://www.delphi-jedi.org/ — компоненты необходимые для проекта (только для разработчиков).

    Reply
  19. artbear

    +1

    А нельзя ли добавить возможность программного управления блокировкой/разблокировкой?

    Reply
  20. quick

    (19) Легко. Блокировка это создание файла в папке с базой block.lck, разблокировка соответсвенно это его удаление. Можно создавать файл средствами 1С. Создается ещё файл в каталоге ИБ locker.ini для спецификации сообщения и таймаута (он не обязателен). Можно ещё выгонять из конфигуратора 🙂 config.lck, сделано для любителей оставить конфигуратор на ночь.

    Reply
  21. Voldemar

    Нечто подобное делал собственными средствами 1С. Есть вполне достойная команда «ЗавршениеРаботыСистемы», которая корректно завершает работу пользователя. Необходимость выхода конкретного пользователя/группы пользователей/всех пользователей записывается в отдельный файл. От каждого пользователя контролируется наличие этого файла, для чего в глобальном модуле пишем «ОбработкаОжидания(«ПроверкаОстановки»,30);» и с интервалом 30 секунд запускается процедура «ПроверкаОстановки()», которая и проверяет наличие этого файла. Ну а дальше — дело техники. Образец моего использования могу выложить для желающих. P.S. эту же обработку использую и для рассылки сообщений. Предусмотрел и такую возможность.

    Reply
  22. quick

    Изначально я тоже это делал штатными средствами 1С :).

    Reply
  23. mdzen

    Идея хорошая. Попробовал — однако работает,

    но «Патчим 1С (seven.dll) « всетаки не есть гуд (лицензию нарушаем).

    Без патчей както бы обойтись.

    Ну а в общем +1

    Reply
  24. mihenius

    (21) А как ты выгонишь тех кто поставил блокировку? А если 1с потеряла фокус? А если формируется долгий отчет?

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

    Reply
  25. Abadonna

    (24) Надо просто стараться сначала выгнать корректно, а уж если не получается — терминатором

    Reply
  26. quick

    Блокировка, фокус, долгий отчет это все ерунда.. килим с процессов!! 🙂 хотя выгнать корректно конечно бы не мешало, если кто кусок кода пришлет как это сделать, то добавлю.

    Reply
  27. mihenius

    (24) Есть еще ОбработкаОжидания Альфа, она работает 😉

    Reply
  28. highlander

    У меня огромная просьба по данному вопросу. У кого работает эта утилитка сбросьте пожалуйста пропатченную dll-ку и все что необходимо. А то я уже второй день маюсь. Все к чему я пришел — это значок в трее, при нажатии на который выскакивает указанное меню. Но в меню когда я выбираю комманду разблокировать — абсолютно ничего не происходит. И пользователи продолжают свою работу. 1С 7.70.020 Win2003 Serv. Может проблема в релизе? Может обновить до 24 или 25?

    Reply
  29. quick

    У всех пользователей надо так же пропатчить 1С.

    Reply
  30. kordell

    Большое спасибо. Давно искал нечто достойное. Работает на 27-ом SQL замечательно.

    Reply
  31. pectopatop

    +1

    особенно учитывая вопрос artbear и ответ на него.

    т.е. и без конфигуратора можно выгонять — а потом например копировать папку базы…

    но и глюки тоже есть — программа по ходу своих ругательств «До закрытия осталось .. !» меня

    Reply
  32. pectopatop

    + и второй еще глюк я заметил — если из конфигуратора запускать блокировку (например через 5 мин), а за это время выйти из Конфигуратора, то:

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

    2. но при выходе из таких «нелеальных»

    Reply
  33. pectopatop

    «нелегальных» *

    Reply
  34. quick

    (31) Заголовки сделаны специально для терминальных пользователей у которых нет трея.

    Reply
  35. zarius

    отличная вещь! спасибо! + 1 (+100 в уме)

    кто нибуть пробывал это дело на большом количестве пользователей? есть какие нибуть «баги» (или «фичи») использования на настоящий момент?

    Reply
  36. Sergey03

    Работает только с правами администратора, а если у пользователя права в системе «Пользователи» то 1с не запускается.

    Reply
  37. IsiKosta

    Зачем две версии выложено? Какая из них «более рабочая»? У меня версия 2.2 и не работает. Почему бы автору не протестировать на 27 релизе платформы?

    Обнаружены косяки: у меня платформа 27, Win XP, пользователи могут заходить в базу после блокирования. После разблокирования остаются заголовки «Осталось …» — это некорректно.

    Во всех окнах такие же сообщения. Есть пожелание: поставил блокировку — появляется галка. А то непонятно в каком состоянии база.

    Reply
  38. serg_13

    В самописной базе в терминале не прокатывает, помогите разобраться

    Reply
  39. quick

    >>В самописной базе в терминале не прокатывает, помогите разобраться

    Не зависит от того самописанная база или нет. Релиз должен быть 25, на нем тестировал.

    И 1С должна быть пропатчена обязательно у ВСЕХ пользователей, иначе они смогут заходить 🙂

    Reply
  40. ОбнажЁнная_Маха

    Ох, спасибо! Очень удобная штучка! 🙂

    (39) Как вариант — можно 1С пропатчить только у себя и тут же зайти в нее монопольно! Своим телом, так сказать, прикрыть… Тогда уж точно никто не пройдет! 😀

    Reply
  41. mikukrnet

    Не работает под 27 в терминале обычном

    Reply
  42. GreenFox

    Большое спасибо на 27-м релизе работает просто супер

    Reply
  43. mike_matros

    на 27 релизе работает? ваще никакой иконки даж не появляицо!!!!!!

    Reply
  44. Kazimar

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

    Reply
  45. Kavar

    на 27 релизе не заработало.

    Никакой реакции на «Заблокировать базу»

    Reply
  46. andersss

    И у меня не работает

    Reply
  47. quick
    andersss пишет:

    И у меня не работает

    Реакция не будет моментальная. Проверка на файл блокировки происходит один раз в минуту. Т.е. поставил блокировку и жди минимум минуту. Важно! У конечных пользователей 1С тоже должна быть пропатчена.

    Reply
  48. andersss

    Что то уменя не получилось с этой выгонялкой

    Reply
  49. tmm

    Вообще-то неудобно. Отказался.

    Reply
  50. AlekseiLeit

    спасибо. пригодилось

    Reply
  51. tmm

    Не. Неудобно.

    Reply
  52. keyloger

    А если сидят пользователи через терминал в линухе , это сообщение будет им отобраджаться и будет их выкидывать?

    Reply
  53. keyloger

    И еще вопрос по теме , если ты к примеру пропатчил в папке бин все как в инструкции, будет ли работать утилита, если просто папку bin скопировать на другие машины 🙂

    Reply
  54. SnegAvik

    Где то выше писали про ОбработкуОжидания, это на самом деле проще и работает более корректно нежели через патченые *.dll потому что в 1с есть все что нужно

    Reply
  55. shurix

    Пару вопросов:

    — Работает ли ваша «выгонялка» с Секретным Релизом 1С? Например, вот эта ( http://es-work.narod.ru/projects.htm#KillUsers ), весьма похожая на вашу по скриншотам, не работает.

    — Работает ли она с RemoteApps? Т.е. интересует, куда будет выводится предупредительное сообщение, если трэя как такового просто не будет

    Reply
  56. shurix

    Сам спросил — сам ответил :-). Представляю небольшой отчёт по ляпам и ошибкам:

    1) с RemoteApps можно использовать лишь самую старую версию «выгонялки», которая вместо сообщения из трэя показывает предупредительное окошко на полэкрана. Эта версия еще тут сохранилась — http://kb.mista.ru/article.php?id=446

    2) Принцип блокировки базы действует так: при входе в режиме Конфигуратор в каталоге базы создается файл 1Cv7.LCK. Если выбирается «Заблокировать базу», то там же создается еще один файл block.lck

    В 2.х туда записывается имя win-пользователя, который включил блокировку базы. Именно поэтому в 2.х под одним и тем же блокировка базы не работает (впрочем, можно отредактировать этот файлик, благо сам он не залочен, и убедиться, что блокировка работает :-). В версии 1.х файл block.lck пустой, поэтому блокирование базы работает и под этим же пользователем.

    3) Вкупе с Секретным Релизом всплывает глюк, который не позволяет использовать эту «выгонялку» — при запуске Конфигуратора файл 1Cv7.LCK создается, однако иконка в трэе не появляется. По крайней мере, в Win2008 SP1 (x86) и Win2008 R2. Если ручками создать файл block.lck, то блокировка базы работает.

    Вот, собственно, и всё. Остается сделать «видимость» иконки в трэе в Секретном Релизе, а заодно сделать опцию выбора вида уведомления — обычным окошком или пузырём из трея.

    Reply
  57. shurix

    «Костыль» для использования вместе с Секретным Релизом (может кому понадобится):

    создаёте два батника и запуском их осуществляете блокировки/разблокировки базы.

    rem Заблокировать базу

    echo . > Путь_к_1с_базе1Cv7.LCK

    echo %Username% > Путь_к_1с_базеlock.lck
    rem Разлокировать базу.cmd

    if exist Путь_к_1с_базеlock.lck del /Q Путь_к_1с_базеlock.lck

    if exist Путь_к_1с_базе1Cv7.LCK del /Q Путь_к_1с_базе1Cv7.LCK
    Reply
  58. Alexander78

    Спасибо. Оченб пригодилось.

    Reply
  59. klif

    Вопрос.

    Killuser 1.0.0.16 , релиз 27. win2008 R2. В трее есть, файл block.lck появляется, пользователей не выкидывает. Раньше на win 2003 проблем не было!

    Reply
  60. LanaSN

    Спасибо, очень удобная обработочка!

    Reply
  61. flash82

    Когда то давно искал что то подобное…. потом реализовал стандартными средствами…

    Reply
  62. ManyakRus

    чё-то как-то глючит

    сначала выгонялка работало иногда,

    а теперь вообще не работает Win2008 R2 Terminal

    в том числе все версии программы

    Reply

Leave a Comment

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