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