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