Принудительное завершение работы пользователей без администраторских прав на сервере

1. thorben 17 12.03.10 09:02 Сейчас в теме
Мы работаем в 1С:Управление Торговлей 8.1 . У меня нет администраторских прав на сервере, но есть полные права в 1С. Можно как-то программно (или регламентным заданием), не имея администраторских прав на сервере, но имея полные права в 1С, принудительно завершить работу всех пользователей без полных прав?

Заранее благодарен за подсказки!
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alexk-is 6534 12.03.10 09:46 Сейчас в теме
(1) Установи блокировку базы данных в меню Сервис. Минут через 10 работа пользователей должна быть прекращена.
3. thorben 17 12.03.10 09:52 Сейчас в теме
Почему то не работает. Меня самого иногда выкидывает, а других нет. Это наверняка из-за того, что работа происходит на терминальном сервере.
4. anig99 2844 12.03.10 09:53 Сейчас в теме
Сервис - Блокировка установки соединения с информационной базой.
5. thorben 17 12.03.10 14:10 Сейчас в теме
Почему выбрасывает меня самого, а другие продолжают работать?
6. thorben 17 12.03.10 15:33 Сейчас в теме
В чем может быть причина данной ошибки?

Ошибка при вызове метода контекста (ConnectAgent): Произошла исключительная ситуация (V81.COMConnector.1): server_addr=tcp://kdsv0703:1540 descr=Ошибка сетевого доступа к серверу
(Windows Sockets - 10061(0x0000274D). Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. ) line=569 file=.\src\DataExchangeTcpClientImpl.cpp
7. Istur 1472 13.03.10 23:44 Сейчас в теме
Да, у меня тож было такое иногда. Решалось перезапуском службы в сервере "Агент сервера 1с:Предприятия". Точно не помню. Но так как вы доступа к нему не имеете, то выход только один - кодировать. Алгоритм - добавить новую константу "ЗавершитьСеанс" и подключить обработчик ожидания, который проверяет к примеру раз в минуту ее значение. Если Истина, то завершать сеанс.

Хотя раз вы не можете выгнать всех пользователей, то и добавить новый объект метаданных в конфигурацию БД не получится.. Тогда не константу, а.. ну не знаю даже. может считывать значение из текстового файла.. но это долго, так что тогда не раз в минуту проверять, а раз в час. А так так блокировка соединений установлена. то заново пользователи подключиться не смогут.

Не, щас смотрю - левый алгоритм. Может кто-нить лучший выход предложит.
8. thorben 17 15.03.10 09:04 Сейчас в теме
ЗавершитьРаботуПользователей(ложь); У меня прекрасно работает без всякого обработчика ожидания. Все «вылетают» из базы. Но я не уверен, не повредит ли это базе, когда пользователи будут выбрасываться при помощи данной команды.
9. Душелов 4018 15.03.10 10:45 Сейчас в теме
(8) Базе не повредит. При открытом модальном окне этот метод не сработает.
sergiobargio1; +1 Ответить
16. alexk-is 6534 15.03.10 15:24 Сейчас в теме
(8) (9) Для этого перед командой ЗавершитьРаботуСистемы(Ложь);
я пишу Оповестить("ЗавершитьРаботуСистемы");
sergiobargio1; +1 Ответить
10. thorben 17 15.03.10 11:23 Сейчас в теме
Что значит при открытом модальном окне?
11. Istur 1472 15.03.10 11:26 Сейчас в теме
(11)
// Завершение работы только при условии удачной установки монопольного режима работы
// Вызывается, только при запуске системы от имени администратора с параметром запуска "ЗавершитьРаботуПользователей"
//
Процедура ЗавершитьРаботуПользователей() Экспорт


Значит.. ну что какое-то окно открыто так, что пока оно не будет закрыто, никакое другое окно недоступно. То есть оно открыто методом формы ОткрытьМодально(), а не Открыть().
12. thorben 17 15.03.10 11:33 Сейчас в теме
Нет я не совсем пониманию как модальность открытия окна связана с потерей данных в 1С? Или когда и для чего открывать окно модально?
13. Istur 1472 15.03.10 11:43 Сейчас в теме
(12) Нет, данные потеряны в любом случае не будут, единственное не будут записаны в базу не сохраненные данные. Ну то есть пользователь создал документ, но его не записал. И если вызвать этот метод, то соответственно его просто выкинет, а этот док в базу записан не будет. А модальность окна, Вы не поняли, связана не с потерей данных, а с невозможностью выгнать пользователя.То есть если таких окон нет, то его без проблем выкинет этой процедурой, а вот если нет - то нифига.

Зачем модальные окна? Ну это как бы получение окна монопольно, по каким-то причинам пользователь не должен лазать по другим окнам и менять данные. Навскидку точный пример не скажу((
15. Istur 1472 15.03.10 11:54 Сейчас в теме
(12) Во, нашел в УТ. В доке "Реализация товаров и услуг" страница "Товары" - Заполнить - Добавить из поступления. Там для выбора открывается список поступлений. И открывается он монопольно, иначе пользователь если будет делать че-нить другое, а потом вернется, то он подумает, что это просто список поступлений. Ну обычно модальность реализована именно в таких случаях. Но как ты понимаешь такие формы надолго не открывают)) Просто подожди минутку и его можно будет вырубить)) Если конечно пользователь не решит резко куда-нить смыться. Но это редко бывает с модальными окнами, всякие списки и отчеты может оставить открытыми, а такие вещи нет.

(14) Стопроцентно не уверен, но по логике вещей его выкинуть не должно. Но повторюсь, не уверен..
sergiobargio1; +1 Ответить
14. thorben 17 15.03.10 11:47 Сейчас в теме
Понятно. То что документ не будет записан – это не проблема. Я думал, что вдруг в данный момент кто-то как раз проводит документы и идет запись по регистрам. И если кого-то вдруг выбросит не прервет ли программа данную запись?
17. Istur 1472 15.03.10 15:37 Сейчас в теме
(0) Ну вот и выход нашелся))

(16) Спасибо, не сталкивался с этой функцией))
18. alexk-is 6534 15.03.10 15:56 Сейчас в теме
+16 В открываемых модально формах должна быть процедура

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

    Если
ИмяСобытия = "ЗавершитьРаботуСистемы" Тогда
        
Закрыть();
    КонецЕсли;

КонецПроцедуры
19. Душелов 4018 15.03.10 16:04 Сейчас в теме
(18) Ага, и в вопросах и предупреждениях надо обязательно указывать таймаут.
20. thorben 17 15.03.10 16:09 Сейчас в теме
21. thorben 17 16.03.10 18:48 Сейчас в теме
Чем отличается способ завершения пользователей через ЗавершитьРаботуПользователей (ложь) от метода, когда я получаю соединения с сервером и разрываю их при помощи ConnectToWorkProcess.Disconnect(Connection)?
22. alexk-is 6534 16.03.10 21:06 Сейчас в теме
(21) ЗавершитьРаботуПользователей - устанавливает блокировку на базу, каждый сеанс (соединение) проверяет это и завершается. Завершается, но не сразу, а в зависимости от установленного времени. Т.е. выполняется куча действий в каждом запушенном сеансе, а список действий зависит от конкретной версии конкретной конфигурации. Но может и не завершаться, зависит от открытых модальных окон и параметров запуска.

ConnectToWorkProcess.Disconnect - рвет соединение и все.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот