Как выбросить пользователей из 1С? #6274


#0 by Алекс
1С- 20 релиз. Как выбросить нерадивых юзеров, находящихся в удаленном здании? Желательно средствами bat-файла?
#1 by Волшебник
Например,
#2 by romix
это подстава: :BEGIN IF EXIST RUNNER.BAT GOTO RUNNER GOTO BEGIN Бесконечный цикл, который жрет 100% ресурсов процессора. :-) На самом деле надо всем послать сообщение через net send, а потом старт-стоп SQL и отрубить оставшихся юзеров (тоже есть какая-то команда).
#3 by alxkorvin
А если у тебя на SQL крутится больше 1 базы? Отрубить оставшихся юзеров в смысле убить процесс 1cv7.exe? опять таки пострадяют все.
#4 by Кирил
Автоматическое завершение программы 1С для всех пользователей!!! Вставить в глобальный модуль эти строки: Идея не моя, но работает неплохо :) Если нужно выкинуть всех с 1С, просто ставишь в константе время, через которое 1С закроется у всех принудительно.
#5 by alxkorvin
А если пользователь после этого сразу запустит новую 1с? Например у меня в 1с 100 пользователей. 20 выходят, а в этот момент 1 успевает зайти :) После чего сбрасывает константу ДоЗавершенияРаботы, в результате чего все пользователи довольные заходят обратно :)
#6 by lexa
КонецПроцедуры Т.е. сразу все закрываться будет?
#7 by Кирил
Я зохожу в монитор, когда всех выбросит, сразу же захожу монопольно. Через 20 сек. будет выдоно сообщение, что программа будет закрыта через "" минут, если пользователь набирает документ и проигнорирует предупреждение, то документ не будет сохранён, если он проводит док в это время, то пока документ полностью не проведётся, программа не закроется. Никакого аварийного завершения не будет!
#8 by lexa
В процедуре ПриНачалеРаботыСистемы Константа.ДоЗавершенияРаботы=0, т.е. система только начала работать, а ДоЗавершенияРаботы 0 секунд, следовательно сразу работа завершается?
#9 by Warlock
У меня на большом предприятии специальный справочник сообщений. Помимо большого количества ф-ий, которые я напрограмил, там было завершение работы с указанием пользователя. Т.е. можно указать конкретного юзера и закрыть ему 1С-ку... Если поле юзер оставить пустым, то закроется 1С у всех, у кого ИмяНабораПрав <> "Администратор". Кстати, можно на время остановить службу NetHasp - на серваке 1С будет запускаться...
#10 by romix
Это будет работать, но только для тех пользователей, у кого не открыты модальные окна и не нажата кнопка Заблокировать. Хотя у меня так и сделано - совсем уж нерадивых, которые специально заблокировались, - раз два и обчелся. Их надо снимать рестартом SQL и съемом пользовательских подключений. А если цель сего мероприятия - сделать бэкап, то лучше всего делать его средствами SQL или (в случае DBF) копировать, а потом архивировать файлы DBF.
#11 by Кирил
Если ты установишь константу=1 минуте, через минуту у всех закроется 1С. Затем ты вносиь свои корректировки, запускаешь всех в 1С (константа=1) и снова все повылетают через 1 минуту, поэтому или при старте системы обнулить константу или самому быстро заходить и изменять константу на 0.
#12 by Алекс
Для Warlock_WW >>У меня на большом предприятии специальный справочник сообщений. Помимо >>большого количества ф-ий, которые я напрограмил, там было завершение работы с >>указанием пользователя. Т.е. можно указать конкретного юзера и закрыть ему 1С->>ку... Если поле юзер оставить пустым, то закроется 1С у всех, у кого >>ИмяНабораПрав <> "Администратор". А поподробнее? можно на мыло for_mula@mail.ru
#13 by bnik
А я сделал через внешний файл, причём обработка проверяет если у пользователя права администратора то она не выбрасывает. Если же другие права, то при повторном запуске 1С пользователя всё равно выбрасывает. Код по большей части похож как было предложено выше. Пользуюсь,- очень даже помогает, особенно когда кто-нибудь чай идёт пить.
#14 by Виталий
А как, чтобы "stop.bat user1 user2 ...userNN" и в базе кроме тебя никого !!! Было бы здорово!!!
#15 by Виталий
А как, чтобы "stop.bat user1 user2 ...userNN" и в базе кроме тебя никого !!! Было бы здорово!!!
#16 by Asmody
/
#17 by alxkorvin
А если на этом SQL сервере еще например с 10 баз лежит, что тогда? :)
#18 by Warlock
В Computer Management(Управление компьютером) System Tools/Shared Folders/Sessions найти подключения к нужной базе и отрубить их! Это один из вариантов...
#19 by Warlock
Структура справочника: Код Наименование ПолноеНаименование ПараметрСтрока ПараметрЧисло Пользователь Пример сообщения: Наименование = «Вопрос» ПолноеНаименование = «Сохраните свою текущую работу и закройте, пожалуйста, программу. ОК ?» В данном случае ПараметрЧисло – Таймаут (чтобы не потерять управление). Выполняется команда «Вопрос(ПолноеНаименование,ПараметрСтрока,ПараметрЧисло)». Причем снимается флаг Активно и создается элемент справочника с наименованием «Ответ» и ПолнымНаименованием с именем пользователя и ответом (Да, Нет или Таймаут). Также предусмотрены: ЗавершитьРаботуСистемы(ПараметрЧисло) Сигнал Сообщение Запрос – можно через ВвестиЗначение спросить у Юзера о количестве времени, которое ему еще надо до того, как он закроет 1С Если в сообщении не указан Юзер – все идет Броадкастом, но только не админам :) Алекс, идея, я думаю, понятна... ЗЫ Делал наспех(почти), так что сильно не критикуйте :) Хотя критику я все же хотел бы услышать(прочитать)...
#20 by alxkorvin
Как правильно отрубить пользователей 1с от sql я знаю. Это был риторический вопрос советчикам останавливать sql server :)
#21 by Warlock
Ну и чудненько...
#22 by Asmody
скажу на это только два слова: "модальные окна" >;))
#23 by Warlock
Да знаю, знаю... Но как показывает практика, при использовании данной процеду по несколко раз в день, такой бок возникал у меня 1 раз в месяц/два месяца... Винды чаще глючат, что хуже, но - и no problem...
#24 by Z1
+ к И еще бывают зависшие  1с.exe Супердолгая обработка пользователя. Еще есть 1с ждущая пароля пользователя. Иногда ( редко) бывают и зависшие конекты 1с-sql Ответьте на вопрос как часто Вам надо отрубать всех пользователей и зачем ? Все эти обработки ожидания занимают ресурсы и не всегда эфективны. Гораздо проще : 1. Расшарить папку. 2. Убить sql процессы в конкрет. базе. 3. Сделать то что нужно 4. Зашарить папку.
#25 by Warlock
Постоянно в ваших постах читаю "Убить sql процессы в конкрет. базе", "старт-стоп SQL" и т.п. - с точки зрения программиста удобно: минута - и база в вашем распоряжении... А юзеры? Кто-то решил немного поработать в обеденное время, вбил документ строк на 50 и - Ах, ..., ... ...! А если решил директор покопаться? Мысли приблизительно такие "Я вывалил гору денег на эту сетевую SQL 1С, а тут такое... Вот сволочи!" Или это с вашей стороны голая теория?!
#26 by Z1
Тогда надо сначала ответить на вопрос "зачем мы выбрасываем пользователей из 1с ?" и все станет на свои места. Да перед 25 дается обычное net send * о том что через 5 минут отключение 1с. Обычно это или какая-то нештатная ситуация при которой user не могут работать или например смена конфигурации в 21 когда user-ов уже нет и уговаривать то уже некого а в программе очень много пользователей. Самое эффективное ИНМО как раз 24
#27 by SAP
А как убить sql процессы в конкретной базе? Нельзя ли по-подробней?
#28 by Z1
либо написать скрипт на т-sql я делаю через kill
#29 by Warlock
"Самое эффективное ИНМО как раз 24" - нет сомнений. Но в моем случае так делать было нельзя, а звонить каждый раз им по телефону и спрашивать ну _очень_ напряжно...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С