1
0
mirror of https://github.com/Stepa86/oScript-Examples.git synced 2026-04-23 19:31:06 +02:00

Полный рефакторинг. Пока ничего не работает.

This commit is contained in:
Антон Степанов
2017-02-11 21:16:56 +03:00
parent 954e5f5d2b
commit c150ccb91a
5 changed files with 432 additions and 293 deletions
+64
View File
@@ -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
View File
@@ -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"] );
Текст = Конфигуратор.ВыводКоманды();
Если Не ПустаяСтрока(Текст) Тогда
фЛог.Информация(Текст);
КонецЕсли;
замер.СообщитьЗамер( "Конфигурация обновлена" );
КонецЕсли;
файлИнформаци = Конфигуратор.ФайлИнформации();
Если ФайлСуществует( файлИнформаци ) Тогда
УдалитьФайлы( файлИнформаци );
КонецЕсли;
замер.СообщитьЗамер( "Конфигурация обновлена" );
КонецЕсли;
замер.СообщитьЗавершение();
файлИнформаци = Конфигуратор.ФайлИнформации();
Если ФайлСуществует( файлИнформаци ) Тогда
УдалитьФайлы( файлИнформаци );
КонецЕсли;
КонецПроцедуры
Процедура ВыполнитьКоманду(Знач пАргументы)
параметры = Инициализация( пАргументы );
ВыполнитьБекап( параметры );
ВыполнитьВосстановление( параметры );
УдалитьФайлБекапа( параметры );
ПереподключитьХранилище( параметры );
фЗамер.СообщитьЗавершение();
КонецПроцедуры
+188
View File
@@ -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) = """" Тогда
Возврат пСтрока;
Иначе
Возврат """" + пСтрока + """";
КонецЕсли;
КонецФункции
-175
View File
@@ -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;
КонецФункции
фЛог = Логирование.ПолучитьЛог(ИмяЛога());