diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..cf913fc --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +// Place your settings in this file to overwrite default and user settings. +{ + "files.associations": { + "packagedef" : "bsl" + }, + "editor.rulers": [ 120 ] +} \ No newline at end of file diff --git a/.vscode/spell.json b/.vscode/spell.json new file mode 100644 index 0000000..98dae49 --- /dev/null +++ b/.vscode/spell.json @@ -0,0 +1,32 @@ +{ + "ignoreWordsList": [ + "cmdline", + "tempfiles", + "json", + "xunit", + "vanessa", + "compilecurrent", + "decompilecurrent", + "decompile", + "compilediff", + "decompileext", + "compileext", + "loadext", + "loadrepo", + "decompileepf", + "compileepf", + "updatedb", + "convertfiles", + "Конфигуратор", + "Неопределено", + "Нрег", + "Врег", + "Парсер", + "Json" + ], + "ignoreRegExp": [ + "/\\(.*\\.(jpg|jpeg|png|md|gif|JPG|JPEG|PNG|MD|GIF)\\)/g", + "/((http|https|ftp|git)\\S*)/g", + "/--[А-яA-z-]{1,}/g" + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..26e307a --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,242 @@ +// Available variables which can be used inside of strings. +// ${workspaceRoot}: the root folder of the team +// ${file}: the current opened file +// ${fileBasename}: the current opened file's basename +// ${fileDirname}: the current opened file's dirname +// ${fileExtname}: the current opened file's extension +// ${cwd}: the current working directory of the spawned process + +{ + "version": "2.0.0", + "_runner": "terminal", + "windows": { + "command": "cmd", + "args": ["/c", "chcp 65001 ;"] + }, + "linux": { + "command": "sh", + "args": ["-c"] + }, + "isShellCommand": true, + // "showOutput": "silent", + "_runner": "terminal", + "tasks": [ + { + "taskName": "Testing project", + "args": [ + "1testrunner", + "-runall", + "${workspaceRoot}/tests" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + // "isBuildCommand": false, + "isTestCommand": false, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": { + "regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)", + "file": 1, + "location": 2, + "message": 3 + } + } + }, + { + "taskName": "Testing current test-file", + "args": [ + "1testrunner", + "-run", + "${file}", + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false, + "isTestCommand": true, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": { + "regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)", + "file": 1, + "location": 2, + "message": 3 + } + } + }, + { + "taskName": "Exec all features", + "args": [ + "1bdd", + "${workspaceRoot}/features", + "-fail-fast", + "-out", + "${workspaceRoot}/exec.log" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": true, + "isTestCommand": false, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": { + "regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)", + "file": 1, + "location": 2, + "message": 3 + } + } + }, + { + "taskName": "Exec feature", + "args": [ + "1bdd", + "${file}", + "-fail-fast", + "-out", + "${workspaceRoot}/exec.log" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false, + "isTestCommand": true, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": [ + { + "regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)", + "file": 1, + "location": 2, + "message": 3 + } + ] + } + }, + { + "taskName": "Exec feature for current step def", + "args": [ + "1bdd", + "${fileDirname}/../${fileBasenameNoExtension}.feature", + "-fail-fast", + "-out", + "${workspaceRoot}/exec.log" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false, + "isTestCommand": true, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": [ + { + "regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)", + "file": 1, + "location": 2, + "message": 3 + } + ] + } + }, + { + "taskName": "Generate feature steps", + "args": [ + "1bdd", + "gen", + "${file}", + "-out", + "${workspaceRoot}/exec.log" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false, + "isTestCommand": false, + "problemMatcher": { + "fileLocation": "absolute", + "pattern": { + "regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)", + "file": 1, + "location": 2, + "message": 3 + } + } + }, + { + "taskName": "Opm: package build", + "args": [ + "opm", + "build", + "${workspaceRoot}" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false + }, + { + "taskName": "OneScript: compile", + "args": [ + "oscript", + "-encoding=utf-8", + "-compile", + "${file}" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false + }, + { + "taskName": "OneScript: check", + "args": [ + "oscript", + "-encoding=utf-8", + "-check", + "${file}" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false + }, + { + "taskName": "OneScript: make", + "args": [ + "oscript", + "-encoding=utf-8", + "-make", + "${file}", + "${fileBasename}.exe" + ], + "echoCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "isBuildCommand": false + }, + { + "taskName": "OneScript: run", + "args": [ + "oscript", + "-encoding=utf-8", + "${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 + } + } + } + ] +} \ No newline at end of file diff --git a/packagedef b/packagedef index c92bdf4..4a50f58 100644 --- a/packagedef +++ b/packagedef @@ -7,6 +7,7 @@ .ВерсияСреды("1.0.17") .Версия(ПараметрыСистемы_ЛокальнаяВерсия.ВерсияПродукта()) .ЗависитОт("logos", "0.6.2") + .ЗависитОт("1commands") .ЗависитОт("cmdline", "0.6.0") .ЗависитОт("tempfiles", "0.2.1") .ЗависитОт("asserts", "0.3.1") diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" index cdc594d..a0bbc92 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" @@ -1,11 +1,28 @@ #Использовать json +#Использовать asserts +#Использовать cmdline Перем ТекущийКаталогПроекта; Перем Лог; Перем СоответствиеПеременныхСреды; +Перем ПутьФайлаНастроекПоУмолчанию; #Область ПрограммныйИнтерфейс +Процедура ПриСозданииОбъекта(Знач НовыйПутьФайлаНастроек = "") + Если Не ЗначениеЗаполнено(НовыйПутьФайлаНастроек) Тогда + ПутьФайла = ОбъединитьПути(ТекущийКаталог(), ЧтениеПараметров.ИмяФайлаНастроекПоУмолчанию()); + ФайлПоУмолчанию = Новый Файл(ПутьФайла); + Если ФайлПоУмолчанию.Существует() Тогда + НовыйПутьФайлаНастроек = ПутьФайла; + КонецЕсли; + КонецЕсли; + + Если ЗначениеЗаполнено(НовыйПутьФайлаНастроек) Тогда + УстановитьФайлПоУмолчанию(НовыйПутьФайлаНастроек); + КонецЕсли; +КонецПроцедуры + // Выполнить основной анализ и получить финальные параметры с учетом командной строки, переменных среды, файлов настроек // // Параметры: @@ -21,50 +38,72 @@ // Возвращаемое значение: // <Соответствие> - итоговые параметры // -Функция Прочитать(Парсер, Знач Аргументы = Неопределено, Знач КлючФайлаНастроек = "", Знач ПрефиксПеременныхСреды = "") Экспорт - Если Аргументы = Неопределено Тогда - Аргументы = АргументыКоманднойСтроки; - КонецЕсли; - Если ПрефиксПеременныхСреды = "" Тогда - ПрефиксПеременныхСреды = ЧтениеПараметров.ПрефиксПеременныхОкружения(); - КонецЕсли; - Лог.Отладка("Использую префикс переменных окружения %1", ПрефиксПеременныхСреды); +Функция Прочитать(Парсер, Знач Аргументы = Неопределено, + Знач КлючФайлаНастроек = "", Знач ПрефиксПеременныхСреды = "") Экспорт - ТаблицаКоманд = Парсер.СправкаВозможныеКоманды(); - Если ТаблицаКоманд.Количество() = 0 Тогда - ТаблицаКоманд = Парсер.СправкаПоПараметрам(); - КонецЕсли; + Параметры = Неопределено; + + Попытка + + Если Аргументы = Неопределено Тогда + Аргументы = АргументыКоманднойСтроки; + КонецЕсли; + Если ПрефиксПеременныхСреды = "" Тогда + ПрефиксПеременныхСреды = ЧтениеПараметров.ПрефиксПеременныхОкружения(); + КонецЕсли; + Лог.Отладка("Использую префикс переменных окружения %1", ПрефиксПеременныхСреды); - СоответствиеПеременныхСреды = ПолучитьСоответствиеПеременныхСредыИзТаблицыКоманд(ТаблицаКоманд, ПрефиксПеременныхСреды); + ТаблицаКоманд = Парсер.СправкаВозможныеКоманды(); + Если ТаблицаКоманд.Количество() = 0 Тогда + ТаблицаКоманд = Парсер.СправкаПоПараметрам(); + КонецЕсли; - Параметры = Парсер.Разобрать(Аргументы); + НовоеСоответствиеПеременныхСреды = ПолучитьСоответствиеПеременныхСредыИзТаблицыКоманд(ТаблицаКоманд, + ПрефиксПеременныхСреды); - Если ТипЗнч(Параметры) = Тип("Структура") и Параметры.Свойство("Команда") Тогда - Команда = Параметры.Команда; - Параметры = Параметры.ЗначенияПараметров; - Лог.Отладка("Параметры команды %1 из командной строки, полученные от парсера cmdline:", Команда); - Иначе - Лог.Отладка("Параметры командной строки, полученные от парсера cmdline:"); - КонецЕсли; + Если Не ЗначениеЗаполнено(СоответствиеПеременныхСреды) Тогда + СоответствиеПеременныхСреды = НовоеСоответствиеПеременныхСреды; + Иначе + ДополнитьСоответствиеСУчетомПриоритета(СоответствиеПеременныхСреды, НовоеСоответствиеПеременныхСреды); - ПоказатьПараметрыВРежимеОтладки(Параметры); - - Если КлючФайлаНастроек = "" Тогда - КлючФайлаНастроек = ЧтениеПараметров.КлючФайлаНастроек(); - КонецЕсли; - Лог.Отладка("КлючФайлаНастроек <%1>", КлючФайлаНастроек); + Лог.Отладка("Коллекция переменных среды с соответствующими ключами-параметрами:"); + ПоказатьПараметрыВРежимеОтладки(СоответствиеПеременныхСреды); + КонецЕсли; - Если Не ЗначениеЗаполнено(ТекущийКаталогПроекта) Тогда - ТекущийКаталогПроекта = ТекущийКаталог(); - КонецЕсли; - Лог.Отладка("ТекущийКаталогПроекта <%1>", ТекущийКаталогПроекта); - - ДополнитьЗначенияПараметров(Параметры, Команда, КлючФайлаНастроек, СоответствиеПеременныхСреды); + Параметры = Парсер.Разобрать(Аргументы); - Параметры.Вставить("Команда", Команда); - - Лог.Отладка("Итоговые параметры:"); - ПоказатьПараметрыВРежимеОтладки(Параметры); + Если ТипЗнч(Параметры) = Тип("Структура") и Параметры.Свойство("Команда") Тогда + Команда = Параметры.Команда; + Параметры = Параметры.ЗначенияПараметров; + Лог.Отладка("Параметры команды %1 из командной строки, полученные от парсера cmdline:", Команда); + Иначе + Лог.Отладка("Параметры командной строки, полученные от парсера cmdline:"); + КонецЕсли; + + ПоказатьПараметрыВРежимеОтладки(Параметры); + + Если КлючФайлаНастроек = "" Тогда + КлючФайлаНастроек = ЧтениеПараметров.КлючФайлаНастроек(); + КонецЕсли; + Лог.Отладка("КлючФайлаНастроек <%1>", КлючФайлаНастроек); + + Если Не ЗначениеЗаполнено(ТекущийКаталогПроекта) Тогда + ТекущийКаталогПроекта = ТекущийКаталог(); + КонецЕсли; + Лог.Отладка("ТекущийКаталогПроекта <%1>", ТекущийКаталогПроекта); + + ДополнитьЗначенияПараметров(Параметры, Команда, КлючФайлаНастроек, СоответствиеПеременныхСреды); + + Параметры.Вставить("Команда", Команда); + + Лог.Отладка("Итоговые параметры:"); + ПоказатьПараметрыВРежимеОтладки(Параметры); + Исключение + Лог.Ошибка("Ошибка чтения настроек + |%1", ОписаниеОшибки()); + + ВызватьИсключение; + КонецПопытки; Возврат Параметры; КонецФункции // Прочитать @@ -87,6 +126,37 @@ Возврат ТекущийКаталогПроекта; КонецФункции // ПолучитьТекущийКаталогПроекта() +// Установить путь к файлу настроек по умолчанию +// +// Параметры: +// НовыйПутьФайлаНастроек - <Строка> - путь файла +// +Процедура УстановитьФайлПоУмолчанию(Знач НовыйПутьФайлаНастроек) Экспорт + Файл = Новый Файл(НовыйПутьФайлаНастроек); + СообщениеОшибки = СтрШаблон("Файл настроек не существует. Путь %1", НовыйПутьФайлаНастроек); + Ожидаем.Что(Файл.Существует(), СообщениеОшибки).ЭтоИстина(); + + ПутьФайлаНастроекПоУмолчанию = НовыйПутьФайлаНастроек; +КонецПроцедуры + +// Загрузить соответствие переменных окружения параметрам команд +// +// Параметры: +// Источник - <Соответствие или ФиксированноеСоответствие> - откуда загружаем +// ключ - имя переменной окружения +// значение - имя соответствующего ключа/параметра настройки +// +Процедура ЗагрузитьСоответствиеПеременныхОкруженияПараметрамКоманд(Источник) Экспорт + ТипИсточника = ТипЗнч(Источник); + Если ТипИсточника <> Тип("Соответствие") И ТипИсточника <> Тип("ФиксированноеСоответствие") Тогда + ВызватьИсключение "Неверный тип источника у метода ЗагрузитьСоответствиеПеременныхОкруженияПараметрамКоманд"; + КонецЕсли; + СоответствиеПеременныхСреды = Новый Соответствие; + Для каждого КлючЗначение Из Источник Цикл + СоответствиеПеременныхСреды.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение); + КонецЦикла; +КонецПроцедуры + #КонецОбласти Функция ПолучитьСоответствиеПеременныхСредыИзТаблицыКоманд(Знач ТаблицаКоманд, Знач ПрефиксПеременныхСреды) @@ -109,7 +179,7 @@ Процедура ДобавитьПараметрВКоллекциюСоответствияПеременныхОкружения(РезСоответствие, Параметры, ПрефиксПеременныхСреды) Для каждого Параметр Из Параметры Цикл ИмяПараметра = Параметр.Имя; - ИмяПеременнойСреды = СтрШаблон("%1_%2", + ИмяПеременнойСреды = СтрШаблон("%1%2", ПрефиксПеременныхСреды, ПреобразоватьВИмяПеременнойСреды(ИмяПараметра)); РезСоответствие.Вставить(ИмяПеременнойСреды, ИмяПараметра); КонецЦикла; @@ -132,7 +202,10 @@ // ПараметрыСистемы.КорневойПутьПроекта = ТекущийКаталогПроекта; - // ПутьКФайлуНастроекПоУмолчанию = ОбъединитьПути(ТекущийКаталогПроекта, ОбщиеМетоды.ИмяФайлаНастроек()); + Если Не ЗначениеЗаполнено(ПутьФайлаНастроекПоУмолчанию) Тогда + ПутьКФайлуНастроекПоУмолчанию = ОбъединитьПути(ТекущийКаталогПроекта, + ЧтениеПараметров.ИмяФайлаНастроекПоУмолчанию()); + КонецЕсли; // НастройкиИзФайла = ОбщиеМетоды.ПрочитатьНастройкиФайлJSON(ТекущийКаталогПроекта, // ЗначенияПараметров[КлючФайлаНастроек], ПутьКФайлуНастроекПоУмолчанию); @@ -140,7 +213,8 @@ Если Не ЗначениеЗаполнено(ПутьКФайлуНастройки) Тогда Лог.Отладка("В параметрах не задан ключ %1 к файлу настройки", КлючФайлаНастроек); КонецЕсли; - НастройкиИзФайла = ПрочитатьНастройкиФайлJSON(ТекущийКаталогПроекта, ПутьКФайлуНастройки); + НастройкиИзФайла = ПрочитатьНастройкиФайлJSON(ТекущийКаталогПроекта, ПутьКФайлуНастройки, + ПутьФайлаНастроекПоУмолчанию); ЗначенияПараметровНизкийПриоритет = Новый Соответствие; @@ -148,8 +222,6 @@ ДополнитьАргументыИзФайлаНастроек(Команда, ЗначенияПараметровНизкийПриоритет, НастройкиИзФайла); КонецЕсли; - // СоответствиеПеременныхСреды = СоответствиеПеременныхОкруженияПараметрамКоманд(); - ЗаполнитьЗначенияИзПеременныхОкружения(ЗначенияПараметровНизкийПриоритет, СоответствиеПеременныхСреды); ДополнитьСоответствиеСУчетомПриоритета(ЗначенияПараметров, ЗначенияПараметровНизкийПриоритет); @@ -161,14 +233,18 @@ КонецПроцедуры // Функция ПрочитатьНастройкиФайлJSON(Знач ТекущийКаталогПроекта, Знач ПутьКФайлу, Знач ПутьФайлаПоУмолчанию ) -Функция ПрочитатьНастройкиФайлJSON(Знач ТекущийКаталогПроекта, Знач ПутьКФайлу ) +Функция ПрочитатьНастройкиФайлJSON(Знач ТекущийКаталогПроекта, Знач ПутьКФайлу, Знач ПутьФайлаПоУмолчанию ) Рез = Новый Соответствие; // Лог.Отладка(":"+ПутьКФайлу+":"+ПутьФайлаПоУмолчанию); - // Если ПутьКФайлу = Неопределено ИЛИ НЕ ЗначениеЗаполнено(ПутьКФайлу) Тогда - // ПутьКФайлу = ПутьФайлаПоУмолчанию; - // КонецЕсли; + Если ПутьКФайлу = Неопределено ИЛИ НЕ ЗначениеЗаполнено(ПутьКФайлу) Тогда + ПутьКФайлу = ПутьФайлаПоУмолчанию; + Лог.Отладка("Использую путь к файлу настройки по умолчанию %1", ПутьКФайлу); + Иначе + Лог.Отладка("Передан путь к файлу настройки %1", ПутьКФайлу); + КонецЕсли; Если НЕ ЗначениеЗаполнено(ПутьКФайлу) Тогда + Лог.Отладка("Передана пустая строка в качестве пути к файлу настройки"); Возврат Рез; КонецЕсли; Ожидаем.Что(ПутьКФайлу, "Путь к файлу настроек должен быть заполнен").Не_().Равно("").Не_().Равно(Неопределено); @@ -186,7 +262,7 @@ ФайлСуществующий = Новый Файл(ИмяФайла); Если Не ФайлСуществующий.Существует() Тогда - Лог.Отладка("Файл настроек не существует."); + ВызватьИсключение СтрШаблон("Файл настроек не существует. Путь <%1>", ИмяФайла); Возврат Новый Соответствие; КонецЕсли; Чтение = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8); @@ -206,7 +282,13 @@ КлючПоУмолчанию = ЧтениеПараметров.КлючКомандыВФайлеНастроекПоУмолчанию(); ДополнитьСоответствиеСУчетомПриоритета(ЗначенияПараметров, НастройкиИзФайла.Получить(Команда)); - ДополнитьСоответствиеСУчетомПриоритета(ЗначенияПараметров, НастройкиИзФайла.Получить(КлючПоУмолчанию)); + + НастройкиПоУмолчанию = НастройкиИзФайла.Получить(КлючПоУмолчанию); + Если НастройкиПоУмолчанию = Неопределено Тогда + ДополнитьСоответствиеСУчетомПриоритета(ЗначенияПараметров, НастройкиИзФайла); + Иначе + ДополнитьСоответствиеСУчетомПриоритета(ЗначенияПараметров, НастройкиПоУмолчанию); + КонецЕсли; Лог.Отладка("Параметры после вставки из файла настроек:"); ПоказатьПараметрыВРежимеОтладки(ЗначенияПараметров); @@ -230,6 +312,9 @@ Для каждого Элемент Из СоответствиеПеременных Цикл ЗначениеПеременной = ПолучитьПеременнуюСреды(ВРег(Элемент.Ключ)); + Лог.Отладка("В переменных среды найден параметр: <%1> = <%2>, тип %3", + Элемент.Ключ, ЗначениеПеременной, ТипЗнч(ЗначениеПеременной)); + Если ЗначениеПеременной <> Неопределено Тогда Если ЗначениеПеременной = """""" Или ЗначениеПеременной = "''" Тогда ЗначениеПеременной = ""; @@ -244,17 +329,17 @@ Процедура ПоказатьПараметрыВРежимеОтладки(ЗначенияПараметров, Знач Родитель = "") Если Родитель = "" Тогда - Лог.Отладка("Тип параметров %1", ТипЗнч(ЗначенияПараметров)); + Лог.Отладка(" Тип параметров %1", ТипЗнч(ЗначенияПараметров)); КонецЕсли; Если ЗначенияПараметров.Количество() = 0 Тогда - Лог.Отладка("Коллекция параметров пуста!"); + Лог.Отладка(" Коллекция параметров пуста!"); КонецЕсли; Для каждого Элемент из ЗначенияПараметров Цикл ПредставлениеКлюча = Элемент.Ключ; Если Не ПустаяСтрока(Родитель) Тогда ПредставлениеКлюча = СтрШаблон("%1.%2", Родитель, ПредставлениеКлюча); КонецЕсли; - Лог.Отладка("Получен параметр <%1> = <%2>", ПредставлениеКлюча, Элемент.Значение); + Лог.Отладка(" Получен параметр <%1> = <%2>", ПредставлениеКлюча, Элемент.Значение); Если ТипЗнч(Элемент.Значение) = Тип("Соответствие") Тогда ПоказатьПараметрыВРежимеОтладки(Элемент.Значение, ПредставлениеКлюча); КонецЕсли; diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" index 2ca15e8..43d5608 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" @@ -12,7 +12,18 @@ #Использовать logos -Перем Лог Экспорт; +Перем Лог; + +// Возвращает текущую версию продукта +// +// Возвращаемое значение: +// Строка - Значение текущей версии продукта +// +Функция ВерсияПродукта() Экспорт + + Возврат "0.2"; + +КонецФункции // ВерсияПродукта // ИмяПродукта // Возвращает имя продукта @@ -37,17 +48,6 @@ КонецФункции // ИмяЛогаСистемы -// Возвращает текущую версию продукта -// -// Возвращаемое значение: -// Строка - Значение текущей версии продукта -// -Функция ВерсияПродукта() Экспорт - - Возврат "0.1"; - -КонецФункции // ВерсияПродукта - // Форматирование логов // Функция Форматировать(Знач Уровень, Знач Сообщение) Экспорт @@ -76,6 +76,9 @@ Лог.УстановитьУровень(УровеньЛога); Лог.УстановитьРаскладку(ЭтотОбъект); + Лог_cmdline = Логирование.ПолучитьЛог("oscript.lib.cmdline"); + Лог_cmdline.УстановитьУровень(УровеньЛога); + Возврат Лог; КонецФункции diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\247\321\202\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\247\321\202\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" index deeb1e5..32f9f67 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\247\321\202\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\247\321\202\320\265\320\275\320\270\320\265\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" @@ -1,3 +1,5 @@ +Перем ЧитательПараметров; + // см. ЧитательПараметров.Прочитать Функция Прочитать(Парсер, Знач Аргументы, Знач КлючФайлаНастроек = "", Знач ПрефиксПеременныхСреды = "") Экспорт ЧитательПараметров = Новый ЧитательПараметров; @@ -31,3 +33,12 @@ Функция ПрефиксПеременныхОкружения() Экспорт Возврат "ONESCRIPT_APP_"; КонецФункции + +// Возвращает имя по умолчанию для файла с настройками +// +// Возвращаемое значение: +// <Строка> +// +Функция ИмяФайлаНастроекПоУмолчанию() Экспорт + Возврат "params.json"; +КонецФункции diff --git "a/tests/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213.os" "b/tests/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213.os" index 3d7e60d..01e172f 100644 --- "a/tests/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213.os" +++ "b/tests/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213.os" @@ -2,6 +2,7 @@ #Использовать asserts #Использовать cmdline #Использовать tempfiles +#Использовать 1commands Перем юТест; @@ -15,6 +16,9 @@ СписокТестов = Новый Массив; СписокТестов.Добавить("Тест_ЧтениеПараметровКоманднойСтроки"); СписокТестов.Добавить("Тест_ЧтениеПараметровИзФайла"); + СписокТестов.Добавить("Тест_ЧтениеПараметровИзПлоскогоФайлаБезКлючаПоУмолчанию"); + СписокТестов.Добавить("Тест_ЧтениеПараметровИзПереданногоФайлаПоУмолчанию"); + СписокТестов.Добавить("Тест_ЧтениеПараметровИзФайлаПоУмолчанию"); СписокТестов.Добавить("Тест_ПриоритетКоманднойСтрокиНадПараметрамиИзФайла"); СписокТестов.Добавить("Тест_ЧтениеПараметровКомандыИзКоманднойСтроки"); @@ -26,9 +30,13 @@ СписокТестов.Добавить("Тест_ЧтениеПараметровКомандыИзПеременныхСреды"); СписокТестов.Добавить("Тест_ПриоритетПеременныхСредыНадПараметрамиИзФайла"); + СписокТестов.Добавить("Тест_ПолучитьВнешнееСоответствиеПеременныхОкруженияПараметрамКоманд"); + СписокТестов.Добавить("Тест_ПроверяетВсюЦепочкуПриоритетов"); СписокТестов.Добавить("Тест_ПроверяетВсюЦепочкуПриоритетовДляКоманды"); + СписокТестов.Добавить("Тест_ЧтениеПараметровИзНеСуществующегоФайла"); + Возврат СписокТестов; КонецФункции @@ -99,6 +107,126 @@ Ожидаем.Что(Параметры[ИМЯ_ПАРАМЕТРА]).Равно(ЗНАЧЕНИЕ_ПАРАМЕТРА); КонецПроцедуры +Процедура Тест_ЧтениеПараметровИзПереданногоФайлаПоУмолчанию() Экспорт + ИМЯ_ПАРАМЕТРА = "Параметр"; + ЗНАЧЕНИЕ_ПАРАМЕТРА = 3; + + ПутьФайлаНастроекПоУмолчанию = МенеджерВременныхФайлов.СоздатьФайл("json"); + + СохранитьНастройкуВФайл(ПутьФайлаНастроекПоУмолчанию, СтрШаблон("{ ""%1"": %2 } ", + ИМЯ_ПАРАМЕТРА, ЗНАЧЕНИЕ_ПАРАМЕТРА) ); + + Парсер = Новый ПарсерАргументовКоманднойСтроки(); + Парсер.ДобавитьИменованныйПараметр(ИМЯ_ПАРАМЕТРА); + + ПараметрыКомСтроки = Новый Массив; + + ЧитательПараметров = Новый ЧитательПараметров; + ЧитательПараметров.УстановитьФайлПоУмолчанию(ПутьФайлаНастроекПоУмолчанию); + + Параметры = ЧитательПараметров.Прочитать(Парсер, ПараметрыКомСтроки); + + Ожидаем.Что(Параметры).ИмеетТип("Соответствие"); + Ожидаем.Что(Параметры["Команда"]).Равно(Неопределено); + Ожидаем.Что(Параметры[ИМЯ_ПАРАМЕТРА]).Равно(ЗНАЧЕНИЕ_ПАРАМЕТРА); +КонецПроцедуры + +Процедура Тест_ЧтениеПараметровИзФайлаПоУмолчанию() Экспорт + // ПараметрыСистемы.ИнициализироватьЛог("Отладка"); + ИМЯ_ПАРАМЕТРА = "Параметр"; + ЗНАЧЕНИЕ_ПАРАМЕТРА = 3; + ИМЯ_СКРИПТА = "test.os"; + + ПутьФайлаНастроекПоУмолчанию = ОбъединитьПути(МенеджерВременныхФайлов.БазовыйКаталог, + ЧтениеПараметров.ИмяФайлаНастроекПоУмолчанию()); + + СохранитьНастройкуВФайл(ПутьФайлаНастроекПоУмолчанию, СтрШаблон("{ ""%1"": %2 } ", + ИМЯ_ПАРАМЕТРА, ЗНАЧЕНИЕ_ПАРАМЕТРА) ); + + ТекстСкрипта = " + |#Использовать cmdline + |#Использовать ""%1"" + | + |Парсер = Новый ПарсерАргументовКоманднойСтроки(); + |Парсер.ДобавитьИменованныйПараметр(""%2""); + | + |Лог = Логирование.ПолучитьЛог(""%4""); + |Лог.УстановитьУровень(УровниЛога.Отладка); + | + |Параметры = ЧтениеПараметров.Прочитать(Парсер, АргументыКоманднойСтроки); + | + |Если Параметры[""%2""] = %3 Тогда + | ЗавершитьРаботу(0); + |Иначе + | ЗавершитьРаботу(1); + |КонецЕсли; + |"; + + ТекстСкрипта = СтрШаблон(ТекстСкрипта, ПутьИсходников(), ИМЯ_ПАРАМЕТРА, ЗНАЧЕНИЕ_ПАРАМЕТРА, + ПараметрыСистемы.ИмяЛогаСистемы()); + + ПутьСкрипта = ОбъединитьПути(МенеджерВременныхФайлов.БазовыйКаталог, ИМЯ_СКРИПТА); + СохранитьНастройкуВФайл(ПутьСкрипта, ТекстСкрипта); + + Команда = Новый Команда; + Команда.УстановитьСтрокуЗапуска(СтрШаблон("oscript %1", ПутьСкрипта)); + // Команда.ПоказыватьВыводНемедленно(Истина); + КодВозврата = Команда.Исполнить(); + + СообщениеОшибки = СтрШаблон("Не удалось выполнить команду %1 + |%2", ПутьСкрипта, Команда.ПолучитьВывод()); + + Ожидаем.Что(КодВозврата, СообщениеОшибки).Равно(0); +КонецПроцедуры + +Процедура Тест_ЧтениеПараметровИзПлоскогоФайлаБезКлючаПоУмолчанию() Экспорт + ИМЯ_НАСТРОЙКИ = "Настройки"; + ИМЯ_ПАРАМЕТРА = "Параметр"; + ЗНАЧЕНИЕ_ПАРАМЕТРА = 3; + + ПутьФайлаНастроек = МенеджерВременныхФайлов.СоздатьФайл("json"); + + Парсер = Новый ПарсерАргументовКоманднойСтроки(); + Парсер.ДобавитьПараметр(ИМЯ_НАСТРОЙКИ); + Парсер.ДобавитьИменованныйПараметр(ИМЯ_ПАРАМЕТРА); + + СохранитьНастройкуВФайл(ПутьФайлаНастроек, СтрШаблон("{ ""%1"": %2 } ", + ИМЯ_ПАРАМЕТРА, ЗНАЧЕНИЕ_ПАРАМЕТРА) ); + + ПараметрыКомСтроки = Новый Массив; + ПараметрыКомСтроки.Добавить(ПутьФайлаНастроек); + + Параметры = ЧтениеПараметров.Прочитать(Парсер, ПараметрыКомСтроки, ИМЯ_НАСТРОЙКИ); + + Ожидаем.Что(Параметры).ИмеетТип("Соответствие"); + Ожидаем.Что(Параметры["Команда"]).Равно(Неопределено); + Ожидаем.Что(Параметры[ИМЯ_НАСТРОЙКИ]).Равно(ПутьФайлаНастроек); + Ожидаем.Что(Параметры[ИМЯ_ПАРАМЕТРА]).Равно(ЗНАЧЕНИЕ_ПАРАМЕТРА); +КонецПроцедуры + +Процедура Тест_ЧтениеПараметровИзНеСуществующегоФайла() Экспорт + ИМЯ_НАСТРОЙКИ = "Настройки"; + ИМЯ_ПАРАМЕТРА = "Параметр"; + ЗНАЧЕНИЕ_ПАРАМЕТРА = 3; + + ПутьФайлаНастроек = "НесуществующийПуть"; + + Парсер = Новый ПарсерАргументовКоманднойСтроки(); + Парсер.ДобавитьПараметр(ИМЯ_НАСТРОЙКИ); + Парсер.ДобавитьИменованныйПараметр(ИМЯ_ПАРАМЕТРА); + + ПараметрыКомСтроки = Новый Массив; + ПараметрыКомСтроки.Добавить(ПутьФайлаНастроек); + + Массив = Новый Массив; + Массив.Добавить(Парсер); + Массив.Добавить(ПараметрыКомСтроки); + Массив.Добавить(ИМЯ_НАСТРОЙКИ); + Массив.Добавить(""); + + Ожидаем.Что(ЧтениеПараметров).Метод("Прочитать", Массив).ВыбрасываетИсключение("Файл настроек не существует"); +КонецПроцедуры + Процедура Тест_ПриоритетКоманднойСтрокиНадПараметрамиИзФайла() Экспорт ИМЯ_НАСТРОЙКИ = "Настройки"; ИМЯ_ПАРАМЕТРА = "Параметр"; @@ -251,11 +379,11 @@ КонецПроцедуры Процедура Тест_ЧтениеПараметровИзПеременныхСреды() Экспорт - ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ = "PARAMS_TEST"; + ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ = "PARAMS_TEST_"; ИМЯ_ПАРАМЕТРА = "Параметр"; ЗНАЧЕНИЕ_ПАРАМЕТРА = "47"; - УстановитьПеременнуюСреды(СтрШаблон("%1_%2", + УстановитьПеременнуюСреды(СтрШаблон("%1%2", ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ, ИМЯ_ПАРАМЕТРА), ЗНАЧЕНИЕ_ПАРАМЕТРА); Парсер = Новый ПарсерАргументовКоманднойСтроки(); @@ -272,11 +400,11 @@ Процедура Тест_ЧтениеПараметровКомандыИзПеременныхСреды() Экспорт ИМЯ_КОМАНДЫ = "test"; - ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ = "PARAMS_TEST"; + ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ = "PARAMS_TEST_"; ИМЯ_ПАРАМЕТРА = "Параметр"; ЗНАЧЕНИЕ_ПАРАМЕТРА = "47"; - УстановитьПеременнуюСреды(СтрШаблон("%1_%2_%3", + УстановитьПеременнуюСреды(СтрШаблон("%1%2_%3", ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ, ИМЯ_КОМАНДЫ, ИМЯ_ПАРАМЕТРА), ЗНАЧЕНИЕ_ПАРАМЕТРА); Парсер = Новый ПарсерАргументовКоманднойСтроки(); @@ -295,12 +423,12 @@ КонецПроцедуры Процедура Тест_ПриоритетПеременныхСредыНадПараметрамиИзФайла() Экспорт - ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ = "PARAMS_TEST"; + ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ = "PARAMS_TEST_"; ИМЯ_НАСТРОЙКИ = "Настройки"; ИМЯ_ПАРАМЕТРА = "Параметр"; ЗНАЧЕНИЕ_ПАРАМЕТРА = "51"; - УстановитьПеременнуюСреды(СтрШаблон("%1_%2", + УстановитьПеременнуюСреды(СтрШаблон("%1%2", ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ, ИМЯ_ПАРАМЕТРА), ЗНАЧЕНИЕ_ПАРАМЕТРА); ПутьФайлаНастроек = МенеджерВременныхФайлов.СоздатьФайл("json"); @@ -322,19 +450,53 @@ Ожидаем.Что(Параметры[ИМЯ_ПАРАМЕТРА]).Равно(ЗНАЧЕНИЕ_ПАРАМЕТРА); КонецПроцедуры +Процедура Тест_ПолучитьВнешнееСоответствиеПеременныхОкруженияПараметрамКоманд() Экспорт + ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ = "PARAMS_TEST_"; + ИМЯ_ПАРАМЕТРА = "Параметр"; + ЗНАЧЕНИЕ_ПАРАМЕТРА = "47"; + + ИмяПеременнойСредыПоУмолчанию = СтрШаблон("%1%2", ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ, ИМЯ_ПАРАМЕТРА); + УстановитьПеременнуюСреды(ИмяПеременнойСредыПоУмолчанию, Неопределено); + + ИмяПеременнойСредыДляСоответствия = СтрШаблон("ADD_%1", ИмяПеременнойСредыПоУмолчанию); + УстановитьПеременнуюСреды(ИмяПеременнойСредыДляСоответствия, ЗНАЧЕНИЕ_ПАРАМЕТРА); + + Парсер = Новый ПарсерАргументовКоманднойСтроки(); + Парсер.ДобавитьИменованныйПараметр(ИМЯ_ПАРАМЕТРА); + + СоответствиеПеременных = Новый Соответствие(); + СоответствиеПеременных.Вставить(ИмяПеременнойСредыДляСоответствия, ИМЯ_ПАРАМЕТРА); + СоответствиеПеременных = Новый ФиксированноеСоответствие(СоответствиеПеременных); + + ЧитательПараметров = Новый ЧитательПараметров; + ЧитательПараметров.ЗагрузитьСоответствиеПеременныхОкруженияПараметрамКоманд(СоответствиеПеременных); + + ПараметрыКомСтроки = Новый Массив; + + Параметры = ЧитательПараметров.Прочитать(Парсер, ПараметрыКомСтроки, "", ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ); + + Ожидаем.Что(Параметры["Команда"]).Равно(Неопределено); + Ожидаем.Что(Параметры).ИмеетТип("Соответствие"); + Ожидаем.Что(Параметры[ИМЯ_ПАРАМЕТРА]).Равно(ЗНАЧЕНИЕ_ПАРАМЕТРА); +КонецПроцедуры + Процедура Тест_ПроверяетВсюЦепочкуПриоритетов() Экспорт - ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ = "PARAMS_TEST"; + ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ = "PARAMS_TEST_"; ИМЯ_НАСТРОЙКИ = "Настройки"; ИМЯ_ПАРАМЕТРА = "Параметр"; ЗНАЧЕНИЕ_ПАРАМЕТРА = "51"; - УстановитьПеременнуюСреды(СтрШаблон("%1_%2", + УстановитьПеременнуюСреды(СтрШаблон("%1%2", ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ, ИМЯ_ПАРАМЕТРА), "НеверноеЗначение 2"); ПутьФайлаНастроек = МенеджерВременныхФайлов.СоздатьФайл("json"); - СохранитьНастройкуВФайл(ПутьФайлаНастроек, СтрШаблон("{ ""default"" : { ""%1"": ""НеверноеЗначение"" } }", + СохранитьНастройкуВФайл(ПутьФайлаНастроек, СтрШаблон("{ ""%1"": ""НеверноеЗначение"" }", ИМЯ_ПАРАМЕТРА)); - + + ПутьФайлаНастроекПоУмолчанию = МенеджерВременныхФайлов.СоздатьФайл("json"); + СохранитьНастройкуВФайл(ПутьФайлаНастроекПоУмолчанию, СтрШаблон("{ ""%1"": ""НеверноеЗначениеПоУмолчанию"" }", + ИМЯ_ПАРАМЕТРА)); + Парсер = Новый ПарсерАргументовКоманднойСтроки(); Парсер.ДобавитьПараметр(ИМЯ_НАСТРОЙКИ); Парсер.ДобавитьИменованныйПараметр(ИМЯ_ПАРАМЕТРА); @@ -344,7 +506,10 @@ ПараметрыКомСтроки.Добавить(ИМЯ_ПАРАМЕТРА); ПараметрыКомСтроки.Добавить(ЗНАЧЕНИЕ_ПАРАМЕТРА); - Параметры = ЧтениеПараметров.Прочитать(Парсер, ПараметрыКомСтроки, "", ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ); + ЧитательПараметров = Новый ЧитательПараметров; + ЧитательПараметров.УстановитьФайлПоУмолчанию(ПутьФайлаНастроекПоУмолчанию); + + Параметры = ЧитательПараметров.Прочитать(Парсер, ПараметрыКомСтроки, "", ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ); Ожидаем.Что(Параметры).ИмеетТип("Соответствие"); Ожидаем.Что(Параметры["Команда"]).Равно(Неопределено); @@ -353,18 +518,22 @@ КонецПроцедуры Процедура Тест_ПроверяетВсюЦепочкуПриоритетовДляКоманды() Экспорт - // ПараметрыСистемы.ИнициализироватьЛог("Отладка"); ИМЯ_КОМАНДЫ = "test"; - ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ = "PARAMS_TEST"; + ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ = "PARAMS_TEST_"; ИМЯ_НАСТРОЙКИ = "Настройки"; ИМЯ_ПАРАМЕТРА = "Параметр"; ЗНАЧЕНИЕ_ПАРАМЕТРА = "51"; - УстановитьПеременнуюСреды(СтрШаблон("%1_%2_%3", + УстановитьПеременнуюСреды(СтрШаблон("%1%2_%3", ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ, ИМЯ_КОМАНДЫ, ИМЯ_ПАРАМЕТРА), "НеверноеЗначение 2"); ПутьФайлаНастроек = МенеджерВременныхФайлов.СоздатьФайл("json"); - СохранитьНастройкуВФайл(ПутьФайлаНастроек, СтрШаблон("{ ""default"" : { ""%1"": ""НеверноеЗначение"" } }", ИМЯ_ПАРАМЕТРА)); + СохранитьНастройкуВФайл(ПутьФайлаНастроек, СтрШаблон("{ ""default"" : { ""%1"": ""НеверноеЗначение"" } }", + ИМЯ_ПАРАМЕТРА)); + + ПутьФайлаНастроекПоУмолчанию = МенеджерВременныхФайлов.СоздатьФайл("json"); + СохранитьНастройкуВФайл(ПутьФайлаНастроекПоУмолчанию, СтрШаблон("{ ""%1"": ""НеверноеЗначениеПоУмолчанию"" }", + ИМЯ_ПАРАМЕТРА)); Парсер = Новый ПарсерАргументовКоманднойСтроки(); ОписаниеКоманды = Парсер.ОписаниеКоманды(ИМЯ_КОМАНДЫ); @@ -378,7 +547,10 @@ ПараметрыКомСтроки.Добавить(ИМЯ_ПАРАМЕТРА); ПараметрыКомСтроки.Добавить(ЗНАЧЕНИЕ_ПАРАМЕТРА); - Параметры = ЧтениеПараметров.Прочитать(Парсер, ПараметрыКомСтроки, "", ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ); + ЧитательПараметров = Новый ЧитательПараметров; + ЧитательПараметров.УстановитьФайлПоУмолчанию(ПутьФайлаНастроекПоУмолчанию); + + Параметры = ЧитательПараметров.Прочитать(Парсер, ПараметрыКомСтроки, "", ПРЕФИКС_ПЕРЕМЕННЫХ_ОКРУЖЕНИЯ); Ожидаем.Что(Параметры).ИмеетТип("Соответствие"); Ожидаем.Что(Параметры["Команда"]).Равно(ИМЯ_КОМАНДЫ); @@ -390,4 +562,8 @@ ЗаписьТекста = Новый ЗаписьТекста(ПутьФайлаНастроек); ЗаписьТекста.ЗаписатьСтроку(СтрокаНастроек); ЗаписьТекста.Закрыть(); -КонецПроцедуры \ No newline at end of file +КонецПроцедуры + +Функция ПутьИсходников() + Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", "src"); +КонецФункции // ПутьИсходников() \ No newline at end of file