You've already forked oScript-Examples
mirror of
https://github.com/Stepa86/oScript-Examples.git
synced 2026-04-23 19:31:06 +02:00
Полный рефакторинг. Пока ничего не работает.
This commit is contained in:
Vendored
+64
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"version": "0.1.0",
|
||||
"command": "oscript",
|
||||
"isShellCommand": true,
|
||||
"showOutput": "silent",
|
||||
"args": [
|
||||
//"-encoding=utf-8"
|
||||
],
|
||||
"tasks": [
|
||||
{
|
||||
"taskName": "OneScript: compile",
|
||||
"args": [
|
||||
"-compile",
|
||||
"${file}"
|
||||
],
|
||||
"echoCommand": true,
|
||||
"showOutput": "always",
|
||||
"suppressTaskName": true,
|
||||
"isBuildCommand": false
|
||||
},
|
||||
{
|
||||
"taskName": "OneScript: check",
|
||||
"args": [
|
||||
"-check",
|
||||
"${file}"
|
||||
],
|
||||
"echoCommand": true,
|
||||
"showOutput": "always",
|
||||
"suppressTaskName": true,
|
||||
"isBuildCommand": false
|
||||
},
|
||||
{
|
||||
"taskName": "OneScript: make",
|
||||
"args": [
|
||||
"-make",
|
||||
"${file}",
|
||||
"${fileBasename}.exe"
|
||||
],
|
||||
"echoCommand": true,
|
||||
"showOutput": "always",
|
||||
"suppressTaskName": true,
|
||||
"isBuildCommand": false
|
||||
},
|
||||
{
|
||||
"taskName": "OneScript: run",
|
||||
"args": [
|
||||
"${file}"
|
||||
],
|
||||
"echoCommand": true,
|
||||
"showOutput": "always",
|
||||
"suppressTaskName": true,
|
||||
"isBuildCommand": true,
|
||||
"problemMatcher": {
|
||||
"fileLocation": "absolute",
|
||||
"pattern": {
|
||||
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
|
||||
"file": 1,
|
||||
"location": 2,
|
||||
"message": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+149
-118
@@ -1,5 +1,4 @@
|
||||
#Использовать cmdline
|
||||
#Использовать 1commands
|
||||
#Использовать logos
|
||||
#Использовать json
|
||||
#Использовать v8runner
|
||||
@@ -7,6 +6,7 @@
|
||||
#Использовать "."
|
||||
|
||||
Перем фЛог;
|
||||
Перем фЗамер;
|
||||
|
||||
// Получить имя лога продукта
|
||||
//
|
||||
@@ -17,20 +17,6 @@
|
||||
Возврат "oscript.app.CopyBase";
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьТекстИзФайла( Знач пИмяФайла )
|
||||
|
||||
файлОбмена = Новый Файл(пИмяФайла);
|
||||
Данные = "";
|
||||
Если файлОбмена.Существует() Тогда
|
||||
чтениеТекста = Новый ЧтениеТекста(пИмяФайла, КодировкаТекста.UTF8);
|
||||
данные = чтениеТекста.Прочитать();
|
||||
чтениеТекста.Закрыть();
|
||||
Иначе
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
возврат данные;
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьПараметры( Знач пАргументы )
|
||||
|
||||
Парсер = Новый ПарсерАргументовКоманднойСтроки();
|
||||
@@ -102,151 +88,196 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ФайлСуществует( Знач пИмяФайла )
|
||||
|
||||
файл = Новый Файл( пИмяФайла );
|
||||
|
||||
Возврат файл.Существует();
|
||||
|
||||
КонецФункции
|
||||
Функция Инициализация( Знач пАргументы )
|
||||
|
||||
Функция ОбернутьВКавычки(Знач Строка);
|
||||
Если Лев(Строка, 1) = """" и Прав(Строка, 1) = """" Тогда
|
||||
Возврат Строка;
|
||||
Иначе
|
||||
Возврат """" + Строка + """";
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
Процедура ВыполнитьКоманду(Знач пАргументы)
|
||||
фЗамер = Новый Замер();
|
||||
|
||||
замер = Новый Замер;
|
||||
фЗамер.НачатьЗамер();
|
||||
|
||||
замер.НачатьЗамер();
|
||||
|
||||
замер.НачатьЗамер( "РазборПараметров" );
|
||||
фЗамер.НачатьЗамер( "РазборПараметров" );
|
||||
|
||||
параметры = ПолучитьПараметры( пАргументы );
|
||||
|
||||
замер.СообщитьЗамер( "Параметры получены" );
|
||||
фЗамер.СообщитьЗамер( "Параметры получены" );
|
||||
|
||||
Возврат параметры;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ВыполнитьБекап( Знач пПараметры )
|
||||
|
||||
Если Не пПараметры["Source_SQL.UseBackup"] = Истина Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
фЗамер.НачатьЗамер( "Бекап" );
|
||||
|
||||
выполнениеБекапа = Новый РаботаСSQL();
|
||||
|
||||
Если фЛог.Уровень() = УровниЛога.Отладка Тогда
|
||||
|
||||
логКомандыЗапуска = Логирование.ПолучитьЛог(РаботаСSQL.ИмяЛога());
|
||||
логКомандыЗапуска.УстановитьУровень(УровниЛога.Отладка);
|
||||
логSQL = Логирование.ПолучитьЛог(выполнениеБекапа.ИмяЛога());
|
||||
логSQL.УстановитьУровень( УровниЛога.Отладка );
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если параметры["Source_SQL.UseBackup"] = Истина Тогда
|
||||
выполнениеБекапа.УстановитьСервер( пПараметры["Source_SQL.Server"] );
|
||||
выполнениеБекапа.УстановитьПользователя( пПараметры["Source_SQL.User"] );
|
||||
выполнениеБекапа.УстановитьПароль( пПараметры["Source_SQL.Password"] );
|
||||
выполнениеБекапа.УстановитьИмяБазы( пПараметры["Source_SQL.Base"] );
|
||||
|
||||
результат = выполнениеБекапа.ВыполнитьБекап( пПараметры["FileBackup"] );
|
||||
|
||||
Если Не результат Тогда
|
||||
ЗавершитьРаботу(1);
|
||||
КонецЕсли;
|
||||
|
||||
фЗамер.СообщитьЗамер( "Выполнен бекап");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВыполнитьВосстановление( Знач пПараметры )
|
||||
|
||||
Если Не пПараметры["Current_SQL.UseRestore"] = Истина Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
фЗамер.НачатьЗамер( "Восстановление" );
|
||||
|
||||
выполнениеВосстановления = Новый РаботаСSQL();
|
||||
|
||||
Если фЛог.Уровень() = УровниЛога.Отладка Тогда
|
||||
|
||||
замер.НачатьЗамер( "Бекап" );
|
||||
логSQL = Логирование.ПолучитьЛог(выполнениеВосстановления.ИмяЛога());
|
||||
логSQL.УстановитьУровень( УровниЛога.Отладка );
|
||||
|
||||
результат = РаботаСSQL.ВыполнитьБекап( параметры["Source_SQL.Server"], параметры["Source_SQL.User"], параметры["Source_SQL.Password"], параметры["Source_SQL.Base"], параметры["FileBackup"] );
|
||||
КонецЕсли;
|
||||
|
||||
выполнениеВосстановления.УстановитьСервер( пПараметры["Current_SQL.Server"] );
|
||||
выполнениеВосстановления.УстановитьПользователя( пПараметры["Current_SQL.User"] );
|
||||
выполнениеВосстановления.УстановитьПароль( пПараметры["Current_SQL.Password"] );
|
||||
выполнениеВосстановления.УстановитьИмяБазы( пПараметры["Current_SQL.Base"] );
|
||||
|
||||
результат = выполнениеВосстановления.ВыполнитьСкрипт( пПараметры["Script_Restore"] );
|
||||
|
||||
Если Не результат Тогда
|
||||
ЗавершитьРаботу(1);
|
||||
КонецЕсли;
|
||||
|
||||
фЗамер.СообщитьЗамер( "Выполнено восстановление");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УдалитьФайлБекапа( Знач пПараметры )
|
||||
|
||||
Если Не пПараметры["Current_SQL.DelBackup"] = Истина Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
фЗамер.НачатьЗамер( "УдалениеБекапа" );
|
||||
|
||||
Если ФайлСуществует( пПараметры["FileBackup"] ) Тогда
|
||||
|
||||
Если Не результат Тогда
|
||||
ЗавершитьРаботу(1);
|
||||
КонецЕсли;
|
||||
|
||||
замер.СообщитьЗамер( "Выполнен бекап");
|
||||
УдалитьФайлы( пПараметры["FileBackup"] );
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если параметры["Current_SQL.UseRestore"] = Истина Тогда
|
||||
|
||||
замер.НачатьЗамер( "Восстановление" );
|
||||
|
||||
результат = РаботаСSQL.ВыполнитьСкрипт( параметры["Current_SQL.Server"], параметры["Current_SQL.User"], параметры["Current_SQL.Password"], параметры["Current_SQL.Base"], параметры["Script_Restore"] );
|
||||
|
||||
Если Не результат Тогда
|
||||
ЗавершитьРаботу(1);
|
||||
КонецЕсли;
|
||||
|
||||
замер.СообщитьЗамер( "Выполнено восстановление");
|
||||
|
||||
фЗамер.СообщитьЗамер( "Удален бекап" );
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПереподключитьХранилище( Знач пПараметры)
|
||||
|
||||
Если Не пПараметры["Current_Repo.Blind"] = Истина Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если параметры["Current_SQL.DelBackup"] = Истина Тогда
|
||||
фЗамер.НачатьЗамер( "ОтключениеОтХранилища" );
|
||||
|
||||
Конфигуратор = Новый УправлениеКонфигуратором;
|
||||
|
||||
Если фЛог.Уровень() = УровниЛога.Отладка Тогда
|
||||
|
||||
замер.НачатьЗамер( "УдалениеБекапа" );
|
||||
|
||||
Если ФайлСуществует( параметры["FileBackup"] ) Тогда
|
||||
|
||||
УдалитьФайлы( параметры["FileBackup"] );
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
замер.СообщитьЗамер( "Удален бекап" );
|
||||
логSQL = Логирование.ПолучитьЛог(Конфигуратор.ИмяЛога());
|
||||
логSQL.УстановитьУровень( УровниЛога.Отладка );
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Конфигуратор.УстановитьКонтекст(пПараметры["Current_Base.Connect"], пПараметры["Current_Base.User"], пПараметры["Current_Base.Password"]);
|
||||
Конфигуратор.ПутьКПлатформе1С( пПараметры["EXE1CV8"] );
|
||||
|
||||
Если параметры["Current_Repo.Blind"] = Истина Тогда
|
||||
Если ЗначениеЗаполнено( пПараметры["Current_Base.EPF"] )
|
||||
И ФайлСуществует( пПараметры["Current_Base.EPF"] ) Тогда
|
||||
|
||||
замер.НачатьЗамер( "ОтключениеОтХранилища" );
|
||||
фЗамер.НачатьЗамер( "ВыполнениеОбработки" );
|
||||
|
||||
Конфигуратор = Новый УправлениеКонфигуратором;
|
||||
Конфигуратор.УстановитьКонтекст(параметры["Current_Base.Connect"], параметры["Current_Base.User"], параметры["Current_Base.Password"]);
|
||||
Конфигуратор.ПутьКПлатформе1С( параметры["EXE1CV8"] );
|
||||
ДополнительныеКлючи = "/Execute" + ОбщегоНазначения.ОбернутьВКавычки( пПараметры["Current_Base.EPF"] );
|
||||
|
||||
Если ЗначениеЗаполнено( параметры["Current_Base.EPF"] )
|
||||
И ФайлСуществует( параметры["Current_Base.EPF"] ) Тогда
|
||||
|
||||
замер.НачатьЗамер( "ВыполнениеОбработки" );
|
||||
|
||||
ДополнительныеКлючи = "/Execute"+ОбернутьВКавычки(параметры["Current_Base.EPF"]);
|
||||
|
||||
Конфигуратор.ЗапуститьВРежимеПредприятия("", Неопределено, ДополнительныеКлючи);
|
||||
Текст = Конфигуратор.ВыводКоманды();
|
||||
Если Не ПустаяСтрока(Текст) Тогда
|
||||
фЛог.Информация(Текст);
|
||||
КонецЕсли;
|
||||
|
||||
замер.СообщитьЗамер( "Выполнена обработка" );
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
замер.НачатьЗамер( "ОтключениеОтХранилища" );
|
||||
|
||||
Конфигуратор.ОтключитьсяОтХранилища();
|
||||
Конфигуратор.ЗапуститьВРежимеПредприятия("", Неопределено, ДополнительныеКлючи);
|
||||
Текст = Конфигуратор.ВыводКоманды();
|
||||
Если Не ПустаяСтрока(Текст) Тогда
|
||||
фЛог.Информация(Текст);
|
||||
КонецЕсли;
|
||||
|
||||
замер.СообщитьЗамер( "Отключено от хранилища" );
|
||||
замер.СообщитьЗамер( "Выполнена обработка" );
|
||||
|
||||
замер.НачатьЗамер( "ПодключениеКХранилищу" );
|
||||
КонецЕсли;
|
||||
|
||||
фЗамер.НачатьЗамер( "ОтключениеОтХранилища" );
|
||||
|
||||
Конфигуратор.ОтключитьсяОтХранилища();
|
||||
Текст = Конфигуратор.ВыводКоманды();
|
||||
Если Не ПустаяСтрока(Текст) Тогда
|
||||
фЛог.Информация(Текст);
|
||||
КонецЕсли;
|
||||
|
||||
фЗамер.СообщитьЗамер( "Отключено от хранилища" );
|
||||
|
||||
фЗамер.НачатьЗамер( "ПодключениеКХранилищу" );
|
||||
|
||||
Конфигуратор.ПодключитьсяКХранилищу(пПараметры["Current_Repo.Connect"], пПараметры["Current_Repo.User"], пПараметры["Current_Repo.Password"], Истина );
|
||||
Текст = Конфигуратор.ВыводКоманды();
|
||||
Если Не ПустаяСтрока(Текст) Тогда
|
||||
фЛог.Информация(Текст);
|
||||
КонецЕсли;
|
||||
|
||||
замер.СообщитьЗамер( "Подключено к хранилищу" );
|
||||
|
||||
Если пПараметры["Current_Repo.UpdateCfg"] Тогда
|
||||
|
||||
Конфигуратор.ПодключитьсяКХранилищу(параметры["Current_Repo.Connect"], параметры["Current_Repo.User"], параметры["Current_Repo.Password"], Истина );
|
||||
замер.НачатьЗамер( "ОбновлениеКонфигурации" );
|
||||
|
||||
Конфигуратор.ОбновитьКонфигурациюБазыДанныхИзХранилища(пПараметры["Current_Repo.Connect"], пПараметры["Current_Repo.User"], пПараметры["Current_Repo.Password"] );
|
||||
Текст = Конфигуратор.ВыводКоманды();
|
||||
Если Не ПустаяСтрока(Текст) Тогда
|
||||
фЛог.Информация(Текст);
|
||||
КонецЕсли;
|
||||
|
||||
замер.СообщитьЗамер( "Подключено к хранилищу" );
|
||||
|
||||
Если параметры["Current_Repo.UpdateCfg"] Тогда
|
||||
|
||||
замер.НачатьЗамер( "ОбновлениеКонфигурации" );
|
||||
|
||||
Конфигуратор.ОбновитьКонфигурациюБазыДанныхИзХранилища(параметры["Current_Repo.Connect"], параметры["Current_Repo.User"], параметры["Current_Repo.Password"] );
|
||||
Текст = Конфигуратор.ВыводКоманды();
|
||||
Если Не ПустаяСтрока(Текст) Тогда
|
||||
фЛог.Информация(Текст);
|
||||
КонецЕсли;
|
||||
|
||||
замер.СообщитьЗамер( "Конфигурация обновлена" );
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
файлИнформаци = Конфигуратор.ФайлИнформации();
|
||||
|
||||
Если ФайлСуществует( файлИнформаци ) Тогда
|
||||
УдалитьФайлы( файлИнформаци );
|
||||
КонецЕсли;
|
||||
замер.СообщитьЗамер( "Конфигурация обновлена" );
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
замер.СообщитьЗавершение();
|
||||
файлИнформаци = Конфигуратор.ФайлИнформации();
|
||||
|
||||
Если ФайлСуществует( файлИнформаци ) Тогда
|
||||
УдалитьФайлы( файлИнформаци );
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВыполнитьКоманду(Знач пАргументы)
|
||||
|
||||
параметры = Инициализация( пАргументы );
|
||||
|
||||
ВыполнитьБекап( параметры );
|
||||
|
||||
ВыполнитьВосстановление( параметры );
|
||||
|
||||
УдалитьФайлБекапа( параметры );
|
||||
|
||||
ПереподключитьХранилище( параметры );
|
||||
|
||||
фЗамер.СообщитьЗавершение();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -0,0 +1,188 @@
|
||||
#Использовать 1commands
|
||||
#Использовать logos
|
||||
|
||||
Перем фСервер;
|
||||
Перем фПользователь;
|
||||
Перем фПароль;
|
||||
Перем фИмяБазы;
|
||||
|
||||
Перем фВыводКоманды;
|
||||
|
||||
Перем фЛог;
|
||||
|
||||
// Получить имя лога продукта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - имя лога продукта
|
||||
//
|
||||
Функция ИмяЛога() Экспорт
|
||||
Возврат "oscript.app.РаботаСSQL";
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьСервер( Знач пСервер ) Экспорт
|
||||
фСервер = пСервер;
|
||||
фЛог.Отладка( "Установлен сервер: " + фСервер );
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьПользователя( Знач пПользователь ) Экспорт
|
||||
фПользователь = пПользователь;
|
||||
фЛог.Отладка( "Установлен пользователь: " + фПользователь );
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьПароль( Знач пПароль ) Экспорт
|
||||
фПароль = пПароль;
|
||||
Если фПароль = "" Тогда
|
||||
фЛог.Отладка( "Установлен пароль: " );
|
||||
Иначе
|
||||
фЛог.Отладка( "Установлен пароль" );
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьИмяБазы( Знач пИмяБазы ) Экспорт
|
||||
фИмяБазы = пИмяБазы;
|
||||
фЛог.Отладка( "Установлен сервер " + фИмяБазы );
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПроверитьЗаполнение( Знач пПроверятьИмяБазы )
|
||||
|
||||
отказ = Ложь;
|
||||
|
||||
Если Не ЗначениеЗаполнено( фСервер ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Сервер не указан" );
|
||||
отказ = Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено( фПользователь ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Пользователь не указан" );
|
||||
отказ = Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если пПроверятьИмяБазы
|
||||
И Не ЗначениеЗаполнено( фИмяБазы ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Имя базы для бекапа не указано" );
|
||||
отказ = Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Не отказ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьБекап( Знач пИмяФайлаБекапа ) Экспорт
|
||||
|
||||
отказ = Ложь;
|
||||
|
||||
Если Не ПроверитьЗаполнение( Истина ) Тогда
|
||||
отказ = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено( пИмяФайлаБекапа ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Файл для бекапа не указан" );
|
||||
отказ = Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если отказ Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
параметрСТекстомЗапроса = "-Q""" + ТекстЗапроса_ВыполнитьБекап( фИмяБазы, пИмяФайлаБекапа ) + """";
|
||||
|
||||
Возврат ВыполнитьЧерезSQLCMD( параметрСТекстомЗапроса );
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьКоличествоСоединений() Экспорт
|
||||
|
||||
Если Не ПроверитьЗаполнение( Истина ) Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
//параметрСТекстомЗапроса = "-Q""" + ТекстЗапроса_ВыполнитьБекап( фИмяБазы, пИмяФайлаБекапа ) + """";
|
||||
|
||||
//Возврат ВыполнитьЧерезSQLCMD( параметрСТекстомЗапроса );
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьСкрипт( Знач пИмяФайлаСкрипта ) Экспорт
|
||||
|
||||
отказ = Ложь;
|
||||
|
||||
Если Не ПроверитьЗаполнение( Истина ) Тогда
|
||||
отказ = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено( пИмяФайлаСкрипта ) Тогда
|
||||
фЛог.Ошибка( "Файл скрипта не указан" );
|
||||
отказ = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Если отказ Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
текстЗапроса = ОбщегоНазначения.ПолучитьТекстИзФайла( пИмяФайлаСкрипта );
|
||||
|
||||
Если текстЗапроса = Ложь Тогда
|
||||
фЛог.Ошибка( "Не удалось прочитать текст запроса из " + пИмяФайлаСкрипта );
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
параметрСТекстомЗапроса = "-i """ + пИмяФайлаСкрипта + """";
|
||||
|
||||
Возврат ВыполнитьЧерезSQLCMD(параметрСТекстомЗапроса);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыводКоманды() Экспорт
|
||||
Возврат фВыводКоманды;
|
||||
КонецФункции
|
||||
|
||||
Функция ТекстЗапроса_ВыполнитьБекап( Знач пИмяФайла)
|
||||
|
||||
шаблонЗапросБекапа = "BACKUP DATABASE [%1] TO DISK = N'%2' WITH NOFORMAT, INIT, NAME = N'%1 FULL Backup', SKIP, NOREWIND, NOUNLOAD,COMPRESSION, STATS = 10";
|
||||
Возврат СтрШаблон( шаблонЗапросБекапа, фИмяБазы, пИмяФайла);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьЧерезSQLCMD( Знач пПараметрСТекстомЗапроса )
|
||||
|
||||
командаЗапуска = Новый Команда;
|
||||
|
||||
Если фЛог.Уровень() = УровниЛога.Отладка Тогда
|
||||
|
||||
логКомандыЗапуска = Логирование.ПолучитьЛог(командаЗапуска.ИмяЛога());
|
||||
логКомандыЗапуска.УстановитьУровень(УровниЛога.Отладка);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
командаЗапуска.УстановитьКоманду("sqlcmd");
|
||||
командаЗапуска.ДобавитьПараметр("-S" + фСервер);
|
||||
командаЗапуска.ДобавитьПараметр("-U" + фПользователь);
|
||||
командаЗапуска.ДобавитьПараметр("-P" + фПароль);
|
||||
командаЗапуска.ДобавитьПараметр( пПараметрСТекстомЗапроса );
|
||||
командаЗапуска.ДобавитьПараметр("-b");
|
||||
|
||||
командаЗапуска.УстановитьИсполнениеЧерезКомандыСистемы( Ложь );
|
||||
|
||||
кодВозврата = командаЗапуска.Исполнить();
|
||||
|
||||
Если КодВозврата = 0 Тогда
|
||||
фВыводКоманды = командаЗапуска.ПолучитьВывод();
|
||||
Иначе
|
||||
фЛог.Ошибка(командаЗапуска.ПолучитьВывод());
|
||||
КонецЕсли;
|
||||
|
||||
Возврат кодВозврата = 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
фЛог = Логирование.ПолучитьЛог(ИмяЛога());
|
||||
фВыводКоманды = "";
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
|
||||
Функция ПолучитьТекстИзФайла( Знач пИмяФайла ) Экспорт
|
||||
|
||||
файлОбмена = Новый Файл(пИмяФайла);
|
||||
прочитанныйТекст = "";
|
||||
Если файлОбмена.Существует() Тогда
|
||||
чтениеТекста = Новый ЧтениеТекста(пИмяФайла, КодировкаТекста.UTF8);
|
||||
прочитанныйТекст = чтениеТекста.Прочитать();
|
||||
чтениеТекста.Закрыть();
|
||||
Иначе
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
возврат прочитанныйТекст;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ФайлСуществует( Знач пИмяФайла ) Экспорт
|
||||
|
||||
файл = Новый Файл( пИмяФайла );
|
||||
|
||||
Возврат файл.Существует();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОбернутьВКавычки(Знач пСтрока) Экспорт
|
||||
Если Лев(пСтрока, 1) = """" и Прав(пСтрока, 1) = """" Тогда
|
||||
Возврат пСтрока;
|
||||
Иначе
|
||||
Возврат """" + пСтрока + """";
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
@@ -1,175 +0,0 @@
|
||||
#Использовать cmdline
|
||||
#Использовать 1commands
|
||||
#Использовать logos
|
||||
|
||||
Перем фЛог;
|
||||
|
||||
// Получить имя лога продукта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - имя лога продукта
|
||||
//
|
||||
Функция ИмяЛога() Экспорт
|
||||
Возврат "oscript.app.ExecQuery_SQLCMD";
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьБекап( Знач пСервер, Знач пПользователь, Знач пПароль = "", Знач пИмяБазы, Знач пИмяФайлаБекапа ) Экспорт
|
||||
|
||||
Если Не ЗначениеЗаполнено( пСервер ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Сервер не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено( пПользователь ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Пользователь не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено( пИмяФайлаБекапа ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Файл для бекапа не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено( пИмяБазы ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Файл для бекапа не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
параметрСТекстомЗапроса = "-Q""" + ТекстЗапроса_ВыполнитьБекап( пИмяБазы, пИмяФайлаБекапа ) + """";
|
||||
|
||||
Возврат ВыполнитьЧерезSQLCMD(пСервер, пПользователь, пПароль, пИмяБазы, параметрСТекстомЗапроса);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьСкрипт( Знач пСервер, Знач пПользователь, Знач пПароль = "", Знач пИмяБазы, Знач пИмяФайлаСкрипта ) Экспорт
|
||||
|
||||
Если Не ЗначениеЗаполнено( пСервер ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Сервер не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено( пПользователь ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Пользователь не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено( пИмяФайлаСкрипта ) Тогда
|
||||
|
||||
фЛог.Ошибка( "Файл скрипта не указан" );
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
текстЗапроса = ПолучитьТекстИзФайла( пИмяФайлаСкрипта );
|
||||
|
||||
Если текстЗапроса = Ложь Тогда
|
||||
фЛог.Ошибка( "Не удалось прочитать текст запроса из " + пИмяФайлаСкрипта );
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
параметрСТекстомЗапроса = "-i """ + пИмяФайлаСкрипта + """";
|
||||
|
||||
Возврат ВыполнитьЧерезSQLCMD(пСервер, пПользователь, пПароль, пИмяБазы, параметрСТекстомЗапроса);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьТекстИзФайла( Знач пИмяФайла )
|
||||
|
||||
файлОбмена = Новый Файл(пИмяФайла);
|
||||
Данные = "";
|
||||
Если файлОбмена.Существует() Тогда
|
||||
чтениеТекста = Новый ЧтениеТекста(пИмяФайла, КодировкаТекста.UTF8);
|
||||
данные = чтениеТекста.Прочитать();
|
||||
чтениеТекста.Закрыть();
|
||||
Иначе
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
возврат данные;
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьПараметрСТекстомЗапроса( Знач пПараметры )
|
||||
|
||||
Если ВРег( пПараметры["Команда"]) = ВРег("backup") Тогда
|
||||
|
||||
шаблонЗапросБекапа = "BACKUP DATABASE [%1] TO DISK = N'%2' WITH NOFORMAT, INIT, NAME = N'%1 FULL Backup', SKIP, NOREWIND, NOUNLOAD,COMPRESSION, STATS = 10";
|
||||
текстЗапроса = СтрШаблон( шаблонЗапросБекапа, пПараметры["ИмяБазы"], пПараметры["ПутьКФайлу"]);
|
||||
|
||||
параметрСТекстомЗапроса = "-Q""" + текстЗапроса + """";
|
||||
|
||||
ИначеЕсли ВРег( пПараметры["Команда"]) = ВРег("execQuery") Тогда
|
||||
|
||||
текстЗапроса = ПолучитьТекстИзФайла( пПараметры["ПутьКФайлу"] );
|
||||
|
||||
Если текстЗапроса = Ложь Тогда
|
||||
фЛог.Ошибка( "Не удалось прочитать текст запроса из " + пПараметры["ПутьКФайлу"] );
|
||||
ЗавершитьРаботу(1);
|
||||
КонецЕсли;
|
||||
|
||||
параметрСТекстомЗапроса = "-i """ + пПараметры["ПутьКФайлу"] + """";
|
||||
|
||||
Иначе
|
||||
|
||||
фЛог.Ошибка( "Неизвестная команда " + пПараметры["Команда"] );
|
||||
фЛог.Ошибка( "Поддерживаются только команды backup и execQuery" );
|
||||
ЗавершитьРаботу(1)
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат параметрСТекстомЗапроса;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТекстЗапроса_ВыполнитьБекап( Знач пИмяБазы, Знач пИмяФайла)
|
||||
|
||||
шаблонЗапросБекапа = "BACKUP DATABASE [%1] TO DISK = N'%2' WITH NOFORMAT, INIT, NAME = N'%1 FULL Backup', SKIP, NOREWIND, NOUNLOAD,COMPRESSION, STATS = 10";
|
||||
Возврат СтрШаблон( шаблонЗапросБекапа, пИмяБазы, пИмяФайла);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьЧерезSQLCMD( Знач пСервер, Знач пПользователь, Знач пПароль, Знач пИмяБазы, Знач пПараметрСТекстомЗапроса )
|
||||
|
||||
командаЗапуска = Новый Команда;
|
||||
|
||||
Если фЛог.Уровень() = УровниЛога.Отладка Тогда
|
||||
|
||||
логКомандыЗапуска = Логирование.ПолучитьЛог(командаЗапуска.ИмяЛога());
|
||||
логКомандыЗапуска.УстановитьУровень(УровниЛога.Отладка);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
командаЗапуска.УстановитьКоманду("sqlcmd");
|
||||
командаЗапуска.ДобавитьПараметр("-S" + пСервер);
|
||||
командаЗапуска.ДобавитьПараметр("-U" + пПользователь);
|
||||
командаЗапуска.ДобавитьПараметр("-P" + пПароль);
|
||||
командаЗапуска.ДобавитьПараметр( пПараметрСТекстомЗапроса );
|
||||
командаЗапуска.ДобавитьПараметр("-b");
|
||||
|
||||
командаЗапуска.УстановитьИсполнениеЧерезКомандыСистемы( Ложь );
|
||||
|
||||
кодВозврата = командаЗапуска.Исполнить();
|
||||
|
||||
Если КодВозврата = 0 Тогда
|
||||
фЛог.Информация(командаЗапуска.ПолучитьВывод());
|
||||
Иначе
|
||||
фЛог.Ошибка("Код возврата: " + КодВозврата);
|
||||
фЛог.Ошибка(командаЗапуска.ПолучитьВывод());
|
||||
КонецЕсли;
|
||||
|
||||
Возврат кодВозврата = 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
фЛог = Логирование.ПолучитьЛог(ИмяЛога());
|
||||
|
||||
Reference in New Issue
Block a user