Имя: Пароль:
1C
 
Управлять кластером серверов 1с через API
0 Улугбек_
Собиров
 
21.10.24
08:22
Коллеги добрый день!
Можно ли управлять (включить/отключить блокировку) кластер серверов 1с через API, либо SQL сервер?
1 Волшебник
 
21.10.24
08:25
ищите RAC
2 Dzenn
 
21.10.24
10:23
(0) хороший вопрос, сейчас тебе скину свой код на 1с-исполнителе
3 Dzenn
 
21.10.24
10:28
Скрипт на 1с-исполнителе для управления сервером 1С
структура Подключение
	знч Сервер: Строка
	знч ПользовательКластера: Строка
	знч ПарольКластера: Строка
	знч ИмяБазы: Строка
	знч ПользовательБазы: Строка
	знч ПарольПользователяБазы: Строка
	знч ОтправитьПисьмо: Булево
;

метод Скрипт()

	знч ИмяБазы: Строка = "Рабочая" // здесь указываем строку из ::::подключения:::: (ниже), для проверки поменять на Дев10 или добавить свою

	знч ПодключениеКРабочей: Подключение = новый Подключение(
		"sqlserv1","<здесь пользователь кластера>","<здесь пароль кластера>", "UT2013", "<здесь пользователь базы>", 
		"<здесь пароль базы>", Истина)

	знч ПодключениеКДев10: Подключение = новый Подключение	(
		"dbs","","","dev_Zakirov_10","Закиров Дамир Тагирович", 
		"<здесь пароль базы>", Ложь)

	пер Подключения: Соответствие<Строка, Подключение>
	
	Подключения.Вставить("Рабочая", ПодключениеКРабочей) // ::::подключения::::
	Подключения.Вставить("Дев10", ПодключениеКДев10)

	ЗаблокироватьБазу(Подключения[ИмяБазы])

	если Подключения[ИмяБазы].ОтправитьПисьмо
		ОтправитьПисьмо(Подключения[ИмяБазы])
		;
;

метод ЗаблокироватьБазу(Параметры: Подключение)

	знч АдмС = новый АдминистрированиеСервераV8(Параметры.Сервер, 1545)
	знч Кластеры = АдмС.ПолучитьКластеры()
	для Кластер из Кластеры
		Кластер.ВыполнитьАутентификацию(Параметры.ПользовательКластера, Параметры.ПарольКластера)
		знч Базы = Кластер.ПолучитьИнфобазы()
		для База из Базы
			если База.Имя == Параметры.ИмяБазы
				пер Инфобаза = База.ВыполнитьАутентификацию(Параметры.ПользовательБазы, Параметры.ПарольПользователяБазы)
				ВключитьБлокировку(Инфобаза)
			;
		;
		прервать
	;
;

метод ВключитьБлокировку(Инфобаза: ИнфобазаV8)

	знч ЧасовойПояс = новый ЧасовойПояс("UTC+3")

	Инфобаза.ВремяНачалаБлокировки = ДатаВремя.Сейчас().НачалоДня().ДобавитьМинуты(570).ВМомент(ЧасовойПояс)
	Инфобаза.ВремяОкончанияБлокировки = ДатаВремя.Сейчас().НачалоДня().ДобавитьМинуты(630).ВМомент(ЧасовойПояс)

	Инфобаза.ВключенаБлокировкаНачалаСеансов = Истина
	Инфобаза.Записать()
;


метод ОтправитьПисьмо(Параметры: Подключение) 

	знч Отправитель = "[email protected]"
	знч Получатели = "[email protected]"
	знч Тема = "Обновление 1С УТ с 9.30 до 9.35"

	знч ФайлШаблона = новый Файл(".\\inside\\Обновление в 9.30.html")
	знч ЧтениеТекста = ФайлШаблона.ОткрытьПотокЧтения()
	пер ТекстПисьма = ЧтениеТекста.ПрочитатьКакСтроку(Кодировка.Koi8r)

	пер Лого = новый Файл(".\\inside\\bwell.png")
	исп ПотокЛого = Лого.ОткрытьПотокЧтения()

	пер Письмо = новый Письмо(Отправитель, Получатели, Тема)
	Письмо.УстановитьЗаголовок("Content-Type", "text/html")
	пер Вложение = Письмо.ПриложитьДанные(ПотокЛого, "bwell.png", "image/png", (новый Ууид()).ВСтроку(), Истина)
	ТекстПисьма = ТекстПисьма.Заменить("{ИдентификаторВложения}", Вложение.Ид)
	Письмо.УстановитьТекстКакСтроку(ТекстПисьма, ВидТекстаПисьма.Html)

	пер Аутентификация = новый АутентификацияПочтыПоПаролю("[email protected]", "<здесь пароль на почтовый ящик>")
	пер ПараметрыПодключения = новый ПараметрыПодключенияSmtp("mail.am.local", 465, Аутентификация)

	КлиентSmtp.Отправить(ПараметрыПодключения, Письмо)
	Консоль.Записать(Параметры)

;
4 Dzenn
 
21.10.24
10:26
Вот тебе код на 1С исполнителе. Он работает только при включённой службе RAC на сервере. Приспособлен под обновление в 9.30 утра текущего дня. При выполнении скрипта блокируется указанная база с 9.30 до 10.30 и отправляется письмо на ALL вида "планируется обновление, просьба завершить сеанс."
5 Волшебник
 
21.10.24
10:27
знч, пер, исп... 🤦
6 shuhard
 
21.10.24
10:28
(5) +1
мосгоржоптрикотаж =)
7 Dzenn
 
21.10.24
10:31
(5) не понял, это эмоции на синтаксис исполнителя или на мой код?
8 Волшебник
 
21.10.24
10:39
(7) на синтаксис исполнителя
9 Климов Сергей
 
21.10.24
10:40
Напомнило JCL.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс