diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml index 8ea330f2..d3809de7 100644 --- a/.github/workflows/qa.yml +++ b/.github/workflows/qa.yml @@ -111,6 +111,12 @@ jobs: - name: Настройка sonar-scanner uses: warchant/setup-sonar-scanner@v8 + - name: Настройка Java 21 для SonarScanner + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: '21' + - name: Анализ в SonarQube (branch) if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' env: diff --git a/README.md b/README.md index fe6bb056..145abf02 100644 --- a/README.md +++ b/README.md @@ -21,15 +21,16 @@ - [Использование](#использование) - [Создание проекта](#создание-проекта) - [Примеры создания проекта](#примеры-создания-проекта) - - [1. Создание проекта по указанному шаблону](#1-создание-проекта-по-указанному-шаблону) - - [2. Создание проекта по файлу настроек](#2-создание-проекта-по-файлу-настроек) - - [3. Сборка обработок при создании проекта](#3-сборка-обработок-при-создании-проекта) + - [1. Создание проекта по указанному шаблону](#1-создание-проекта-по-указанному-шаблону) + - [2. Создание проекта по файлу настроек](#2-создание-проекта-по-файлу-настроек) + - [3. Сборка обработок при создании проекта](#3-сборка-обработок-при-создании-проекта) - [Сборка обработок и конфигураций](#сборка-обработок-и-конфигураций) - [Примеры настройки и вызова](#примеры-настройки-и-вызова) - [1. Создание ИБ из последней конфигурации хранилища 1С, обновление в режиме Предприятия и первоначальное заполнение ИБ](#1-создание-иб-из-последней-конфигурации-хранилища-1с-обновление-в-режиме-предприятия-и-первоначальное-заполнение-иб) - [2. Вызов модульных тестов через Vanessa-ADD (TDD)](#2-вызов-модульных-тестов-через-vanessa-add-tdd) - [3. Вызов проверки поведения через Vanessa-ADD (BDD)](#3-вызов-проверки-поведения-через-vanessa-add-bdd) - [4. Переопределение аргументов запуска](#4-переопределение-аргументов-запуска) + - [Переопределение каталога платформы и имен exe](#переопределение-каталога-платформы-и-имен-exe) - [Переопределение переменной окружения](#переопределение-переменной-окружения) - [Установка значения](#установка-значения) - [Шаблонные переменные](#шаблонные-переменные) @@ -366,6 +367,44 @@ vrunner vanessa --path [прочие-ключи] ... + Потом, если настройка есть в переменной окружения, тогда берем из неe. + Если же настройка есть, как в файле json, так и в переменной окружения и непосредственно в командной строке, то берем настройку из командной строки. +##### Переопределение каталога платформы и имен exe + +Если платформа 1С установлена не в типовом каталоге или используются другие имена исполняемых файлов, +можно явно задать параметры запуска: + ++ `--v8-platform-path` - путь к каталогу платформы 1С (например, `C:\Program Files\1cv8`). ++ `--v8version` - версия платформы. ++ `--v8-exe-name` - имя `exe` для Конфигуратора/толстого клиента. ++ `--v8c-exe-name` - имя `exe` тонкого клиента. ++ `--ibcmd-exe-name` - имя `exe` утилиты `ibcmd`. + +Путь к исполняемому файлу формируется по шаблону: `\\bin\`. + +Указать их можно любым поддерживаемым способом: + ++ в `env.json`/`--settings`: + +```json +{ + "default": { + "--v8-platform-path": "C:/Program Files/1cv8", + "--v8version": "8.3.27.1234", + "--v8-exe-name": "1cv8.exe", + "--v8c-exe-name": "1cv8c.exe", + "--ibcmd-exe-name": "ibcmd.exe" + } +} +``` + ++ через переменные окружения: + `RUNNER_V8_PLATFORM_PATH`, `RUNNER_V8_EXE_NAME`, `RUNNER_V8C_EXE_NAME`, `RUNNER_IBCMD_EXE_NAME`; + ++ напрямую в командной строке: + +```cmd +vrunner run --v8-platform-path "C:\Program Files\1cv8" --v8version "8.3.27.1234" --v8-exe-name "1cv8.exe" --v8c-exe-name "1cv8c.exe" +``` + Например: diff --git "a/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\265\321\201\321\202\320\276\320\262.feature" "b/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\265\321\201\321\202\320\276\320\262.feature" index fea6c5b1..f8784364 100644 --- "a/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\265\321\201\321\202\320\276\320\262.feature" +++ "b/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\265\321\201\321\202\320\276\320\262.feature" @@ -48,7 +48,6 @@ | ИНФОРМАЦИЯ - Все тесты выполнены! | | Выполнение тестов завершено | И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>\junitreport\xddreport.xml" - И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>\allurereport\allure-testsuite.xml" И Код возврата команды "oscript" равен 0 Тогда файл "junitreport/*.xml" существует @@ -82,7 +81,6 @@ | ИНФОРМАЦИЯ - Все тесты выполнены! | | Выполнение тестов завершено | И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>/junitreport/xddreport.xml" - И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>/allurereport/allure-testsuite.xml" И Код возврата команды "oscript" равен 0 Тогда файл "junitreport/*.xml" существует @@ -280,7 +278,6 @@ | ИНФОРМАЦИЯ - Все тесты выполнены! | | Выполнение тестов завершено | И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>\junitreport\xddreport.xml" - И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>\allurereport\allure-testsuite.xml" И Код возврата команды "oscript" равен 0 И файл "junitreport/dummy-for-delete.xml" не существует @@ -313,7 +310,6 @@ | ИНФОРМАЦИЯ - Все тесты выполнены! | | Выполнение тестов завершено | И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>/junitreport/xddreport.xml" - И я вижу в консоли вывод "Сформирован отчет тестирования <РабочийКаталог>/allurereport/allure-testsuite.xml" И Код возврата команды "oscript" равен 0 И файл "junitreport/dummy-for-delete.xml" не существует diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" index 03e8c964..0836b6b3 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -402,7 +402,18 @@ Процедура Конструктор(Знач ДанныеПодключения, Знач ПараметрыКоманды) Экспорт ВерсияПлатформы = ДанныеПодключения.ВерсияПлатформы; - Если ЗначениеЗаполнено(ВерсияПлатформы) Тогда + КаталогПлатформы = ПараметрыКоманды["--v8-platform-path"]; + ИмяФайлаIbcmd = ПараметрыКоманды["--ibcmd-exe-name"]; + ПутьКIbcmdИзПараметров = ОбщиеМетоды.ПолучитьПутьКExeФайлуПлатформы( + КаталогПлатформы, + ВерсияПлатформы, + ИмяФайлаIbcmd, + ОбщиеМетоды.ИмяИсполняемогоФайлаПоУмолчанию("ibcmd"), + "--ibcmd-exe-name", + "Конструктор"); + Если ЗначениеЗаполнено(ПутьКIbcmdИзПараметров) Тогда + УправлениеИБ.ПутьКПриложению(ПутьКIbcmdИзПараметров); + ИначеЕсли ЗначениеЗаполнено(ВерсияПлатформы) Тогда Если ЗначениеЗаполнено(ДанныеПодключения.РазрядностьПлатформы) Тогда Разрядность = ОбщиеМетоды.РазрядностьПлатформы(ДанныеПодключения.РазрядностьПлатформы); Лог.Отладка("Разрядность платформы 1С указана %1", ДанныеПодключения.РазрядностьПлатформы); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" index 3bf64557..e76fde2a 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" @@ -8,6 +8,11 @@ Перем УправлениеКонфигуратором; Перем КаталогВременнойИБ; Перем ПараметрыХранилища; +Перем ПутьКИсполняемомуФайлуПлатформы; +Перем ПутьКТонкомуКлиенту; +Перем ИмяФайлаТонкогоКлиента; +Перем ЯвноУказаннаяВерсияПлатформы; +Перем КаталогПлатформы1С; #КонецОбласти @@ -88,7 +93,29 @@ УправлениеКонфигуратором.КаталогСборки(КаталогВременнойИБ); УправлениеКонфигуратором.УстановитьКонтекст(СтрокаПодключения, Пользователь, Пароль); - Если НЕ ПустаяСтрока(ВерсияПлатформы) Тогда + КаталогПлатформы1С = ""; + ПутьКИсполняемомуФайлуПлатформы = ""; + ПутьКТонкомуКлиенту = ""; + ИмяФайлаПлатформы = ""; + ИмяФайлаТонкогоКлиента = ""; + ЯвноУказаннаяВерсияПлатформы = ВерсияПлатформы; + Если ЗначениеЗаполнено(ПараметрыКоманды) Тогда + КаталогПлатформы1С = ПараметрыКоманды["--v8-platform-path"]; + ИмяФайлаПлатформы = ПараметрыКоманды["--v8-exe-name"]; + ИмяФайлаТонкогоКлиента = ПараметрыКоманды["--v8c-exe-name"]; + КонецЕсли; + + ПутьКИсполняемомуФайлуПлатформы = ОбщиеМетоды.ПолучитьПутьКExeФайлуПлатформы( + КаталогПлатформы1С, + ВерсияПлатформы, + ИмяФайлаПлатформы, + ОбщиеМетоды.ИмяИсполняемогоФайлаПоУмолчанию("1cv8"), + "--v8-exe-name", + ТекущаяПроцедура); + + Если ЗначениеЗаполнено(ПутьКИсполняемомуФайлуПлатформы) Тогда + УправлениеКонфигуратором.ПутьКПлатформе1С(ПутьКИсполняемомуФайлуПлатформы); + ИначеЕсли НЕ ПустаяСтрока(ВерсияПлатформы) Тогда Если ЗначениеЗаполнено(ПараметрыКоманды) Тогда Разрядность = ПараметрыКоманды["--bitness"]; Разрядность = ОбщиеМетоды.РазрядностьПлатформы(Разрядность); @@ -102,6 +129,7 @@ ПутьКПредприятию = Платформа1С.ПутьКПредприятию("8.3"); УправлениеКонфигуратором.ПутьКПлатформе1С(ПутьКПредприятию); КонецЕсли; + Лог.Информация("Используется версия платформы %1", ТекущаяВерсияПлатформы()); Если Не ПустаяСтрока(КлючРазрешенияЗапуска) Тогда @@ -1485,7 +1513,10 @@ ТекущаяПроцедура = ДопСообщения.Ключ; Если ТолстыйКлиент = Ложь Тогда - ТонкийКлиент1С = УправлениеКонфигуратором.ПутьКТонкомуКлиенту1С(УправлениеКонфигуратором.ПутьКПлатформе1С()); + ТонкийКлиент1С = ПолучитьПутьКТонкомуКлиенту(); + Если НЕ ЗначениеЗаполнено(ТонкийКлиент1С) Тогда + ТонкийКлиент1С = УправлениеКонфигуратором.ПутьКТонкомуКлиенту1С(УправлениеКонфигуратором.ПутьКПлатформе1С()); + КонецЕсли; УправлениеКонфигуратором.ПутьКПлатформе1С(ТонкийКлиент1С); КонецЕсли; @@ -1583,7 +1614,10 @@ СтрокаЗапуска = СтрокаЗапуска + " " + Параметр; КонецЦикла; - Приложение = УправлениеКонфигуратором.ПутьКТонкомуКлиенту1С(); + Приложение = ПолучитьПутьКТонкомуКлиенту(); + Если НЕ ЗначениеЗаполнено(Приложение) Тогда + Приложение = УправлениеКонфигуратором.ПутьКТонкомуКлиенту1С(); + КонецЕсли; Если ТолстыйКлиент = Истина Тогда Приложение = УправлениеКонфигуратором.ПутьКПлатформе1С(); КонецЕсли; @@ -1814,16 +1848,40 @@ КонецПроцедуры +Функция ПолучитьПутьКТонкомуКлиенту() + Если ЗначениеЗаполнено(ПутьКТонкомуКлиенту) Тогда + Возврат ПутьКТонкомуКлиенту; + КонецЕсли; + + ПутьКТонкомуКлиенту = ОбщиеМетоды.ПолучитьПутьКExeФайлуПлатформы( + КаталогПлатформы1С, + ЯвноУказаннаяВерсияПлатформы, + ИмяФайлаТонкогоКлиента, + ОбщиеМетоды.ИмяИсполняемогоФайлаПоУмолчанию("1cv8c"), + "--v8c-exe-name", + "Инициализация"); + + Возврат ПутьКТонкомуКлиенту; +КонецФункции + Функция ТекущаяВерсияПлатформы() ПутьПредприятия = УправлениеКонфигуратором.ПутьКПлатформе1С(); ШаблонВерсии = Новый РегулярноеВыражение("8(\.\d+){3}"); ВсеСовпадения = ШаблонВерсии.НайтиСовпадения(ПутьПредприятия); - Если ВсеСовпадения.Количество() = 0 Тогда - ВызватьИсключение "Неопределена версия платформы!"; + Если ВсеСовпадения.Количество() > 0 Тогда + Возврат ВсеСовпадения[0].Значение; + КонецЕсли; + + Если ЗначениеЗаполнено(ЯвноУказаннаяВерсияПлатформы) Тогда + Возврат ЯвноУказаннаяВерсияПлатформы; + КонецЕсли; + + Если ЗначениеЗаполнено(ПутьКИсполняемомуФайлуПлатформы) Тогда + Возврат ПутьКИсполняемомуФайлуПлатформы; КонецЕсли; - Возврат ВсеСовпадения[0].Значение; + ВызватьИсключение "Неопределена версия платформы!"; КонецФункции diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.os" index ea10dba1..8f4972c4 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.os" @@ -24,16 +24,9 @@ КорневойПутьВыходной = Файл.ПолноеИмя; КлючКэша = ?(КлючКэша = Неопределено ИЛИ Не ЗначениеЗаполнено(КлючКэша), "compileepfrunner", КлючКэша); - НастройкиИзФайла = ОбщиеМетоды.ПрочитатьНастройкиФайлJSON(ПараметрыСистемы.КорневойПутьПроекта, ИмяКешФайла(), ИмяКешФайла()); - - Если НастройкиИзФайла.Количество() = 0 Тогда - НастройкиИзФайла = Новый Соответствие(); - НастройкиИзФайла.Вставить(КлючКэша, Новый Соответствие); - Лог.Отладка("Нет настроек в файле ./build/cache.json"); - ИначеЕсли НастройкиИзФайла.Получить(КлючКэша) = Неопределено Тогда - НастройкиИзФайла.Вставить(КлючКэша, Новый Соответствие); - Лог.Отладка("Нет настройки copmpileepfrunner в файле ./build/cache.json"); - КонецЕсли; + НастройкиИзФайла = НормализоватьНастройкиКэша( + ОбщиеМетоды.ПрочитатьНастройкиФайлJSON(ПараметрыСистемы.КорневойПутьПроекта, ИмяКешФайла(), ИмяКешФайла()), + КлючКэша); ЗначенияПараметровСборки = Новый Соответствие; ЗначенияПараметровСборки.Вставить("inDir", КорневойПутьВыходной); ЗначенияПараметровСборки.Вставить("outDir", КаталогВыгрузки); @@ -76,14 +69,10 @@ НастройкиИзФайла.Вставить(КлючКэша, Новый Соответствие); Иначе Лог.Отладка("Начали читать"); - НастройкиИзФайла = ОбщиеМетоды.ПрочитатьНастройкиФайлJSON(ПараметрыСистемы.КорневойПутьПроекта, ИмяКешФайла(), ИмяКешФайла()); + НастройкиИзФайла = НормализоватьНастройкиКэша( + ОбщиеМетоды.ПрочитатьНастройкиФайлJSON(ПараметрыСистемы.КорневойПутьПроекта, ИмяКешФайла(), ИмяКешФайла()), + КлючКэша); Лог.Отладка("Закончили читать"); - Если НастройкиИзФайла.Количество() = 0 Тогда - НастройкиИзФайла = Новый Соответствие(); - НастройкиИзФайла.Вставить(КлючКэша, Новый Соответствие); - ИначеЕсли НастройкиИзФайла.Получить(КлючКэша) = Неопределено Тогда - НастройкиИзФайла.Вставить(КлючКэша, Новый Соответствие); - КонецЕсли; КонецЕсли; ЗначенияПараметровСборки = Новый Соответствие; ЗначенияПараметровСборки.Вставить("inDir", ПутьКИсходникам); @@ -863,6 +852,29 @@ Возврат НРег(ПутьФайла); КонецФункции +Функция НормализоватьНастройкиКэша(Знач НастройкиИзФайла, Знач КлючКэша) + Если ТипЗнч(НастройкиИзФайла) <> Тип("Соответствие") Тогда + Лог.Отладка("Кэш в ./build/cache.json имеет некорректный тип, будет создан заново"); + НастройкиИзФайла = Новый Соответствие(); + КонецЕсли; + + Если НастройкиИзФайла.Количество() = 0 Тогда + Лог.Отладка("Нет настроек в файле ./build/cache.json"); + КонецЕсли; + + ЗначениеКлючаКэша = НастройкиИзФайла.Получить(КлючКэша); + Если ТипЗнч(ЗначениеКлючаКэша) <> Тип("Соответствие") Тогда + Если ЗначениеКлючаКэша <> Неопределено Тогда + Лог.Отладка("Настройка кэша %1 имеет некорректный тип, будет пересоздана", КлючКэша); + Иначе + Лог.Отладка("Нет настройки %1 в файле ./build/cache.json", КлючКэша); + КонецЕсли; + НастройкиИзФайла.Вставить(КлючКэша, Новый Соответствие); + КонецЕсли; + + Возврат НастройкиИзФайла; +КонецФункции + Процедура ЗаписатьВКешФайл(Знач НастройкиИзФайла) ПутьФайлаКеша = ОбъединитьПути(ПараметрыСистемы.КорневойПутьПроекта, ИмяКешФайла()); ПутьККэшу = Новый Файл(ПутьФайлаКеша).Путь; diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index 6d179ef2..9098eef3 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -144,6 +144,10 @@ СоответствиеПеременных.Вставить("RUNNER_LANGUAGE", "--language"); СоответствиеПеременных.Вставить("RUNNER_V8VERSION", "--v8version"); + СоответствиеПеременных.Вставить("RUNNER_V8_PLATFORM_PATH", "--v8-platform-path"); + СоответствиеПеременных.Вставить("RUNNER_V8_EXE_NAME", "--v8-exe-name"); + СоответствиеПеременных.Вставить("RUNNER_V8C_EXE_NAME", "--v8c-exe-name"); + СоответствиеПеременных.Вставить("RUNNER_IBCMD_EXE_NAME", "--ibcmd-exe-name"); СоответствиеПеременных.Вставить("RUNNER_ADDITIONAL", "--additional"); СоответствиеПеременных.Вставить("RUNNER_UCCODE", "--uccode"); СоответствиеПеременных.Вставить("RUNNER_COMMAND", "--command"); diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" index db30f0c0..398ac6f2 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" @@ -277,6 +277,36 @@ КонецФункции // ПолныйПуть() +Функция ИмяИсполняемогоФайлаПоУмолчанию(БазовоеИмя) Экспорт + Возврат БазовоеИмя + ?(ПараметрыСистемы.ЭтоWindows, ".exe", ""); +КонецФункции + +Функция ПолучитьПутьКExeФайлуПлатформы( + КаталогПлатформы, ВерсияПлатформы, ИмяФайла, ИмяФайлаПоУмолчанию, + ИмяПараметра, КонтекстОшибки = "Инициализация") Экспорт + + Если НЕ ЗначениеЗаполнено(КаталогПлатформы) Тогда + Возврат ""; + КонецЕсли; + + Ожидаем.Что(ЗначениеЗаполнено(ВерсияПлатформы), + СтрШаблон("%1: при указании --v8-platform-path необходимо также указать --v8version", КонтекстОшибки)).ЭтоИстина(); + + КаталогПлатформы = ПолныйПуть(КаталогПлатформы); + ИмяФайла = ?(ЗначениеЗаполнено(ИмяФайла), ИмяФайла, ИмяФайлаПоУмолчанию); + + КандидатПуть = ОбъединитьПути(КаталогПлатформы, ВерсияПлатформы, "bin", ИмяФайла); + ФайлКандидат = Новый Файл(КандидатПуть); + Если ФайлКандидат.Существует() Тогда + Возврат ФайлКандидат.ПолноеИмя; + КонецЕсли; + + ВызватьИсключение СтрШаблон( + "%1: не найден исполняемый файл платформы для параметра %2 по шаблону <%3>.", + КонтекстОшибки, ИмяПараметра, КандидатПуть); + +КонецФункции + Функция ЭтоОтносительныйПуть(Знач Путь) // BSLLS:IfElseDuplicatedCodeBlock-off 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 887cccfb..2525b812 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" @@ -213,6 +213,14 @@ Парсер.ДобавитьИменованныйПараметр("--db-pwd", "Пароль БД", Истина); Парсер.ДобавитьИменованныйПараметр("--v8version", "Версия платформы", Истина); Парсер.ДобавитьИменованныйПараметр("--bitness", "Разрядность платформы 1С. Варианты: x64,x86,x64x86,x86x64", Истина); + Парсер.ДобавитьИменованныйПараметр("--v8-platform-path", + "Путь к каталогу установки платформы 1С", Истина); + Парсер.ДобавитьИменованныйПараметр("--v8-exe-name", + "Имя исполняемого файла платформы для Конфигуратора/толстого клиента", Истина); + Парсер.ДобавитьИменованныйПараметр("--v8c-exe-name", + "Имя исполняемого файла тонкого клиента", Истина); + Парсер.ДобавитьИменованныйПараметр("--ibcmd-exe-name", + "Имя исполняемого файла ibcmd (например, ibcmd.exe)", Истина); Парсер.ДобавитьИменованныйПараметр("--additional", "Дополнительные параметры для передачи в 1С:Предприятие или Конфигуратор. Не для всех команд.", Истина); diff --git a/vanessa-runner-schema.json b/vanessa-runner-schema.json index f02684dd..28ec1ae8 100644 --- a/vanessa-runner-schema.json +++ b/vanessa-runner-schema.json @@ -8351,6 +8351,34 @@ "type": "string", "default": "" }, + "--v8-platform-path": { + "description": "Путь к каталогу платформы 1С", + "id": "/properties/default/--v8-platform-path", + "title": "The --v8-platform-path Schema", + "type": "string", + "default": "" + }, + "--v8-exe-name": { + "description": "Имя исполняемого файла платформы для Конфигуратора/толстого клиента", + "id": "/properties/default/--v8-exe-name", + "title": "The --v8-exe-name Schema", + "type": "string", + "default": "" + }, + "--v8c-exe-name": { + "description": "Имя исполняемого файла тонкого клиента", + "id": "/properties/default/--v8c-exe-name", + "title": "The --v8c-exe-name Schema", + "type": "string", + "default": "" + }, + "--ibcmd-exe-name": { + "description": "Имя исполняемого файла ibcmd", + "id": "/properties/default/--ibcmd-exe-name", + "title": "The --ibcmd-exe-name Schema", + "type": "string", + "default": "" + }, "--additional": { "description": "Дополнительные параметры для передачи в 1С:Предприятие или Конфигуратор. Не для всех команд.", "id": "/properties/default/--additional",