Программно отключить пользователя 1с
Завершение сеанса пользователя в 1С может потребоваться в следующих случаях:
- обновление информационной базы;
- проведение восстановления работы на сервере или профилактических работ;
- зависшие сеансы пользователей, которые препятствуют повторному входу;
- добавление нового объекта метаданных в конфигурацию.
В данной инструкции мы расскажем, как правильно завершить сеанс пользователя и покажем несколько способов в зависимости от требований.
Эти и другие работы мы выполняем в рамках ИТ-аутсорсинга.
Важно запомнить, что прежде чем завершать сеанс пользователя, требуется предупредить пользователя об этом, так как возможна потеря данных.
Закрытие сеансов из конфигуратора
При внесении изменений в структуру базы и обновлении конфигурации в динамическом режиме может появиться ошибка, которая не предоставит нам возможности продолжить выполнение обновления до тех пор, пока не завершим сеанс пользователя.
Рисунок 1 - Ошибка активных сеансов
Для завершения сеанса требуется:
- Нажать кнопку Завершить сеансы и повторить.
- Дождаться окна реструктуризации базы.
- Нажать Принять.
Завершение сеансов пользователя из программы 1С
В основном все продукты фирмы 1С 8 версии имеют механизм, позволяющий удаленно завершить работу пользователя и обеспечить администратору монопольный доступ к базе. Это обработка Блокировка соединений с информационной базой. Найти её можно по следующему адресу: Администрирование => обслуживание => блокировка работы пользователей.
Рисунок 2 - Блокировка работы пользователей
Рисунок 3 - Подтверждение блокировки сеанса
Удаление пользователей из RDP
Удалить пользователя из терминального сервера можно при наличии определенных прав на это действие. Возможно завершить работу из стандартного диспетчера задач, но простое прерывание сеанса - не очень правильно. Второй вариант - использование диспетчера задач, удаленное подключение к сеансу и корректное завершение с помощью выхода из программы. Это, конечно, долгий способ и нет гарантий, что пока выполняется выход одного пользователя, не будет подключен еще пользователь, который запустит программу.
Для сервера 1С и обладая правами Администратора для кластера серверов 1С, необходимо:
- Запустить консоль администрирования сервера 1С.
- В ветке Информационные базы, найти базу, в которой будем завершать работу пользователя.
- Открыв её, зайти в ветку Сеансы.
- Щелкнув правой кнопкой мыши по имени пользователя, выбрать пункт Удалить.
Рисунок 4 - Удаление в консоли администрирования
Часто бывает, что при работе в серверном режиме зависшие сеансы пользователей не видны средствами платформы, их можно удалить только через консоль.
Перезагрузка сервера
Нельзя и упустить такой момент, что одним из способов завершения сеанса пользователей является банальная перезагрузка сервера, выполнить её можно, если все вышеуказанные способы не сработали, но такое случается редко. Безусловно, требуется пользователей предупредить, чтобы они успели сохранить файлы и завершить работу с программами.
Он отключает все открытые общие файлы на компьютере на котором лежит база.
Далее создал задание (Планировщик заданий Windows), который бы запускал этот файл в назначенное время.
Вы спросите а как же те сеансы которые открыты на компьютере , Я их тоже устранил создав новый *.bat файл со строкой
taskkill /IM 1cv8.exe /f
правда он отключает все запущенные 1С на текущим компьютере , но для меня это не было так страшно так как архивация производилась в ночное время и уже никто не работал в базе, этот батник тоже можно добавить в Планировщик Windows.
Так же по taskkill можете почитать в других источниках , есть возможности отключать процессы в отдельных сеансах
2. Отключение пользователей в клиент-серверной базе.
Так же как и в случае файловой базы Я использовал *.bat файлы.
Создал два *.bat файла , первый отключает сервер 1С предприятие, второй его включает очень просто .
Содержание первого файла :
net stop "1C:Enterprise 8.2 Server Agent"
Содержание второго файла :
net start "1C:Enterprise 8.2 Server Agent"
Добавил два новых задания в планировщик Windows , с разницой во времени 15 минут для того чтобы все зависшие пользователи смогли отключиться, эти действия анологичны Запуск сервера 1С Предприятие и Остановка сервера 1С Предприятие
3. Программный способ отключения пользователей в 1С
Стояла задача выполнять архивацию ежеденевно в 22:30.
В этом способе Я не стал заморачиваться, создал новую роль "НеЗакрывать1С".
Создал новую процедуру в модуле обычного приложения :
Добавил в процедуру ПриНачалеРаботыСистемы() тоже самое и подключил обработчик ожидания :
Функция текущая дата на сервере выглядит так :
Таким образом мы получаем дату на сервере , в случае если в свойствах общего модуля установлена галочка "Сервер", я поставил только её.
Получается текущий код отрубает пользователей на два часа , но обычно после полночи уже никто не заходит в базу.
Что может быть лучше обработок или процедур отключения непослушных пользователей из базы?
Наверное, какая-то встроенная вещь!
Надо бы ей воспользоваться.
8.1
Создаем ярлык. Назовем его: Отключение или Завершение.
"C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /F"ПутьКБазе" /N"Юзер" /P"ЕгоПароль" /WA- /AU- /DisableStartupMessages /C ЗавершитьРаботуПользователей
Создаем ярлык. Назовем его: Разрешить
"C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /F"ПутьКБазе" /N"Юзер" /P"ЕгоПароль" /WA- /AU- /DisableStartupMessages /C РазрешитьРаботуПользователей /UC ПакетноеОбновлениеКонфигурацииИБ
Все. Теперь можно всем работать!
8.2
Отключалка
"C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /F"ПутьКБазе" /N"Юзер" /P"ЕгоПароль" /WA- /AU- /DisableStartupMessages /C ЗавершитьРаботуПользователей
"C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /F"ПутьКБазе" /N"Юзер" /P"ЕгоПароль" /WA- /AU- /DisableStartupMessages /CРазрешитьРаботуПользователей /UCКодРазрешения
Это работает для фалового варианта.
Для серверного меняем /Fна /S\
Кста, работающие пользователи автоматически включаться в работу
Замечено, если у пользователей закрывается 1С с запросом завершения работы, то в 8.2 будет окно это маячить :-(. пока думаю над этим.
Всем огромный фэнкс!
Специальные предложения
Стало быть не занимался обменами.
Сервис-Прочие обмены данными- Настройка выполнения обменов.
Ежели есть хоть одна настройка
Действия - Настройка обновления конфигурации
оно тебе автоматически построит:
P.S. Вот тут правильная настройка обмена, когда периферия, при необходимости, обновляет свою конфигурацию вслед за центральной (14) P.S. Вот тут правильная настройка обмена, когда периферия, при необходимости, обновляет свою конфигурацию вслед за центральной
Там наверно ссылочка должна быть? (19) на правильную настройку обмена , когда периферия, при необходимости, обновляет свою конфигурацию вслед за центральной :) Может я неправильно понял - тогды извиняйте. (20) Поясняю: центральная база может иметь дурную привычку взять да обновиться злобным, например, франчем ;) Изменились реквизиты объектов, добавились новые. да мало ли! В правильном обмене париться с обновлением периферийной базы не придется, она получит от центральной информацию о том, что та изменилась, и сама обновится. Все это предусмотрено штатными механизмами обмена восьмерки (21) а вот теперь все ясно. :) а я надеялся сохранить что нить умное для балбеса админа а то в отпуск спокойно не сходить :cry: Я в семерке писал обработчикОжидания, который проверял константу на завершение работы. Если константа была равна Да (1), то три раза с интервалом в 30 сек пользователям выдается предупреждение о необходимости завершить работу. Если они ее не успевали за это время заврешить, 1С закрывалась сама. При открытии же, проверялась константа на заврешение, если она равна Да (1), то 1С сразу же закрывается Вообще есть пункт меню в сервисе "Установить блокировку подключения к базе".
Выгоняет пользователей.
Но, если мне не изменяет память, таким образов нельзя выгнать пользователя у которого открыто модальное окно так всеже, для серверного варианта что то есть похожее? (6) Для серверного вместо ключа /F пиши ключ /S
например "C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /S<ИмяСервераSql>\<ИмяБазыНа1ССервере> /N <имя> /P <пароль> /WA- /AU- /DisableStartupMessages /C ЗавершитьРаботуПользователей
единственное что мне неясно - что делает ключ /AU- :(
"C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /F Пала1 /N Александр /P 123 /WA- /AU- /DisableStartupMessages /C ЗавершитьРаботуПользователей
(10) Путь заключай в кавычки (если длинные названия) и без пробеловнапример
"C:\Program Files (x86)\1cv81\bin\1cv8.exe" ENTERPRISE /SSQLSRV\MyDB /NАдминистратор /P123 /WA- /AU- /DisableStartupMessages /C ЗавершитьРаботуПользователей
или
"C:\Program Files (x86)\1cv81\bin\1cv8.exe" ENTERPRISE /FD:\FileBases\myDB\ /NАдминистратор /P123 /WA- /AU- /DisableStartupMessages /C ЗавершитьРаботуПользователей
(12)
то-же хотелось бы услышать ответ =)
повторюсь: "а для семерки есть подобная штучка?"
. Да, спасибо за комменты и плюсики.
Ну,
во-первых: фича расчитана для удобства администрирования, поэтому я не писал про пункт меню.
Во-вторых: правильно заметили - это для файлового варианта. Обязательно подправлю
/AU — запрет вывода вопроса об обновлении текущей версии 1С:Предприятия с административной установки (для базовых версий не используются).
(15) Сходи куда-нибудь в партком, они раньше мастера ярлыки вешать были :) а как ты повисшие сессии такой штукой отключишь? Еще один батник для перезапуска сервера?) Ставлю +Но есть проблемка Имя пользоветеля состоит из 3 слов..
Подставляет только первое. (29) Очень интересно :o Вчера утром (02.10.10) она была на месте и плюсиков было 3, сейчас плюсиков 4 и удалена.
Кстати, четвертый плюс от lookindenis (коммент 26) Ставлю +
Но есть проблемка Имя пользоветеля состоит из 3 слов..
Подставляет только первое.
Дело в том, что в твоем случае значение параметра (имя пользователя) помимо одного слова включает еще и другие символы (пробелы,скобки, может даже еще буквы. ) - значит в данном случае параметр (имя пользователя) нужно указывать в кавычках + параметры, которые не нужны (пароль) не указывать вообще, т.е. вот так (обрати внимание на параметр /N чего тока тут нет, запятых еще не хватает :))
З.Ы.: а если ты где-то просто обновляешь базу, то лучше заходи под админом, у него логин как правило короткий да и прав хватит на все :)
Попробовал. Выгнать - выгнала. А разрешить не получается - требует код разрешения. (32)Как это не удивительно, но код доступа к базе "КодДоступа".
Система такой ставит по умолчанию :D
kote; morevalar; ybatiaev; sergiobargio1; briz; hamann2; + 6 – Ответить
Код из типового ЗиУПа 2.5.27.5:
В функции ОбработатьПараметрыЗапуска(), общего модуля УправлениеСоединениямиИБ, вызов процедуры УстановитьБлокировкуСоединений() производится без параметров, отсюда и следует (33)
Надоело делать резервную копию 1с вручную? Сейчас расскажем, как можно делать резервную копию автоматически – по расписанию.
Вариант для серверной базы данных.
1. Создаем файл с расширением bat приблизительно следующего содержания:
Расшифровка кода операторов командной строки:
set kat=C:Program Files (x86)1cv88.3.9.2170 – устанавливаем путь к исполняемым файлам 1с
set serv=192.168.0.1 – указываем ip или имя сервера 1с
set base=Base – указываем имя базы данных на сервере
set user=Администратор – логин Администратора 1с
set pass=Пароль – Пароль Администратора
set passblok=КодРазрешения – пароль для снятия блокировки работы пользователей в 1с. По умолчанию равен = КодРазрешения
Этот пароль можно посмотреть(и/или) поменять в консоле Администрирования баз данных 1с
set pathexport=“f:Backup1c82_%date%.dt” – указываем путь куда будет выгружаться резервная копия (имя файла будет иметь вид 1с82_01.01.2001.dt на текущую дату)
“%kat%in1cv8.exe” ENTERPRISE /S %serv%\%base% /N %user% /P %pass% /DisableStartupMessages /C ЗавершитьРаботуПользователей
-завершение работы пользователей (через 1 минуту) и установка блокировки на вход новых пользователей
“%kat%in1cv8.exe” CONFIG /S %serv%\%base% /DisableStartupMessages /DumpIB %pathexport% /N %user% /P %pass% -NoTruncate /UC %passblok%
-непосредственно выгрузка резервной копии
“%kat%in1cv8.exe” ENTERPRISE /S %serv%\%base% /N %user% /P %pass% /DisableStartupMessages /C РазрешитьРаботуПользователей /UC %passblok%
-снятие блокировки на вход пользователей
2. Запуск этого bat файла по расписанию через планировщик заданий Windows
Планировщик заданий находится: Панель управления Windows- Администрирование-Планировщик заданий
- Переходим на вкладку триггеры – создаем новый триггер с расписанием
- Переходим на вкладку действия и создаем новое действие “Запуск программы”, указав путь к bat файлу. Жмем ОК – все выгрузка БД 1с по расписанию настроена
P.S. Если выгрузка занимает длительное время целесообразно создать несколько задач отличных по времени к примеру
- Заблокировать базу в 02:50
- Выполнить выгрузку базы 1с в 03:00
- Разблокировать базу в 05:00
Похожие записи
Резервное копирование баз 1с через командную строку : 2 комментария
Блокировка не работает =(
Что конкретно не работает? Не завершается работа пользователей или новые могут входить? База какая серверная или файловая?
Отключение или Завершение работы пользователей:
Разрешить работу пользователей:
Для успешного выполнения резервного копирования в информационной базе не должно быть активных сеансов пользователей. Чтобы автоматически завершить работу пользователей, перед выполнением бэкапа, в Effector Saver предусмотрен соответствующий механизм.
Для настройки завершения работы пользователей 1С:Предприятия перейдите на вкладку «Отключение пользователей».
Обратите внимание: в бесплатной редакции Effector Saver данный функционал не реализован. В момент запуска бэкапа пользователям нужно покинуть базу 1С:Предприятия, иначе выгрузка базы не произойдет.
Установите флаг «Завершить работу пользователей 1С:Предприятия». Из выпадающего меню выберете один из вариантов:
- «Завершить сеансы на сервере 1С:Предприятие»;
- «Вызвать штатное завершение работы пользователей».
В случае выбора «Завершить сеансы на сервере 1С:Предприятие» — отключение пользователей происходит путем принудительного завершения сеансов на сервере 1С:Предприятия. Этот вариант подходит только для клиент-серверных баз 1С:Предприятия.
Если Вы изменяли стандартные настройки сервера 1С, возможно потребуется изменить параметры, которые идут ниже.
Если в кластере 1С:Предприятия создан пользователь «Администратор кластера», установите флаг «Кластер требует авторизации». Заполните поля: «Имя администратора кластера:» и «Пароль администратора кластера:».
Важно: не путайте данного пользователя с пользователем базы 1С:Предприятия и пользователем «Администратор центрального сервера».
В консоли администрирования сервера 1С:Предприятия администраторы кластера расположены по пути:
«Console Root» — «1C:Enterprise 8.3 Central Servers» — «(*)имя компьютера» — «Кластеры» — «Локальный кластер» — «Администраторы».
Если порт подключения к агенту сервера отличный от стандартного, установите флаг «Используется нестандартный порт агента сервера». Заполните поле «Порт агента сервера:», по умолчанию — 1540.
Для определения порта агента сервера зайдите в консоль администрирования сервера 1С. При клике правой кнопкой мыши на имя компьютера из выпадающего меню выберете «Свойства» — «Параметры центрального сервера 1С:Предприятия» — «IP порт:».
Второй вариант, откройте «Службы». Выберите «Агент сервера 1С:Предприятия…» и откройте окно «Свойства», строка «Исполняемый файл:».
В случае выбора «Вызвать штатное завершение работы пользователей» — отключение пользователей происходит путем вызова встроенного в типовые конфигурации механизма завершения работы пользователей. Данный механизм основан на использовании процедуры «Блокировка установки соединений с информационной базой».
Читайте также: