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\ /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 ЗавершитьРаботуПользователей
. Да, спасибо за комменты и плюсики.
Ну,
во-первых: фича расчитана для удобства администрирования, поэтому я не писал про пункт меню.
Во-вторых: правильно заметили - это для файлового варианта. Обязательно подправлю
/AU — запрет вывода вопроса об обновлении текущей версии 1С:Предприятия с административной установки (для базовых версий не используются).
(29) Очень интересно :o Вчера утром (02.10.10) она была на месте и плюсиков было 3, сейчас плюсиков 4 и удалена.
Кстати, четвертый плюс от lookindenis (коммент 26)
Дело в том, что в твоем случае значение параметра (имя пользователя) помимо одного слова включает еще и другие символы (пробелы,скобки, может даже еще буквы. ) - значит в данном случае параметр (имя пользователя) нужно указывать в кавычках + параметры, которые не нужны (пароль) не указывать вообще, т.е. вот так (обрати внимание на параметр /N чего тока тут нет, запятых еще не хватает :))
З.Ы.: а если ты где-то просто обновляешь базу, то лучше заходи под админом, у него логин как правило короткий да и прав хватит на все :)
(32)
Как это не удивительно, но код доступа к базе "КодДоступа".
Система такой ставит по умолчанию :D
Код из типового ЗиУПа 2.5.27.5:
В функции ОбработатьПараметрыЗапуска(), общего модуля УправлениеСоединениямиИБ, вызов процедуры УстановитьБлокировкуСоединений() производится без параметров, отсюда и следует (33)
Автору топика потенциальный минус за такое.
Нужно описывать все.
День добрый. что то я никак не пойму куда вводить эту строку: "C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /F <путь к базе>/N /P /WA- /AU- /DisableStartupMessages /C ЗавершитьРаботуПользователей
В свойствах ярлыка в поле "Объект".
А все разобрался. по другому немного сделал.путь>
Возможно, для автора я скажу новость. Но эта штука относится не к платформе, а к семейству типовых конфигураций. В которых написана фигова туча строчек кода для обработки параметра ЗавершитьРаботуПользователей. Об этом ОБЯЗАТЕЛЬНО нужно было написАть. И указать в описании не "Приложение для Windows для 1С: Предприятие 8.1; 1С: Предприятие 8.2 ", а конкретный список конфигураций. А так лично я зря потратил время на изучение этой статьи. Уж как-нибудь в СВОИХ конфигурациях я реализую эту штуку без помощи кого-бы то ни было.
попробовал на УТ 10.3 12.96 файловая и сервере Win2008
оба пользователя работали через удаленный доступ.
Блокировка исправно ставилась и удалялась, но вот второй пользователь в БД упрямо оставался.
В результате грохнул его сеанс через менеджер терм доступа - только тогда БД освободилась
Платформа 8.2, БП 2.0.
Запрет: "C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /F D:\1C\Year /N 111 /P 111 /WA- /AU- /DisableStartupMessages /C ЗавершитьРаботуПользователей
Разрешение: "C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /F D:\1C\Year /N 111 /P 111 /WA- /AU- /DisableStartupMessages /C РазрешитьРаботуПользователей /UC КодРазрешения
Работает, но вопрос на засыпку - при запрете окно программы сворачивается и войти нельзя никому, в том числе и админу, пока не разблокируешь. Как тогда войти в программу?
Выгоняем пользователей из серверной информационной базы
Для проведения регламентных работ в информационной базе 1С:Предприятия 8 часто необходимо получить монополный доступ к базе. Например, для выполнения бэкапа базы или выполнения регламентных работ на сервере СУБД (реиндексация и т.д.), необходимо отключить все активные сеансы.
Рассмотрим простой способ отключения пользователей от информационной базы с помощью стандартного функционала сервера 1С:Предприятия.
Стандартный функционал
Сразу оговорюсь, что речь будет идти о клиент-серверном варианте работы 1С:Предприятия 8. Для отключения сеансов зайдем в консоль администрирования сервера. Там найдем нужную информационную базы в списке:
Зайдя в свойства ИБ установим опцию "Блокировка начала сеансов включена". При этом может быть необходимо ввсетси логин/пароль учетной записи администратора информационной базы.
Не забывайте установить период блокировки сеанса. Также следует предусмотреть, что на время блокировки сеансов нужно остановить все фоновые задания. Делается это опицей "Блокировка регламентных заданий включена".
Код разрешения можно использовать для входа в информационную базу для выполнения регламентных работ, пока остальные сеансы не активные. Вводить код разрешения при подключении к базе нужно с помощью параметров. Например, так будет выглядеть параметр, переданный серверу, если код разрешения "123456".
Войдя в базу таким способом мы получим монополный доступ к информационной базе. Другие сеансы не смогут к нам присоединиться.
По началу периода блокировки сеансов сначала появляется уведомление:
После сеанс завершается.
Активные сеансы также можно отключить, удалив их из списка активных сеансов. Подобное действие порой необходимо для завершения зависших сеансов.
На практике об отключении пользователей лучше сообщать заранее, чтобы снизить риски потери данных, введенных пользователями, но еще не сохраненных.
Непонятное для пользователей, а иногда и начинающих программистов, слово "регистры". Попытаемся раскрыть его в этой статье. Рассмотрим устройство регистров накопления.
Для получения доступа к обновлениям конфигураций 1С 8.2 фирма 1С выпускает диски информационно-технического сопровождения (ИТС)
Выгрузка прайс-листа 1С 7.7 в Excel
Доступ к реквизитам справочника в 1с7.7 для каждого пользователя
Печать ценников для УТ 10.3 платформа 8.2 на две цены (розничная и оптовая)
Сброс пользователей в клиент-серверной базе 1С:Предприятия 8.x
В клиент-серверном режиме работы все данные хранятся в базе данных, управляемой одной из СУБД: MS SQL, Postgree SQL, IBM DB2 или Oracle. Информация об учетных записях хранится в двух таблицах: "v8users" и "Params".
В некоторых ситуациях может появиться необходимость сбросить учетные записи пользователей, чтобы войти в информационную базу. В статье рассмотрим действия, необходимые для выполнения этой задачи. В примере будем использовать MS SQL Server 2012 Express . Имя базы данных на SQL-сервере - "Exp".
Для того, чтобы сбросить учетные записи нужно выполнить два действия:
- Удалить таблицу "v8users".
- Удалить запись из таблицы "Params", у которой в первой колонке "FileName" содержится значение "users.usr".
Далее рассмотрим SQL-команды для автоматизации описанных действий, а также для восстановления списка пользователей информационной базы.
SQL-команды
И так, нам нужны SQL-команды для сброса и восстановления пользователей информационной базы. Начнем с команд сброса списка пользователей. Нам нужно выполнить следующие действия:
- Переименовываем таблицу "v8users" в "h8users" вместо ее удаления. Это позволит восстановить таблицу в дальнейшем. Подробнее о команде "sp_rename" Вы можете прочитать здесь .
- В таблице "Params" также не будем удалять запись, а лишь изменим значение в колонке "FileName" с "users.usr" на "husers.usr". Тогда платформа не сможет найти параметры пользователей информационной базы. Подробнее о команде "UPDATE" Вы можете узнать здесь .
Выполнив эти шаги, мы без проблем сможем зайти в информационную базу, пропустив этап аутентификации. Теперь перейдем к рассмотрению команд по восстановлению списка пользователей. Всего будет три команды:
- Удаление таблицы "v8users", поскольку входа в ИБ платформа создает таблица заново, если она отсутствовала. Вот так выглядит SQL-команда по удалению таблицы из БД. Следует предусмотреть отсутствие этой таблицы, чтобы не появилась ошибка выполнения. Подробнее о команде "DROP TABLE" смотрите по ссылке .
- Восстанавливаем исходное имя таблицы "v8users". Ее синтаксис аналогичен предыдущему примеру, изменили лишь местами имена таблиц.
- Возвращаем исходную запись параметров. При необходимости нужно удалить новую запись настроек пользователей, если платформа ее создала.
Используя приведенные выше команды, мы можем сбрасывать/восстанавливать список пользователей информационной базы.
Автоматизируем процесс
Программу Вы можете скачать по ссылке . Исходные файлы проекта Вы можете скачать отсюда . В принципе, написать подобрую программу не сложно. Важный момент - все действия по изменению базы данных должны выполняться в транзакции, что и было учтено.
Для сброса/восстановления учетных записей необходимо ввести адрес SQL-сервера, имя базы данных и информацию для аутентификации на SQL-сервере.
Таким образом, задача решена, а с помощью созданной программы процесс сброса учетных записей не будет проблемой.
Точнее более полно тема данного вопроса может звучать так: "Как завершить работу активных пользователей в базе 1С: Предприятие 8"? Рассмотрим возможные варианты завершения сеансов работы пользователей в файловой и серверной базах.
Кому подойдет информация: Администратор 1С, Системный администратор, Бухгалтер
Подойдет для конфигураций: Все типовые конфигурации 1С новых редакций
В данной публикации будет рассмотрено, как завершить работу пользователей в базах новых редакций, работающих в режиме управляемого приложения. Зачастую это необходимо, чтобы можно было выполнить операции, требующие монопольного режима базы (например, удаление помеченных на удаление объектов, выполнение тестирования и исправления базы). Тогда в базе остается активным только один пользователь, выполняющий такие операции.
Вообще необходимо стараться избегать необходимости завершать работу пользователей базы принудительно, а завершать работу пользователей стандартным закрытием сеансов работы. Т.к. каждое такое "выкидывание" пользователей из базы является по своей сути аварийным завершением работы с базой. И именно в такие аварийные завершения работы могут возникать или накапливаться ошибки (но не обязательно каждый раз) в пользовательских файлах, которые могут потом выражаться в нетиповом поведении 1С у отдельных пользователей, потребуется очистка кэша базы на отдельном рабочем месте. Но, когда других вариантов не остается, то приходится удалять активные сеансы работы пользователей принудительно.
Будет рассмотрено три момента: в файловой базе, а так же два варианта с использованием возможностей базы в режиме 1С:Предприятие и с помощью утилиты администрирования баз данных для серверного варианта базы. Понять, какой тип базы у Вас - файловый или серверный можно по ссылке.
Конечно, формально можно признать, что есть один универсальный способ для завершения работы всех пользователей для любого типа базы - перезагрузить сервер или компьютер, на котором расположена файловая база. Но и этот вариант следует стараться избегать, т.к. это так же будет являться аварийным завершением работы пользователей.
Внимание: описанные ниже действия доступны для пользователей с полным набором прав! |
1. Блокировка работы пользователей в файловой базе
Завершить работу пользователей в файловой базе не возможно из-за того, что платформенные механизмы 1С 8 это не позволяют сделать. Но возможно выполнить блокировку базы, установив таким образом монопольный доступ. При блокировке работа других пользователей прерывается до момента, пока блокировка не будет снята.
Для этого необходимо перейти в разделе "Администрирование" ("НСИ и администрирование" - в зависимости от конфигурации может быть такое название) по ссылке "Обслуживание", далее по ссылке "Блокировка работы пользователей". Блокировка базы устанавливается текущим пользователем. После нажатия на кнопку "Установить блокировку" сеансы других пользователей будут прерваны до момента снятия блокировки.
2. Завершение работы пользователей серверной базы в режиме 1С: Предприятие
Переходим в раздел "НСИ и администрирование" или "Администрирование" в зависимости от конфигурации базы 1С 8, далее переход по ссылке "Обслуживание".
Далее, как продемонстрировано на, объединенном изображении переход по ссылке "Активные пользователи" откроет одноименную форму списка работающих пользователей базы 1С. Выделяем несколько строк или отдельные и с помощью кнопки "Завершить сеанс" работа пользователей будет завершена.
3. Завершение работы пользователей серверной базы с помощью "Администрирования серверов 1С Предприятия"
Возможна такая ситуация, что доступ в базу оказался не возможен, например, из-за того, что закончились свободные лицензии. Поэтому завершить работу пользователей базы 1С 8 не получиться вышеописанным способом. Так же, если используется старая редакция конфигурации базы, то вышеописанные способы окажутся попросту невозможными в силу отсутствия функционала. Но это все же возможно сделать с помощью дополнительной возможности.
Этот вариант уже предполагает завершение работы пользователей не в режиме Предприятие или Конфигуратор, а с помощью дополнительной утилитой "Администрирование серверов 1С Предприятия". Поэтому важно, чтобы у пользователя уже не 1С, а операционной системы на компьютере или сервере было достаточно прав для работы с данной утилитой.
Находим базу в ветке "Кластер" - "Локальный кластер" - "Информационные базы" по имени базы и "Сеансы". Имя базы можно найти в "Справка" - "О программе", "Имя базы" или в списке запуска баз, внизу формы списка. Выделяются строки с отдельными сеансами работы или несколько подряд. Правой кнопкой мыши вызывается контекстное меню, в котором необходимо выбрать пункт "Удалить".
Согласится с предупреждением о том, что удаление сеанса может привести к потере не сохраненных изменений в справочниках и документах. Мера вынужденная, поэтому нажимается кнопка "ОК".
Успешным результатом будет исчезновение строк удаляемых сеансов пользователей из списка.
Может возникнуть ситуация, что в списке пользователей окажется пользователь "DefUser" - это значит, что в базе отрабатывает регламентное (фоновое) задание. Необходимо дождаться, когда фоновое здание закончит выполнение и пользователь DefUser сам автоматически отключиться. Иначе, если в настройке фонового задания установлена настройка запускать повторно при аварийном завершении, то пользователь после удаления его сеанса работы практически мгновенно тут же появится. И, если исходная цель была в получении монопольного доступа, то это сделать не получится из-за мгновенно снова запускающегося после завершения работы сеанса фонового задания. Необходимо дождаться самостоятельного завершения.
Он отключает все открытые общие файлы на компьютере на котором лежит база.
Далее создал задание (Планировщик заданий 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С".
Создал новую процедуру в модуле обычного приложения :
Добавил в процедуру ПриНачалеРаботыСистемы() тоже самое и подключил обработчик ожидания :
Функция текущая дата на сервере выглядит так :
Таким образом мы получаем дату на сервере , в случае если в свойствах общего модуля установлена галочка "Сервер", я поставил только её.
Получается текущий код отрубает пользователей на два часа , но обычно после полночи уже никто не заходит в базу.
Читайте также: