1
0
mirror of https://github.com/Stepa86/oScript-Examples.git synced 2026-06-18 17:25:16 +02:00

+Начало разработки скрипта по копированию базы. Уже умеет читать файл параметров

This commit is contained in:
Stepa86
2017-01-29 19:04:41 +03:00
parent 6c57343ff0
commit f1ef7b8397
2 changed files with 107 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
*.base_config
+106
View File
@@ -0,0 +1,106 @@
#Использовать cmdline
#Использовать 1commands
#Использовать logos
#Использовать json
Перем фЛог;
// Получить имя лога продукта
//
// Возвращаемое значение:
// Строка - имя лога продукта
//
Функция ИмяЛога() Экспорт
Возврат "oscript.app.CopyBase";
КонецФункции
Функция ПолучитьТекстИзФайла( Знач пИмяФайла )
файлОбмена = Новый Файл(пИмяФайла);
Данные = "";
Если файлОбмена.Существует() Тогда
чтениеТекста = Новый ЧтениеТекста(пИмяФайла, КодировкаТекста.UTF8);
данные = чтениеТекста.Прочитать();
чтениеТекста.Закрыть();
Иначе
Возврат Ложь;
КонецЕсли;
возврат данные;
КонецФункции
Функция ПолучитьПараметры( Знач пАргументы )
Парсер = Новый ПарсерАргументовКоманднойСтроки();
Парсер.ДобавитьПараметр("ПутьКФайлу");
Параметры = Парсер.Разобрать(пАргументы);
Если Не Параметры.Количество() = 1 Тогда
Сообщить("Должен быть передан 1 параметр - файл настроек.");
Сообщить("Например,");
Сообщить("oscript CopyBase.os g:\git\oScript-Examples\Configs\db111.base_config");
ЗавершитьРаботу(1);
КонецЕсли;
текстНастроек = ПолучитьТекстИзФайла(Параметры["ПутьКФайлу"]);
Если текстНастроек = Ложь Тогда
Сообщить("Переданный файл не найден или не является файлом настроек.");
Сообщить("Для создания файла воспользуйтесь обработкой _ПодготовкаНастроекДляБазы.epf");
ЗавершитьРаботу(1);
КонецЕсли;
ЧтениеJSON = Новый ПарсерJSON;
параметрыИзФайла = ЧтениеJSON.ПрочитатьJSON(текстНастроек,,,Истина);
прочитанныеПараметры = Новый Соответствие;
ПрочитатьПараметрыРекурсивно( параметрыИзФайла, прочитанныеПараметры );
Для каждого цЭлемент Из прочитанныеПараметры Цикл
фЛог.Отладка( "Прочитан параметр " + цЭлемент.Ключ + ": " + цЭлемент.Значение );
КонецЦикла;
Возврат прочитанныеПараметры;
КонецФункции
Процедура ПрочитатьПараметрыРекурсивно( Знач пПараметры, пПрочитенныеПараметры )
Для каждого цЭлемент Из пПараметры Цикл
Если ТипЗнч( цЭлемент.Значение ) = Тип("Структура")
ИЛИ ТипЗнч( цЭлемент.Значение ) = Тип("Соответствие") Тогда
ПрочитатьПараметрыРекурсивно( цЭлемент.Значение, пПрочитенныеПараметры );
Иначе
пПрочитенныеПараметры.Вставить( цЭлемент.Ключ, цЭлемент.Значение );
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ВыполнитьКоманду(Знач пАргументы)
параметры = ПолучитьПараметры( пАргументы );
КонецПроцедуры
фЛог = Логирование.ПолучитьЛог(ИмяЛога());
//фЛог.УстановитьУровень(УровниЛога.Предупреждение);
фЛог.УстановитьУровень(УровниЛога.Отладка);
ВыполнитьКоманду(АргументыКоманднойСтроки);