!Внимание! Тестировал только на 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С в режиме заблокированной базы.
🙂
значит говоришь юзерам «поробуйте»…?.
хехе
😉 .. синтаксис русского языка сложней дается чем Delphi
Комплексная конфигурация 1С 7.7, база в формате DBF, выполнил все инструкции, файл seven.dll успешно пропатчен, при запуске конфигуратора появляется значек в трее. Но ни один пользователь не получает сообщений, база не блокируется. Подскажите, если были похожие случаи, что я мог неправильно сделать
Не возникало такой проблеммы по крайней мере на 24 и 25 релизе. Возможно вы забыли пропапчить 1С у пользователей ;).
На сайте обновление.
* исправлено «поробуйте» -> «попробуйте»
:))
Пропатчил у пользователей, ни один не видит сообщений, на одной из машин под управлением Windows 2000, даже не отображается значек в трее, (если запустить на ней 1С в режиме конфигуратора)
А в терминале будет работать?
Ради интереса проделал все предложенное.
1. В базу, пока не закомментировал в ини строку, зайти больше не смог — не пускала, хотя несколько раз нажимал Разблокировать.
2. Срубает некорректно — потом переиндексировать надо.
3. В терминале будет работать?
интересно а у остальных 270 работает? 🙂
Нашел ошибку при блокировке базы. Можно скачивать пробовать, так же выложил исходники.
А можно сделать так, чтобы самому в настройках можно было выставлять время, через которое база 1С будет закрыта?
вещь полезная +1
Почему здесь нет скриншотов?
Хорошо бы если этот проект имел продолжение, идея заключается в том что в терминальном режиме пользователи порой просто нажимают на крестик в правом верхнем углу экрана какбы закрыв терминал и довольные хотелось бы чтобы обработка проверяла активность пользователей, т.е. допустим если изменений в док, или в справочниках и т.д. нет более 30 минут дата завершить работу пользователей и хорошобы показывала список текущих пользователей — вот такие пожелания к этому проекту!
P/S не смог посмотреть скриншоты и не понял как работает открыть и закрыть базу. Единственное када в конфигураторе решил применить изменения тада вылезает сообщение у пользователей о вынужденном закрытии!
шас посмотрим
За unit PatchMemory — бАААлшое спасибо.
Windows.TerminateProcess(Windows.GetCurrentProcess,1); — наверное, все-таки некорректно: 1С будет завершена аварийно.
+1
Благодаря одной твоей «ошибочке» при выкладывании исходников
пришлось качнуть JEDI VCL, коими остался очень доволен 🙂
Так что еще +10 в уме 😉
+1
А нельзя ли добавить возможность программного управления блокировкой/разблокировкой?
(19) Легко. Блокировка это создание файла в папке с базой block.lck, разблокировка соответсвенно это его удаление. Можно создавать файл средствами 1С. Создается ещё файл в каталоге ИБ locker.ini для спецификации сообщения и таймаута (он не обязателен). Можно ещё выгонять из конфигуратора 🙂 config.lck, сделано для любителей оставить конфигуратор на ночь.
Нечто подобное делал собственными средствами 1С. Есть вполне достойная команда «ЗавршениеРаботыСистемы», которая корректно завершает работу пользователя. Необходимость выхода конкретного пользователя/группы пользователей/всех пользователей записывается в отдельный файл. От каждого пользователя контролируется наличие этого файла, для чего в глобальном модуле пишем «ОбработкаОжидания(«ПроверкаОстановки»,30);» и с интервалом 30 секунд запускается процедура «ПроверкаОстановки()», которая и проверяет наличие этого файла. Ну а дальше — дело техники. Образец моего использования могу выложить для желающих. P.S. эту же обработку использую и для рассылки сообщений. Предусмотрел и такую возможность.
Изначально я тоже это делал штатными средствами 1С :).
Идея хорошая. Попробовал — однако работает,
но «Патчим 1С (seven.dll) « всетаки не есть гуд (лицензию нарушаем).
Без патчей както бы обойтись.
Ну а в общем +1
(21) А как ты выгонишь тех кто поставил блокировку? А если 1с потеряла фокус? А если формируется долгий отчет?
Обычным Звершением не обойтись … Плюс еще штатной Обработкой ожидания тоже.
(24) Надо просто стараться сначала выгнать корректно, а уж если не получается — терминатором
Блокировка, фокус, долгий отчет это все ерунда.. килим с процессов!! 🙂 хотя выгнать корректно конечно бы не мешало, если кто кусок кода пришлет как это сделать, то добавлю.
(24) Есть еще ОбработкаОжидания Альфа, она работает 😉
У меня огромная просьба по данному вопросу. У кого работает эта утилитка сбросьте пожалуйста пропатченную dll-ку и все что необходимо. А то я уже второй день маюсь. Все к чему я пришел — это значок в трее, при нажатии на который выскакивает указанное меню. Но в меню когда я выбираю комманду разблокировать — абсолютно ничего не происходит. И пользователи продолжают свою работу. 1С 7.70.020 Win2003 Serv. Может проблема в релизе? Может обновить до 24 или 25?
У всех пользователей надо так же пропатчить 1С.
Большое спасибо. Давно искал нечто достойное. Работает на 27-ом SQL замечательно.
+1
особенно учитывая вопрос artbear и ответ на него.
т.е. и без конфигуратора можно выгонять — а потом например копировать папку базы…
но и глюки тоже есть — программа по ходу своих ругательств «До закрытия осталось .. !» меня
+ и второй еще глюк я заметил — если из конфигуратора запускать блокировку (например через 5 мин), а за это время выйти из Конфигуратора, то:
1. база не блокируется, т.е. заходить в нее можно будет
2. но при выходе из таких «нелеальных»
«нелегальных» *
(31) Заголовки сделаны специально для терминальных пользователей у которых нет трея.
отличная вещь! спасибо! + 1 (+100 в уме)
кто нибуть пробывал это дело на большом количестве пользователей? есть какие нибуть «баги» (или «фичи») использования на настоящий момент?
Работает только с правами администратора, а если у пользователя права в системе «Пользователи» то 1с не запускается.
Зачем две версии выложено? Какая из них «более рабочая»? У меня версия 2.2 и не работает. Почему бы автору не протестировать на 27 релизе платформы?
Обнаружены косяки: у меня платформа 27, Win XP, пользователи могут заходить в базу после блокирования. После разблокирования остаются заголовки «Осталось …» — это некорректно.
Во всех окнах такие же сообщения. Есть пожелание: поставил блокировку — появляется галка. А то непонятно в каком состоянии база.
В самописной базе в терминале не прокатывает, помогите разобраться
>>В самописной базе в терминале не прокатывает, помогите разобраться
Не зависит от того самописанная база или нет. Релиз должен быть 25, на нем тестировал.
И 1С должна быть пропатчена обязательно у ВСЕХ пользователей, иначе они смогут заходить 🙂
Ох, спасибо! Очень удобная штучка! 🙂
(39) Как вариант — можно 1С пропатчить только у себя и тут же зайти в нее монопольно! Своим телом, так сказать, прикрыть… Тогда уж точно никто не пройдет! 😀
Не работает под 27 в терминале обычном
Большое спасибо на 27-м релизе работает просто супер
на 27 релизе работает? ваще никакой иконки даж не появляицо!!!!!!
Все работает супер, кроме одного «НО». Почему-то когда база заблокирована, я сам вхожу, тестю и т.д., а потом при выходе из 1С вылетает ошибка и закрывается из ошибкой (одним словом «Вылетает» при закрытии)
на 27 релизе не заработало.
Никакой реакции на «Заблокировать базу»
И у меня не работает
И у меня не работает
Реакция не будет моментальная. Проверка на файл блокировки происходит один раз в минуту. Т.е. поставил блокировку и жди минимум минуту. Важно! У конечных пользователей 1С тоже должна быть пропатчена.
Что то уменя не получилось с этой выгонялкой
Вообще-то неудобно. Отказался.
спасибо. пригодилось
Не. Неудобно.
А если сидят пользователи через терминал в линухе , это сообщение будет им отобраджаться и будет их выкидывать?
И еще вопрос по теме , если ты к примеру пропатчил в папке бин все как в инструкции, будет ли работать утилита, если просто папку bin скопировать на другие машины 🙂
Где то выше писали про ОбработкуОжидания, это на самом деле проще и работает более корректно нежели через патченые *.dll потому что в 1с есть все что нужно
Пару вопросов:
http://es-work.narod.ru/projects.htm#KillUsers ), весьма похожая на вашу по скриншотам, не работает.
— Работает ли ваша «выгонялка» с Секретным Релизом 1С? Например, вот эта (
— Работает ли она с RemoteApps? Т.е. интересует, куда будет выводится предупредительное сообщение, если трэя как такового просто не будет
Сам спросил — сам ответил :-). Представляю небольшой отчёт по ляпам и ошибкам:
http://kb.mista.ru/article.php?id=446
1) с RemoteApps можно использовать лишь самую старую версию «выгонялки», которая вместо сообщения из трэя показывает предупредительное окошко на полэкрана. Эта версия еще тут сохранилась —
2) Принцип блокировки базы действует так: при входе в режиме Конфигуратор в каталоге базы создается файл 1Cv7.LCK. Если выбирается «Заблокировать базу», то там же создается еще один файл block.lck
В 2.х туда записывается имя win-пользователя, который включил блокировку базы. Именно поэтому в 2.х под одним и тем же блокировка базы не работает (впрочем, можно отредактировать этот файлик, благо сам он не залочен, и убедиться, что блокировка работает :-). В версии 1.х файл block.lck пустой, поэтому блокирование базы работает и под этим же пользователем.
3) Вкупе с Секретным Релизом всплывает глюк, который не позволяет использовать эту «выгонялку» — при запуске Конфигуратора файл 1Cv7.LCK создается, однако иконка в трэе не появляется. По крайней мере, в Win2008 SP1 (x86) и Win2008 R2. Если ручками создать файл block.lck, то блокировка базы работает.
Вот, собственно, и всё. Остается сделать «видимость» иконки в трэе в Секретном Релизе, а заодно сделать опцию выбора вида уведомления — обычным окошком или пузырём из трея.
«Костыль» для использования вместе с Секретным Релизом (может кому понадобится):
создаёте два батника и запуском их осуществляете блокировки/разблокировки базы.
echo . > Путь_к_1с_базе1Cv7.LCK
echo %Username% > Путь_к_1с_базеlock.lck
if exist Путь_к_1с_базеlock.lck del /Q Путь_к_1с_базеlock.lck
if exist Путь_к_1с_базе1Cv7.LCK del /Q Путь_к_1с_базе1Cv7.LCK
Спасибо. Оченб пригодилось.
Вопрос.
Killuser 1.0.0.16 , релиз 27. win2008 R2. В трее есть, файл block.lck появляется, пользователей не выкидывает. Раньше на win 2003 проблем не было!
Спасибо, очень удобная обработочка!
Когда то давно искал что то подобное…. потом реализовал стандартными средствами…
чё-то как-то глючит
сначала выгонялка работало иногда,
а теперь вообще не работает Win2008 R2 Terminal
в том числе все версии программы