Перейти к содержимому

Автоматическое обновление конфигурации базы данных 1С

Автоматическое обновление конфигурации базы данных 1С

Пример кода, для автоматического обновления конфигурации базы данных 1С.

Процедура ОбновитьКонфигурациюБазыДанных()
	
	// Подключение к кластеру и поиск текущий базы данных.
	
	// 1545 порт, на котором расположен сервис ras.
	АдминистрированиеСервера = Новый АдминистрированиеСервера("127.0.0.1", 1545);
	АдминистрированиеСервера.ВыполнитьАутентификацию(); // <- Если необходимо, указать логин и пароль.
	
	ИмяБазыДанных = НСтр(СтрокаСоединенияИнформационнойБазы(), "Ref");
	ТекущаяИнформационнаяБаза = Неопределено;
	
	Кластеры = АдминистрированиеСервера.ПолучитьКластеры();
	Для каждого Кластер Из Кластеры Цикл
		
		Кластер.ВыполнитьАутентификацию(); // <- Если необходимо, указать логин и пароль.
		
		ИнформационныеБазы = Кластер.ПолучитьИнформационныеБазы();
		Для каждого ИнформационнаяБаза Из ИнформационныеБазы Цикл
			
			Если ИнформационнаяБаза.Имя = ИмяБазыДанных Тогда
				ТекущаяИнформационнаяБаза = ИнформационнаяБаза;
				Прервать;
			КонецЕсли;
		
		КонецЦикла;
	
	КонецЦикла;
	
	Если ТекущаяИнформационнаяБаза = Неопределено Тогда
		ВызватьИсключение НСтр("ru = 'Не удалось определить текущую информационную базу.'");
	КонецЕсли;
	
	// Установка блокировки начала сеансов.
	ТекущаяИнформационнаяБаза.ВыполнитьАутентификацию("Администратор"); // <- Если необходимо, указать логин и пароль.
	
	ТекущаяИнформационнаяБаза.ВключенаБлокировкаНачалаСеансов = Истина;
	ТекущаяИнформационнаяБаза.БлокировкаРегламентныхЗаданий = Истина;
	ТекущаяИнформационнаяБаза.КодРазрешенияНачалаСеансов = "123";
	ТекущаяИнформационнаяБаза.СообщениеБлокировки = "Выполняется автоматическое обновление конфигурации базы данных.";
	ТекущаяИнформационнаяБаза.Записать();
	
	// Завершение сеансов, кроме текущего.
	ТекущийСеанс = Неопределено;
	НомерТекущегоСеанса = НомерСеансаИнформационнойБазы();
	
	Сеансы = ТекущаяИнформационнаяБаза.ПолучитьСеансы(); 
	Для каждого Сеанс Из Сеансы Цикл
		
		Если Сеанс.НомерСеанса = НомерТекущегоСеанса Тогда
			ТекущийСеанс = Сеанс;
			Продолжить;
		КонецЕсли;
		
		Сеанс.ЗавершитьСеанс("Выполняется автоматическое обновление конфигурации базы данных.");
	
	КонецЦикла;
	
	// Подготовка и запуск конфигуратора в пакетном режиме.
	КомандаЗапуска = Новый Массив;
	
	Если ОбщегоНазначения.ЭтоWindowsСервер() Тогда
		КомандаЗапуска.Вставить(КаталогПрограммы() + "1cv8.exe");
	Иначе	
		КомандаЗапуска.Вставить(КаталогПрограммы() + "1cv8");
	КонецЕсли;
	
	КомандаЗапуска.Добавить("DESIGNER");
	КомандаЗапуска.Добавить("/IBConnectionString");
	КомандаЗапуска.Добавить(СтрокаСоединенияИнформационнойБазы());
	
	КомандаЗапуска.Добавить("/N");
    КомандаЗапуска.Добавить("Администратор"); // <- Указать имя пользователя. 
	
	КомандаЗапуска.Добавить("/P");
	КомандаЗапуска.Добавить(""); // <- Указать пароль пользователя.
	
	КомандаЗапуска.Добавить("/UC");
	КомандаЗапуска.Добавить("/123");
	
	КомандаЗапуска.Добавить("/DisableStartupMessages");
	КомандаЗапуска.Добавить("/DisableStartupDialogs");
	КомандаЗапуска.Добавить("/UpdateDBCfg");
	
	// Команда для снятие блокировки начала сеансов.
	КомандаЗапуска.Добавить("/RunEnterprise ""/CРазрешитьРаботуПользователей /UC123""");
	
	ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы();
	ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Ложь;
	
	ФайловаяСистема.ЗапуститьПрограмму(КомандаЗапуска, ПараметрыЗапускаПрограммы); 
	
	ТекущийСеанс.ЗавершитьСеанс();
	
КонецПроцедуры
Метки:

1 комментарий для “Автоматическое обновление конфигурации базы данных 1С”

  1. Думаю, что в блоке

    Если ОбщегоНазначения.ЭтоWindowsСервер() Тогда
        КомандаЗапуска.Вставить(КаталогПрограммы() + "1cv8.exe");
    Иначе   
        КомандаЗапуска.Вставить(КаталогПрограммы() + "1cv8");
    КонецЕсли;
    

    вместо Вставить должно быть Добавить.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *