gifts2017

Регламент для обновления базы данных

Опубликовал Александр pira@pochta.ru (Pira) в раздел Администрирование - Распределенная БД (УРИБ, УРБД)

Обработка для выполнения обновления узла. Работает как регламентное задание.

Обработка загружается в дополнительные внешние обработки.

Далее нужно настроить расписание.

Принцип работы:

После выполнения обмена, при выполнении регламентного задания проверяется необходимость выполнения обновления.

Если нужно обновить - тогда всех выкинет из БД и запустится обновление.

Пароль администратора у меня хранится в константе, потому нужно в строке с установкой пароля ввести пароль вашего пользователя, ну и имя поменять.


Функция ЗавершитьСеансы()
	Результат = Истина;
	
	Блокировка = Новый БлокировкаСеансов;
	Блокировка.Установлена = Истина;
	Блокировка.Начало = ТекущаяДатаСеанса();
	Блокировка.КодРазрешения = "КодРазрешения";
	Блокировка.Сообщение = "Выполняется обновление. Сохраните данные и закройте 1С";
	УстановитьБлокировкуСеансов(Блокировка);
	
	НачалоПаузы = ТекущаяДата();
	Пока ТекущаяДата()-НачалоПаузы<60 Цикл
		//уже 15 лет не могут сделать паузу
	КонецЦикла;
	
	ЕстьСеансы = ПолучитьСеансыИнформационнойБазы();
	//Результат = ЕстьСеансы.Количество()>1;
	Возврат Результат;
	
КонецФункции

Процедура ОбновлениеБД()
	ПарольАдмина = Константы.Сударь_Администратор.Получить();
	
	СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();//File="C:\1cv8\Base".
	Если лев(СтрокаСоединения,4) = "Srvr" Тогда  //Srvr="obmensrv";Ref="testpirozhkov";
		Сервак = Лев(СтрокаСоединения,Найти(СтрокаСоединения,";Ref="));
		База   = Прав(СтрокаСоединения,Найти(СтрокаСоединения,";Ref="));
		Сервак = СтрЗаменить(Сервак, "Srvr=", "");
		Сервак = СтрЗаменить(Сервак, ";", "");
		База = СтрЗаменить(База, ";", "");
		СтрокаСоединения = Сервак+"\"+База;
		СтрокаСоединения = СтрЗаменить(СтрокаСоединения, """", "");
		КаталогПрограммы = КаталогПрограммы();
		ИмяФайлаПрограммы = КаталогПрограммы + "\1cv8.exe";                       
		
		КоманднаяСтрокаОбновления = "echo off
		|cls
		|"""+ИмяФайлаПрограммы+""" CONFIG /S"""+СтрокаСоединения+""" /N""Администратор"" /P"""+ПарольАдмина+""" /DisableStartupMessages /UpdateDBCfg /UC""КодРазрешения""
		|"""+ИмяФайлаПрограммы+""" ENTERPRISE /S"""+СтрокаСоединения+""" /N""Администратор"" /P"""+ПарольАдмина+""" /DisableStartupMessages /C""РазрешитьРаботуПользователей"" /UC""КодРазрешения""";   		
	Иначе
		
		СтрокаСоединения = СтрЗаменить(СтрокаСоединения, "File=", "");
		СтрокаСоединения = СтрЗаменить(СтрокаСоединения, ";", "");
		КаталогПрограммы = КаталогПрограммы();
		ИмяФайлаПрограммы = КаталогПрограммы + "\1cv8.exe";                       
		
		КоманднаяСтрокаОбновления = "echo off
		|cls
		|"""+ИмяФайлаПрограммы+""" CONFIG /F"+СтрокаСоединения+" /N""Администратор"" /P"""+ПарольАдмина+""" /DisableStartupMessages /UpdateDBCfg /UC""КодРазрешения""
		|"""+ИмяФайлаПрограммы+""" ENTERPRISE /F"+СтрокаСоединения+" /N""Администратор"" /P"""+ПарольАдмина+""" /DisableStartupMessages /C""РазрешитьРаботуПользователей"" /UC""КодРазрешения""";   		
	КонецЕсли;
	Попытка
		УстановитьМонопольныйРежим(Истина); 
	Исключение
	КонецПопытки;
	
	ИмяФайлаСкрипта = КаталогВременныхФайлов() + "run.bat";
	Ф = Новый ТекстовыйДокумент();
	Ф.УстановитьТекст(КоманднаяСтрокаОбновления);
	Ф.Записать(ИмяФайлаСкрипта, КодировкаТекста.OEM);
	
	Попытка
		ЗапуститьПриложение(ИмяФайлаСкрипта,,ложь);      
	Исключение
	КонецПопытки;
	
КонецПроцедуры


Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Обновление конфигурации
.epf 7,50Kb
14.09.16
2
.epf 7,50Kb 2 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. борян петров (TODD22) 19.10.16 11:37
Что то не получается этой обработкой обновить. Изменил конфигурацию, запустил обновление. Теперь в базу попасть не могу. Висит блокировка и ожидание запуска....
2. борян петров (TODD22) 19.10.16 11:46
Судя по журналу регистрации проблема в каком то фоновом задании которое выполняется параллельно и не может быть завершено.
3. борян петров (TODD22) 19.10.16 17:09
А у вас на сколько стабильно механизм обновлений работает?
Получается что если обновление началось и не завершилось например из за выполнявшегося в этот момент фонового задания то в базу потом зайти не даёт. Зависает блокировка... В принципе мне можно не ставить блокировку. это нужно руками удалять файл блокировки что для рядового пользователя сложная задача. Ещё что нибудь не то удалит :)
4. Александр pira@pochta.ru (Pira) 27.10.16 15:38
(3) TODD22, Я пользуюсь в таких случаях батником, который запускает БД с ключем разрешения работы пользователей. По стабильности: В последнем обновлении пришлось подключаться к 6 магазинам из 48.
5. борян петров (TODD22) 27.10.16 17:52
Можно батник написать который удаляет файл блокировки из каталога с базой. Я думаю пойти по такому пути.

Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа