|
v7: Выгнать пользователей из 1С77 | ☑ | ||
---|---|---|---|---|
0
Борис_16
05.09.13
✎
11:46
|
Пробовал выгшнать путем записис в глобальный модуль: "Процедура ВыбросПользователя()
Польз = СоздатьОбъект("Справочник.Пользователи"); Если Польз.НайтиПоКоду(СОКРЛП(ИмяПользователя()),0) = 1 Тогда Если Польз.Выброс=1 Тогда Польз.Выброс=0; Польз.Записать(); ЗавершитьРаботуСистемы(0); КонецЕсли; Иначе ЗавершитьРаботуСистемы(0); КонецЕсли; КонецПроцедуры // ВыбросПользователя ОбработкаОжидания("ВыбросПользователя",5);" Пишет постоянно ошибки "Ошибка глобального модуля", а мне над чтобы работало... в чем проблема не могу понять... |
|||
1
povar
05.09.13
✎
11:48
|
напиши служебку
|
|||
2
Crush
05.09.13
✎
12:06
|
Ну тут несколько путей:
- ЗавершениеРаботы должно запускаться на компе у пользователя. Используй обработчик ожидания. - Выдернуть сервер из сети - Поднести источник огня к противопожарному датчику |
|||
3
PLUT
05.09.13
✎
12:09
|
(0) на компе, где база 7.7 выполни команду
net use * /delete /yes |
|||
4
Rie
модератор
05.09.13
✎
12:10
|
Нажатие на букву "Я" в правом верхнем углу этого экрана - зачастую помогает. Особенно когда тема - баян рваный.
|
|||
5
be-may
05.09.13
✎
12:12
|
(0) фигня какая-то.
Обычно "выгонялку" вешают на Константу, а обработку ожидания подключают ПриНачалеРаботыСистемы. И еще надо позаботится чтобы они все не смогли зайти.. Опыт показывает, что те, кого выкинули имеют свойство тут-же ломиться обратно :) Правильно коллега в (4) говорит. Поиск наше все. |
|||
6
varelchik
05.09.13
✎
13:26
|
У мене проще.
Создаем в базе доп таблицу с полями: скажем ИмяПользователя,Блокировка ПриНачалеРаботыСистемы Добавляем если нет запись о входе пользователя Вешаем ОбработкуОжидания() сканированием это таблички. При надобности выгнать всех или когось записываем в Блокировать 1. и все. |
|||
7
varelchik
05.09.13
✎
13:26
|
(5) не слишком универсально.
|
|||
8
Борис_16
11.09.13
✎
09:13
|
Короче если все писать в глобальный модуль, то ничего не сработает.
А be-may,в "Константах" выгонялку я просто прописываю - создаю, а вот с "Обработкой ожидания" проблем: если ставлю в начало ПриНачале Работы Системы, то ошибки: "Определения процедур и функций должны размещаться перед операторами основной программы", куда лучше, т.е. после чего лучше записать "Обработку Ожидания"? |
|||
9
Борис_16
11.09.13
✎
09:17
|
процедура выгнатьвсех();
спрПольз=СоздатьОбъект("справочник.Пользователи"); Если спрПольз.НайтиЭлемент(глПользователь)=1 тогда глПользователь=СпрПольз.ТекущийЭлемент(); Если глПользователь.РазрешитьРаботу=0 тогда глПользователь.РазрешитьРаботу=1; спрПольз.Записать(); Сообщить("Административное отключение системы"); ЗавершитьРаботусистемы(); конецесли; конецесли; конецпроцедуры спрПольз=СоздатьОбъект("справочник.Пользователи"); Если спрПольз.НайтиПоНаименованию(Строка(Имяпользователя()))=1 тогда глПользователь=СпрПольз.ТекущийЭлемент(); конецесли; ОбработкаОжидания ("Выгнатьвсех",45); Строка ОбработкаОжидания ("Вырубить",45); Причем в Константы внес "Выгнатьвсех" |
|||
10
Борис_16
11.09.13
✎
09:18
|
Не работает!!!!
|
|||
11
пипец
11.09.13
✎
09:25
|
ЗавершитьРаботусистемы() работает только если пользователь "свободен" от например временной блокировки или выполнения отчета
|
|||
12
пипец
11.09.13
✎
09:26
|
+ и вообще, фигня какая то (с) ... некто
|
|||
13
oslokot
11.09.13
✎
09:33
|
(9) Обработку ожидания размести в конце глобального модуля
|
|||
14
Борис_16
11.09.13
✎
09:33
|
Блин, почему тогда у одних получается и все работает при выложенном таком модуле?
|
|||
15
Борис_16
11.09.13
✎
09:34
|
Вообще уже не понимаю как заставить это работать!
|
|||
16
cw014
11.09.13
✎
09:38
|
Пишет постоянно ошибки "Ошибка глобального модуля"
Ты бы хоть ошибки бы постоянные озвучил бы тут... А то все уже телепатировать начинают |
|||
17
Борис_16
11.09.13
✎
09:41
|
ошибки: "Определения процедур и функций должны размещаться перед операторами основной программы"
|
|||
18
oslokot
11.09.13
✎
09:43
|
(17) -> (13)
|
|||
19
Борис_16
11.09.13
✎
09:44
|
Пошел по ссылкам и наткнулся на примеры выгона пользователей и эти примеры записал в Глобальный модуль, а при контроле ошибки: Определения процедур и функций должны размещаться перед операторами основной программы"
В конец Глобального модуля уже это разместить... |
|||
20
dk
11.09.13
✎
09:44
|
(17) вроде вполне четко пишет - перенеси текст обработки ожидания выше
|
|||
21
Борис_16
11.09.13
✎
09:45
|
Перенес! Ошибка: "<<?>>Функция глОборудованиеКоманда(Вид, Обработка, Параметры) Экспорт
{Глобальный модуль(241)}: Определения процедур и функций должны размещаться перед операторами основной программы" |
|||
22
dk
11.09.13
✎
09:46
|
кинь скрин куда перенес )))
|
|||
23
KUBIK
11.09.13
✎
09:47
|
(21) :))))))
Найди последнюю строку КонецПроцедуры ГМ и вставляй после нее |
|||
24
KUBIK
11.09.13
✎
09:49
|
{Глобальный модуль(241)}: чтото в начале ГМ плохо у тя, судя по номеру строки
|
|||
25
Борис_16
11.09.13
✎
09:51
|
Самый конец ГМ заканчивается "глПечатьДокумента(ДокДляПечати, Способ)" после нее это не совсем корректно писать
ОбработкаОжидания ("Выгнатьвсех",45); Строка ОбработкаОжидания ("Выгнатьвсех",45); |
|||
26
KUBIK
11.09.13
✎
09:52
|
Тады см (22)
|
|||
27
cw014
11.09.13
✎
09:54
|
(25) Ты как определил, что не совсем корректно?
|
|||
28
Zakarum
11.09.13
✎
09:58
|
моя имха:
в районе строки 241 ненужная точка с запятой, скорее всего в конце предыдущей строки |
|||
29
oslokot
11.09.13
✎
10:00
|
ужасть
|
|||
30
oslokot
11.09.13
✎
10:08
|
В конец глобальника это:
Процедура Выгнатьвсех() ... КонецПроцедуры а _под_ ней пиши это: ОбработкаОжидания("Выгнатьвсех", 45); |
|||
31
Борис_16
11.09.13
✎
10:10
|
Щас по-пробую
|
|||
32
Борис_16
11.09.13
✎
10:11
|
Написал, кидаю часть:
Процедура ПриУдаленииДокумента(докум,режим) Если докум.вид() = "КомплектовочнаяТестСистема" Тогда спр = создатьобъект("Справочник.СерияГотовойПродукции"); Если спр.найтипореквизиту("документ", докум,1) = 1 Тогда спр.текущийэлемент(); спр.удалить(0); КонецЕсли; КонецЕсли; конецПроцедуры глПрефиксШтучногоШтрихкода = "20"; глКаталогОписаний = КаталогИБ() + "ExtForms\Equip\"; глФлагРасшифровки = 0; глРасшифровка = 0; глОбновить = 0; процедура выгнатьвсех(); спрПольз=СоздатьОбъект("справочник.Пользователи"); Если спрПольз.НайтиЭлемент(глПользователь)=1 тогда глПользователь=СпрПольз.ТекущийЭлемент(); Если глПользователь.РазрешитьРаботу=0 тогда глПользователь.РазрешитьРаботу=1; спрПольз.Записать(); Сообщить("Административное отключение системы"); ЗавершитьРаботусистемы(); конецесли; конецесли; конецпроцедуры спрПольз=СоздатьОбъект("справочник.Пользователи"); Если спрПольз.НайтиПоНаименованию(Строка(Имяпользователя()))=1 тогда глПользователь=СпрПольз.ТекущийЭлемент(); КонецЕсли; Строка ОбработкаОжидания ("Выгнатьвсех",45); ОбработкаОжидания ("Выгнатьвсех",45); Ошибка, блин ее!!! "<<?>>процедура выгнатьвсех(); {Глобальный модуль(1237)}: Определения процедур и функций должны размещаться перед операторами основной программы" |
|||
33
oslokot
11.09.13
✎
10:14
|
(32) епрст... подними процедуру выше переменных! )))
|
|||
34
oslokot
11.09.13
✎
10:16
|
(32) А это что за хрень?
Строка ОбработкаОжидания ("Выгнатьвсех",45); |
|||
35
Борис_16
11.09.13
✎
10:21
|
Сработало! Только теперь ругается на"Строка<<?>> ОбработкаОжидания ("Выгнатьвсех",45);
{Глобальный модуль(1265)}: Ожидается символ '('" Вот что здесь не верно? Строка ОбработкаОжидания ("Выгнатьвсех",45); ?? |
|||
36
dk
11.09.13
✎
10:21
|
школота detected
|
|||
37
Борис_16
11.09.13
✎
10:26
|
Не понял "школота detected"?
|
|||
38
Zakarum
11.09.13
✎
10:28
|
(35) убей эту строку
|
|||
39
Борис_16
11.09.13
✎
10:32
|
Блииин! реально без ошибок!
|
|||
40
Борис_16
11.09.13
✎
10:33
|
Так, поскольку Спавочник Пользователи -созда, то там надо прописывать имеющихся пользователей, отключать я должен выборочно, правильно, сидя под админом через Монитор?
|
|||
41
Мимохожий Однако
11.09.13
✎
10:35
|
Зачем пользователей мучить? Перейди на ночной график обслуживания.
|
|||
42
Борис_16
11.09.13
✎
10:38
|
Ночью не могу - надо спать тоже)
|
|||
43
Борис_16
11.09.13
✎
10:39
|
Теперь надо реализовать выключение, есть Тест - он сидит, я захожу в Монитор под админом и... ничего...
|
|||
44
пипец
11.09.13
✎
10:43
|
та йо , твайо занаху ;))
пользователь выключает себя САМ через обработку ожидания при проверке параметра на выключение (например реквизит - выйти - У ДАННОГО конкретного пользователя который проверяется в обработке ожидания и потом завершаетработусистемы ИМЕННО под ЭТИМ пользователем) а кто ЕМУ реквизит поставит на выход - монопенисуально |
|||
45
Мимохожий Однако
11.09.13
✎
10:44
|
Если спрПольз.НайтиЭлемент(глПользователь)=1 тогда
глПользователь=СпрПольз.ТекущийЭлемент(); Если глПользователь.РазрешитьРаботу=0 тогда глПользователь.РазрешитьРаботу=1; //спрПольз.Записать(); Сообщить("Административное отключение системы"); ЗавершитьРаботусистемы(); Иначе Сообщить("Пользователь на нейден. Административное отключение системы"); ЗавершитьРаботусистемы(); конецесли; |
|||
46
Борис_16
11.09.13
✎
10:51
|
Понял! Спасибо МимохожийОднако!
Но это не дают мне пускать других пользователей, а если надо заново их впустить? Надо же чтобы они работали и оба! все вырубилось и не могли зайти минут 10 в систему, а я пока обновлю что надо |
|||
47
vtolga
11.09.13
✎
11:02
|
Слушай, а может, не надо на живой базе? А то есть сомнения, что получится "что надо". Пробуй на тестовой.
|
|||
48
vtolga
11.09.13
✎
11:05
|
А вообще поставь себе права администратора, в твоей процедуре выкидывания проверяй их и администраторов не трогай. Тогда сможешь войти в базу и снять галочки.
|
|||
49
Борис_16
11.09.13
✎
11:20
|
Я на тестовой и пробую
|
|||
50
Борис_16
11.09.13
✎
11:21
|
Я захожу как админ, а вот скажем лаборант вообще войти не может, я хочу понять как я могу под админом отключать не админов когда они работают?
|
|||
51
Voronve
11.09.13
✎
11:30
|
(50) Терминальный сеанс сруби
|
|||
52
Мимохожий Однако
11.09.13
✎
11:31
|
Добавь при входе проверку на права в случае включения ограничений.
Однако, нехорошо мешать людям работать. Днём можно отработать на копии, а после работы за полчаса обновить без геморроя для пользователей. )) |
|||
53
Борис_16
11.09.13
✎
11:31
|
Тогда вообще на фиг я все писал в ГМ???
|
|||
54
Voronve
11.09.13
✎
11:32
|
(53) Мы не знаем ;)
|
|||
55
Борис_16
11.09.13
✎
11:33
|
при входн на права написать вроде этого?
Процедура глобального модуля!!! Процедура ПриНачалеРаботыСистемы() User=ИмяПользователя(); Если User="Иванов" Тогда Предупреждение("Доступ закрыт!") СтатусВозврата(0); КонецЕсли; КонецПроцедуры |
|||
56
Борис_16
11.09.13
✎
11:34
|
Но опять же это отключает, а как мне будучи админом взять и выключить всех когда мне надо? а потом включить?
|
|||
57
Мимохожий Однако
11.09.13
✎
12:02
|
(50)Гарантированного вывода пользователя из 1С средствами только 1С практически нет.
|
|||
58
AllJoke
11.09.13
✎
12:05
|
Если ТекПользователь = Админ Тогда
//игнорировать твою процедуру. |
|||
59
Борис_16
11.09.13
✎
12:09
|
т.е. если в начале перед процедурой:
Если спрПольз.НайтиЭлемент(глПользователь)=1 тогда глПользователь=СпрПольз.ТекущийЭлемент(); Если глПользователь.РазрешитьРаботу=0 тогда глПользователь.РазрешитьРаботу=1; //спрПольз.Записать(); Сообщить("Административное отключение системы"); ЗавершитьРаботусистемы(); Иначе Сообщить("Пользователь на нейден. Административное отключение системы"); ЗавершитьРаботусистемы(); конецесли; написать"Если ТекПользователь = Админ Тогда //игнорировать твою процедуру." То это запустить проверку пользователей, а следовательно и допуск к системе и, если это пусть будет Тест, то он после подтвеждения выключится, так? |
|||
60
Борис_16
11.09.13
✎
13:36
|
Кто-нибудь может подсказать, что делать-то. что зря в ГМ все написано?
|
|||
61
AllJoke
11.09.13
✎
14:02
|
Если ИмяПользователя = "Администратор" Тогда
//здесь ты админ и заходишь спокойно в систему, //правишь справочник Пользователей Иначе ВыбросПользователя() КонецЕсли; |
|||
62
varelchik
11.09.13
✎
17:51
|
(60) Стучись в аську.
Поделюсь своей выгонялкой. |
|||
63
Zhuravlik
11.09.13
✎
19:36
|
(0) Вроде патч был для bkend.dll на инфостарте, для таких целей. Я пользовал год назад, удобно. И морочи нет. Почти))
|
|||
64
КонецЦикла
11.09.13
✎
19:46
|
Рекомендую стартер Ромикса
Позволяет выгонять с определенным таймаутом и миганием в трее И что самое нужное - не позволяет бесконечно ломиться и блокировать файлы |
|||
65
КонецЦикла
11.09.13
✎
19:47
|
+ Ничего в конфигурации менять не надо
Кроме этого он может прописывать базы пользователю |
|||
66
Борис_16
12.09.13
✎
07:54
|
вот косчно и есть ошибки с циклом:
функция ПриНачалеРаботыСистемы() Для ИмяПользователя = Администратор тогда СтатусВозврата(1); если пользователь=ИмяПользователя(Лаборант)тогда Сообщить("Административное отключение системы"); СтатусВозврата(0); конецесли; Иначе ВыбросПользователя(); Конецфункции хочу пока я под админом, чтобы другие не админы вылетали и все, подскажите как корректно это реализовать |
|||
67
Scanvir
12.09.13
✎
15:31
|
Борис, раз ты такой настойчивый напиши мне на почту [email protected]
|
|||
68
Борис_16
19.09.13
✎
12:17
|
Спасибо! Scanvir! короче, пока я под админом никто не входит и это устраивает моего бухгалтера! :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |