From f1ef7b83978756bd83a1148640d995d70ff51aae Mon Sep 17 00:00:00 2001 From: Stepa86 Date: Sun, 29 Jan 2017 19:04:41 +0300 Subject: [PATCH] =?UTF-8?q?+=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=D0=BE=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20=D1=81?= =?UTF-8?q?=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D0=B0=20=D0=BF=D0=BE=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BF=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8E=20?= =?UTF-8?q?=D0=B1=D0=B0=D0=B7=D1=8B.=20=D0=A3=D0=B6=D0=B5=20=D1=83=D0=BC?= =?UTF-8?q?=D0=B5=D0=B5=D1=82=20=D1=87=D0=B8=D1=82=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + src/CopyBase.os | 106 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 .gitignore create mode 100644 src/CopyBase.os diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..062fdaf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.base_config diff --git a/src/CopyBase.os b/src/CopyBase.os new file mode 100644 index 0000000..70eba93 --- /dev/null +++ b/src/CopyBase.os @@ -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(текстНастроек,,,Истина); + + прочитанныеПараметры = Новый Соответствие; + + ПрочитатьПараметрыРекурсивно( параметрыИзФайла, прочитанныеПараметры ); + + Для каждого цЭлемент Из прочитанныеПараметры Цикл + + фЛог.Отладка( "Прочитан параметр " + цЭлемент.Ключ + ": " + цЭлемент.Значение ); + + КонецЦикла; + + Возврат прочитанныеПараметры; + +КонецФункции + +Процедура ПрочитатьПараметрыРекурсивно( Знач пПараметры, пПрочитенныеПараметры ) + + Для каждого цЭлемент Из пПараметры Цикл + + Если ТипЗнч( цЭлемент.Значение ) = Тип("Структура") + ИЛИ ТипЗнч( цЭлемент.Значение ) = Тип("Соответствие") Тогда + + ПрочитатьПараметрыРекурсивно( цЭлемент.Значение, пПрочитенныеПараметры ); + + Иначе + + пПрочитенныеПараметры.Вставить( цЭлемент.Ключ, цЭлемент.Значение ); + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура ВыполнитьКоманду(Знач пАргументы) + + параметры = ПолучитьПараметры( пАргументы ); + +КонецПроцедуры + +фЛог = Логирование.ПолучитьЛог(ИмяЛога()); +//фЛог.УстановитьУровень(УровниЛога.Предупреждение); +фЛог.УстановитьУровень(УровниЛога.Отладка); + +ВыполнитьКоманду(АргументыКоманднойСтроки); \ No newline at end of file