Автоотключение пользователей 8.3 УФ

31.08.17

База данных - Инструменты администратора БД

Обработка, отключающая все клиент-серверные соединения (в т.ч. к web-серверу) к серверу 1С: Предприятие. Работает в т.ч. на последней платформе 8.3.10.2561 , предназначена для управляемых приложений. Пример использования - автоматический ее запуск для снятия резервных копий по расписанию.

Скачать исходный код

Наименование Файл Версия Размер
Автоотключение пользователей 8.3 УФ:
.epf 7,52Kb
12
.epf 3 7,52Kb 12 Скачать

Если с "Обычными формами" все несколько проще, и существует более одного решения по отключению пользователей, то с управляемыми, и на последних платформах 8.3 возникают различные проблемы.
Во-первых, добавляются веб-подключения.
Во-вторых, 8.3 сама решает, сколько Рабочих Процессов создать (не всегда можно знать заранее их количество).
В-третьих, в обработке предусмотрена ситуация, когда подключение сущестовало на момент запуска обработки, но уже отключилось (завершилось) на момент попытки его отключения.

Информация об этом запишется в лог-файл.

Запускать можно с любого ПК сети, откуда администрируется сервер. То есть это может быть как Windows-cервер, так и сервер с ОС Linux, просто в последнем случае соединения "рубятся" (и обработка запускается) с ПК из сети, а не с самого сервера.

Всегда существует возможность и создать регламентное задание, внеся " отключение пользователей " в конфигурацию, но я не преверженец этого метода.

По задумке, обработка используется в связке с Effector Saver, даже бесплатная версия которой весьма успешно снимает резервные копии с SQL в DT, и умеет хранить указанное количество копий (например, 30 штук). Разумеется, пользователь может снимать резервные копии любым иным способом (но нужна обработка для выгрузки именно в DT; SQL-копиям без разницы, но у них есть другие ограничения).

---

Запуск обработки предполагается скриптом подобного содержания, где
/nBackuper /p123 - запуск от имени пользователя Backuper с паролем 123,
/s127.0.0.1\uf2016 - обращение к локальному адресу, базе uf2016,
/execute E:\scripts\UserKill_v3.epf - запуск обработки UserKill_v3.epf , расположенной по указанному адресу.

echo запуск new_stop_Buh %Time% %Date% >> E:\scripts\log.txt
"C:\Program Files (x86)\1cv8\common\1cestart.exe" ENTERPRISE /s127.0.0.1\uf2016 /nBackuper /p123 /wa- /DisableStartupMessages /RunModeManagedApplication /execute E:\scripts\UserKill_v3.epf

---

Текст обработки по отключению пользователей.
Опять же, не забудьте сменить текст в строке РабПроц.AddAuthentication("Backuper", "123");
В принципе, можно получать логин и пароль из констант в конфигурации - вовсе не обязательно вписывать их в код.


&НаКлиенте
Процедура ПриОткрытии(Отказ)
	текстош="";
	текстош=ПриОткрытииНаСервере();
	если текстош <> "" тогда
		ФайлРегистрации = Новый ЗаписьТекста("E:\scripts\LogFile1c.txt", КодировкаТекста.ANSI, , Истина);
		ФайлРегистрации.Записать(строка(текстош)+Символы.ПС);
		ФайлРегистрации.Закрыть();
	конецесли;	
	ЗавершитьРаботуСистемы(Ложь);

КонецПроцедуры


&НаСервере
функция ПриОткрытииНаСервере()
	текстош="";
	
	Если Найти(СтрокаСоединенияИнформационнойБазы(), "Srvr") > 0 Тогда
		// серверный вариант
		Поиск1 = Найти(СтрокаСоединенияИнформационнойБазы(), "Srvr=");
		ПодстрокаПоиска = Сред(СтрокаСоединенияИнформационнойБазы(), Поиск1 + 6);
		ИмяСервера = Лев(ПодстрокаПоиска, Найти(ПодстрокаПоиска, """") - 1);
		// теперь ищем имя базы
		Поиск1 = Найти(СтрокаСоединенияИнформационнойБазы(), "Ref=");
		ПодстрокаПоиска = Сред(СтрокаСоединенияИнформационнойБазы(), Поиск1 + 5);
		ИмяБазы = Лев(ПодстрокаПоиска, Найти(ПодстрокаПоиска, """") - 1);
	Иначе
		// для других способов подключения алгоритм не актуален
		текстош=" Способ не актуален";
		Возврат текстош;
	КонецЕсли;
	
	Коннектор = Новый COMОбъект("v83.COMConnector");
	Агент = Коннектор.ConnectAgent(ИмяСервера);
	Кластеры = Агент.GetClusters();
	Для каждого Кластер из Кластеры Цикл
		АдминистраторКластера = "Имя администратора кластера";
		ПарольКластера = "Пароль администратора кластера";
		//Агент.Authenticate(Кластер, АдминистраторКластера, ПарольКластера);
		Агент.Authenticate(Кластер,,);
		Процессы = Агент.GetWorkingProcesses(Кластер);
		Для каждого Процесс из Процессы Цикл
			Порт = Процесс.MainPort;
			// теперь есть адрес и порт для подключения к рабочему процессу
			попытка
				РабПроц = Коннектор.ConnectWorkingProcess(ИмяСервера + ":" + СтрЗаменить(Порт, Символы.НПП, ""));
				РабПроц.AddAuthentication("Backuper", "123");
				
				ИнформационнаяБаза = "";
				
				Базы = Агент.GetInfoBases(Кластер);
				Для каждого База из Базы Цикл
					Если База.Name = ИмяБазы Тогда
						ИнформационнаяБаза = База;
						Прервать;
					КонецЕсли;
				КонецЦикла;
				Если ИнформационнаяБаза = "" Тогда
					// база не найдена
				КонецЕсли;
				
				Сеансы = Агент.GetInfoBaseSessions(Кластер, ИнформационнаяБаза);
				Для каждого Сеанс из Сеансы Цикл
					
					Если нРег(Сеанс.AppID) = "backgroundjob" ИЛИ нРег(Сеанс.AppID) = "comconsole" Тогда
						// если это сеансы com-приложения или фонового задания, то не отключаем
						Продолжить;
					КонецЕсли;
					Если Сеанс.UserName = ИмяПользователя() Тогда
						// это текущий пользователь
						Продолжить;
					КонецЕсли;
					Агент.TerminateSession(Кластер, Сеанс);
					Сообщить("Отключен сеанс "+строка(Сеанс.UserName));
				КонецЦикла;
				
				ИнформационнаяБаза2 = РабПроц.CreateInfoBaseInfo();
				ИнформационнаяБаза2.Name = ИмяБазы;
				СоединенияБазы = РабПроц.GetInfoBaseConnections(ИнформационнаяБаза2);
				// Разорвать соединения клиентских приложений.
				Для Каждого Соединение Из СоединенияБазы Цикл
					Если нРег(Соединение.AppID) = "backgroundjob" ИЛИ нРег(Соединение.AppID) = "comconsole" Тогда
						Продолжить;
					КонецЕсли;
					Если Соединение.UserName = ИмяПользователя() Тогда
						// это текущий пользователь
						Продолжить;
					КонецЕсли;
					РабПроц.Disconnect(Соединение);
				КонецЦикла;
			Исключение
				текстош=текстош+" Ошибка при откл пользователей userkill " + строка(ИмяБазы)+ " "+строка(ТекущаяДата());
			конецпопытки;
		КонецЦикла;
	КонецЦикла;
	Сообщить("Завершается работа...");
	Возврат текстош;

КонецФункции

!!! Разумеется, при первом запуске внешней обработки в последних релизах платформы - ее исполнение нужно "разрешить", так что, перед тем, как пустить в свободное плавание - пару раз протестируйте.

обработка архивирование отключение пользователей

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

14400 руб.

06.12.2023    3620    19    1    

40

Infostart УДиФ: Управление данными и формами 1С

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    4297    12    2    

36

SALE! %

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2280 руб.

14.01.2013    178680    1084    0    

862

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27946    82    146    

61

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61546    91    59    

74

"Менеджер потоков 2.1": УПП: "Восстановление партий"

Инструменты администратора БД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет Управленческий учет Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11859    5    9    

7

Конфигурация Session Monitor

Мониторинг Инструменты администратора БД Платформа 1С v8.3 Россия Платные (руб)

Конфигурация Session Monitor предназначена для мониторинга сервера 1С с целью отслеживания чрезмерной нагрузки от конкретных сеансов и скорости реакции рабочих процессов.

1500 руб.

01.12.2020    14406    34    0    

49

Хранилище файлов на SQL

Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Управленческий учет Платные (руб)

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    11176    5    8    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Gilev.Vyacheslav 1911 31.08.17 12:45 Сейчас в теме
dt не является средством резервного копирования о чем прямо сказано в документации 1С
alex-l19041; olegmedvedev; +2 Ответить
2. OlegAr 21 31.08.17 14:16 Сейчас в теме
раз Вячеслав сказал, значит так и есть, не спорим ..
3. rar_xxx 23 31.08.17 23:27 Сейчас в теме
только ms sql бекап забудте о dt причины: 1- mssql бекап в разы быстрее снимается и разворачивается потому что таблицы просто копируются для скорости полезно архивировать, для надежности не архивируйте. 2- при росте базы вы прийдете к тому что не сможете выгрузить в dt ;) хорошо если вовремя узнаете что бекап перестал сниматься 3. из dt вы можете в критический ден просто не восстановить базу. 4. очень интересно еслы вы бекап снимаете я так понимаю только ночью в течении дня бекапов у вас нет. надежда только на железо? Как насчет регулярного бекапа журнала транзакций например каждые 20мин или каждый час?
4. erutan 104 31.08.17 23:51 Сейчас в теме
(3) надежда на железо в плане аппаратного рейда.
С копией SQL комбинирую, но все равно раз в день.
Довольно часто приходится загрузить копию (в смысле sql > dt > файловая) гл.бухгалтеру, бухгалтеру или мне самому.

Нет, бэкапа транзакций не настраивал. Я так понимаю, это должно прикатить к восстановление SQL-копии + восстановление к моменту времени сохраненных транзакций?

Благодарю за комментарии.
5. rar_xxx 23 01.09.17 00:04 Сейчас в теме
Обязательно настройте бекап транзакционного журнала, на сторонний носитель, например раз в 1час или чаще. Таким образом если у вас есть ночной полны sql бекап и в середине дня железо накрывается или вы рушите базу. У вас будет возможность восстановится на любой момент времени, до секунды или конкретной транзакции из забекапленных журналов. Плюс если у вас стоит полная модель восстановления а вы не бекапите журнал, он будет постоянно расти. Так же с помощью журнальных бекапов вам можно отказаться от ежедневных бекапов, которые много весят, но тогда важно отстроить четкий рабочий бекап журналов, это опасная схема и рекомендуется только если у вас нет места на ежедневный бекап. Да и про рейд у нас один раз в схд вылетела вся полка не спас и 10 рейд, винты лучше брать разных серий ;) но для дорогих схд вам придется брать то что дает вендор(
Оставьте свое сообщение