1
0
mirror of https://github.com/ret-Phoenix/SmartConfigurator.git synced 2026-06-16 00:57:28 +02:00
Files

112 lines
7.0 KiB
Markdown
Raw Permalink Normal View History

# ReadParams
Чтение параметров из json файла
## Чтение из файла
Читает параметры из файла json и возвращает соответствие параметров.
Параметры читаются рекурсивно, т.е. если в файле указана структура, в ней структура, а уже в ней п1 = 100, то в соответствии будет прочитанныеПараметры["п1"] = 100
### Пример из тестов 1. Чтение файла
```bsl
записьТекста = Новый ЗаписьТекста(файлПараметров);
ЗаписьТекста.ЗаписатьСтроку( "{""парам.Число"": 100, ""парам.Строка"": ""100"", ""парам.Булево"": true}" );
ЗаписьТекста.Закрыть();
ошибкиЧтения = Неопределено;
прочитанныеПараметры = ЧтениеПараметров.Прочитать( файлПараметров, ошибкиЧтения );
// ТипЗнч(прочитанныеПараметры) = Тип("Соответствие");
// прочитанныеПараметры.Количество() = 3;
// ТипЗнч(ошибкиЧтения) = Тип("Соответствие");
// ошибкиЧтения.Количество() = 0;
// прочитанныеПараметры["парам.Число"] = 100;
// прочитанныеПараметры["парам.Строка"] = "100";
// прочитанныеПараметры["парам.Булево"] = Истина;
```
Так же на вход можно подавать файл (Новый файл()) массив файлов, массив путей к файлам.
Если ничего не указывать в качестве пути, то будет прочитан файл **param_os.json** из текущего каталога.
### Пример из тестов 2. Чтение файла из текущего каталога
```
файлПараметров = ОбъединитьПути( ТекущийКаталог(), "param_os.json");
записьТекста = Новый ЗаписьТекста(файлПараметров);
ЗаписьТекста.ЗаписатьСтроку( "{""парам.Число"": 100, ""парам.Строка"": ""100"", ""парам.Булево"": true}" );
ЗаписьТекста.Закрыть();
прочитанныеПараметры = ЧтениеПараметров.Прочитать();
```
## Ссылки в переданном файле на другие файлы к чтению
Если указать в файле параметров имя параметра, которое начинается с **ReadFile**, а в значении путь к файлу (в том числе относительно этого файла), то будут прочитан так же и указанный файл.
### Пример из теста 3. Чтение файла с ссылками на другие файлы
```bsl
путь2 = ПутьВЗначениеJSON( ОбъединитьПути(".", "testParam2.json") );
путь3 = ПутьВЗначениеJSON( ОбъединитьПути(".", "testParam3.json") );
записьТекста = Новый ЗаписьТекста(файлПараметров1);
ЗаписьТекста.ЗаписатьСтроку( "{""парам.Число"": 1, ""парам.Строка"": ""1"", ""парам.Булево"": true, ""ReadFile"": """ + путь2 + """}" );
ЗаписьТекста.Закрыть();
записьТекста = Новый ЗаписьТекста(файлПараметров2);
ЗаписьТекста.ЗаписатьСтроку( "{""парам.Число2"": 2, ""парам.Строка2"": ""2"", ""парам.Булево2"": false, ""ReadFile"": """ + путь3 + """}" );
ЗаписьТекста.Закрыть();
записьТекста = Новый ЗаписьТекста(файлПараметров3);
ЗаписьТекста.ЗаписатьСтроку( "{""парам.Число"": 3, ""парам.Строка"": ""3""}" );
ЗаписьТекста.Закрыть();
прочитанныеПараметры = ЧтениеПараметров.Прочитать( файлПараметров1 );
// прочитанныеПараметры["парам.Число"] = 3;
// прочитанныеПараметры["парам.Строка"] = "3";
// прочитанныеПараметры["парам.Булево"] = Истина;
// прочитанныеПараметры["парам.Число2"] = 2;
// прочитанныеПараметры["парам.Строка2"] = "2";
// прочитанныеПараметры["парам.Булево2"] = Ложь;
// прочитанныеПараметры["ReadFile"] = ОбъединитьПути(".", "testParam3.json");
```
## Подстановки в параметрах
Если для какого-либо параметра в качестве значения используется шаблон %ИмяПараметра%, то в прочитанных параметрах будет предпринята попытка подменить этот шаблон на соответствующее значение
### Пример из тестов 4. Использование подстановки
```bsl
записьТекста = Новый ЗаписьТекста(файлПараметров);
ЗаписьТекста.ЗаписатьСтроку( "{""парам.Число"": 100,
|""парам.Подстановка1"": ""999+%парам.Число%+%парам.Число%"",
|""парам.Подстановка2"": ""0+%парам.Подстановка1%+%парам.Число%""
|}" );
ЗаписьТекста.Закрыть();
прочитанныеПараметры = ЧтениеПараметров.Прочитать( файлПараметров );
// прочитанныеПараметры["парам.Число"] = 100;
// прочитанныеПараметры["парам.Подстановка1"] = "999+100+100";
// прочитанныеПараметры["парам.Подстановка2"] "0+999+100+100+100";
```
## Обработка ошибок
Модуль не генерирует исключений и не выводит никаких сообщений. Если переданный файл не удалось прочитать или распарсить, то ошибка об этом вернется вторым параметром **ошибкиЧтения**. Это соответствие, где ключ - путь к файлу, значение - описание ошибки.
# Примеры использования
[ОСкрипты для деплоя и копирования базы данных](http://infostart.ru/public/617478/) и они [же на github](https://github.com/Stepa86/1C-Deploy-and-CopyDB)