Skip to content
КомандаОбновитьИзХранилища.os 5.86 KiB
Newer Older

///////////////////////////////////////////////////////////////////////////////////////////////////
// Прикладной интерфейс

Перем Лог;

Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт
	
	ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Обновить из хранилища подключенную базу");

	Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "СтрокаПодключения", "Строка подключения к рабочему контуру");
	Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "АдресХранилища", "Путь или сетевой адрес хранилища 1С");

	Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, 
		"-db-user",
		"Пользователь информационной базы");
	Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, 
		"-db-pwd",
		"Пароль пользователя информационной базы");

	Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, 
		"-storage-user",
		"Пользователь хранилища конфигурации");
	Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, 
		"-storage-pwd",
		"Пароль пользователя хранилища конфигурации");
	Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, 
		"-storage-ver",
		"Версия (номер) закладки в хранилище - необязательно");

    Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, 
    	"-v8version",
    	"Маска версии платформы 1С");

    Парсер.ДобавитьКоманду(ОписаниеКоманды);

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

Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт
    
	СтрокаПодключения = ПараметрыКоманды["СтрокаПодключения"];
	АдресХранилища    = ПараметрыКоманды["АдресХранилища"];
	ПользовательБазы  = ПараметрыКоманды["-db-user"];
	ПарольПользователяБазы  = ПараметрыКоманды["-db-pwd"];

	ПользовательХранилища       = ПараметрыКоманды["-storage-user"];
	ПарольПользователяХранилища = ПараметрыКоманды["-storage-pwd"];
	ВерсияХранилища             = ПараметрыКоманды["-storage-ver"];

	МаскаВерсии = ПараметрыКоманды["-v8version"];

	ВозможныйРезультат = МенеджерКомандПриложения.РезультатыКоманд();

	Если ПустаяСтрока(СтрокаПодключения) Тогда
		Лог.Ошибка("Не задана строка подключения к базе");
		Возврат ВозможныйРезультат.НеверныеПараметры;
	КонецЕсли;

	Если ПустаяСтрока(АдресХранилища) Тогда
		Лог.Ошибка("Не задана строка подключения к хранилищу");
		Возврат ВозможныйРезультат.НеверныеПараметры;
	КонецЕсли;

	Если ПустаяСтрока(ПользовательХранилища) Тогда
		Лог.Ошибка("Не задан пользователь хранилища");
		Возврат ВозможныйРезультат.НеверныеПараметры;
	КонецЕсли;

	Конфигуратор = ЗапускПриложений.НастроитьКонфигуратор(СтрокаПодключения, ПользовательБазы, ПарольПользователяБазы);
	Параметры = Конфигуратор.ПолучитьПараметрыЗапуска();

	Параметры.Добавить("/ConfigurationRepositoryF """+СтрокаПодключения+"""");
	Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+"""");

	Если Не ПустаяСтрока(ПарольПользователяХранилища) Тогда
		Параметры.Добавить("/ConfigurationRepositoryP """+ПарольПользователяХранилища+"""");
	КонецЕсли;

	Параметры.Добавить("/ConfigurationRepositoryUpdateCfg"); 
	Параметры.Добавить("-force");
	Если Не ПустаяСтрока(ВерсияХранилища) Тогда
		Параметры.Добавить("-v" + ВерсияХранилища);
	КонецЕсли;

	Попытка
		Конфигуратор.ВыполнитьКоманду(Параметры);
		Текст = Конфигуратор.ВыводКоманды();
		Если Не ПустаяСтрока(Текст) Тогда
			Лог.Информация(Текст);
		КонецЕсли;

		Возврат ВозможныйРезультат.Успех;
	Исключение
		Лог.Ошибка(Конфигуратор.ВыводКоманды());
		Возврат ВозможныйРезультат.ОшибкаВремениВыполнения;
	КонецПопытки;

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

Лог = Логирование.ПолучитьЛог("vanessa.app.deployka");