diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 8cb363c3e..246870877 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,7 +1,7 @@
-
+
-## Описание изменний
+## Описание изменений
diff --git a/.vscode/settings.json b/.vscode/settings.json
index c5dce9e42..e5a976106 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -31,6 +31,7 @@
"помогаторы",
"пресетов",
"Регистронезависимое",
+ "реквеста",
"релизный",
"Сериализатор",
"сериализацию",
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl"
index 9f8f04bdb..ddb495291 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl"
@@ -70,47 +70,12 @@
КорневойКаталог = ЮТФайлы.ОбъединитьПути(Результат, "..", "..", "..");
КаталогКомпонент = ЮТФайлы.ОбъединитьПути(КорневойКаталог, "ExtCompT");
-
ПараметрыТихойУстановки.РабочийКаталог = КаталогКомпонент;
- Информация = Новый СистемнаяИнформация();
- ОперационнаяСистема = Неопределено;
- Архитектура = Неопределено;
-
- Linux = "Linux";
- Windows = "Windows";
- MacOS = "MacOS";
-
- //@skip-check bsl-variable-name-invalid
- x86 = "i386";
- //@skip-check bsl-variable-name-invalid
- x64 = "x86_64";
-
- ТипКлиентскойПлатформы = Информация.ТипПлатформы;
-
- Если ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86 Тогда
- ОперационнаяСистема = Linux;
- Архитектура = x86;
- ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86_64 Тогда
- ОперационнаяСистема = Linux;
- Архитектура = x64;
- ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Windows_x86 Тогда
- ОперационнаяСистема = Windows;
- Архитектура = x86;
- ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Windows_x86_64 Тогда
- ОперационнаяСистема = Windows;
- Архитектура = x64;
- ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.MacOS_x86 Тогда
- ОперационнаяСистема = MacOS;
- Архитектура = x86;
- ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.MacOS_x86_64 Тогда
- ОперационнаяСистема = MacOS;
- Архитектура = x64;
- Иначе
- ЮТИсполнительСлужебныйКлиент.ОбработкаОшибки("Неподдерживаемый тип платформы");
- КонецЕсли;
- ПараметрыТихойУстановки.ОперационнаяСистема = ОперационнаяСистема;
- ПараметрыТихойУстановки.Архитектура = Архитектура;
+ ОписаниеПлатформы = ЮТОкружениеСлужебныйКлиентСервер.Платформа(Новый СистемнаяИнформация());
+ ПараметрыТихойУстановки.ОперационнаяСистема = ОписаниеПлатформы.ОперационнаяСистема;
+ ПараметрыТихойУстановки.Архитектура = ОписаниеПлатформы.Архитектура;
+
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыТихойУстановки);
КонецПроцедуры
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\276\320\264\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\276\320\264\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
index 2baddf600..2271b396d 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\276\320\264\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\276\320\264\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
@@ -132,7 +132,7 @@
КонецФункции
-Функция ВычислитьБезопасно(Выражение) Экспорт
+Функция ВычислитьБезопасно(Выражение, Параметры = Неопределено) Экспорт
#Если НЕ ВебКлиент И НЕ ТонкийКлиент Тогда
УстановитьБезопасныйРежим(Истина);
@@ -152,29 +152,25 @@
КонецФункции
-Функция ВызватьФункцию(ПолноеИмяМетода, Параметры, Безопасно = Истина) Экспорт
+Функция ВызватьФункциюКонфигурацииНаСервере(ИмяМодуля, ИмяМетода, Параметры = Неопределено) Экспорт
- Выражение = СтрокаВызоваМетода(ПолноеИмяМетода, Параметры);
+ Если НЕ ЮТСтроки.ЭтоВалидноеИмяПеременной(ИмяМодуля) Тогда
+ ВызватьИсключение "Передано невалидное имя общего модуля в `ЮТМетодыСлужебный.ВызватьФункциюКонфигурацииНаСервере`";
+ КонецЕсли;
-#Если НЕ ВебКлиент И НЕ ТонкийКлиент Тогда
- Если Безопасно Тогда
- УстановитьБезопасныйРежим(Истина);
- Попытка
- Значение = Вычислить(Выражение);
- Исключение
- УстановитьБезопасныйРежим(Ложь);
- ВызватьИсключение;
- КонецПопытки;
- УстановитьБезопасныйРежим(Ложь);
- Иначе
- //@skip-check server-execution-safe-mode
- Значение = Вычислить(Выражение);
+ Если НЕ ЮТСтроки.ЭтоВалидноеИмяПеременной(ИмяМетода) Тогда
+ ВызватьИсключение "Передано невалидное имя метода в `ЮТМетодыСлужебный.ВызватьФункциюКонфигурацииНаСервере`";
КонецЕсли;
-#Иначе
- Значение = Вычислить(Выражение);
-#КонецЕсли
- Возврат Значение;
+ Возврат ЮТОбщийСлужебныйВызовСервера.ВызватьФункциюКонфигурацииНаСервере(ИмяМодуля, ИмяМетода, Параметры);
+
+КонецФункции
+
+Функция ВызватьФункцию(ПолноеИмяМетода, Параметры, Безопасно = Истина) Экспорт
+
+ Выражение = СтрокаВызоваМетода(ПолноеИмяМетода, Параметры);
+
+ Возврат ВычислитьБезопасно(Выражение, Параметры);
КонецФункции
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl"
index 93863b778..70eea2a16 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl"
@@ -124,6 +124,14 @@
КонецФункции
+Функция ВызватьФункциюКонфигурацииНаСервере(Знач ИмяМодуля, Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт
+
+ ПолноеИмяМетода = ЮТСтроки.ДобавитьСтроку(ИмяМодуля, ИмяМетода, ".");
+
+ Возврат ЮТМетодыСлужебный.ВызватьФункцию(ПолноеИмяМетода, Параметры, Истина);
+
+КонецФункции
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl"
new file mode 100644
index 000000000..e1558defb
--- /dev/null
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl"
@@ -0,0 +1,184 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// Copyright 2021-2024 BIA-Technologies Limited Liability Company
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Собирает информацию об окружения, как сервера, так и клиента.
+//
+// Возвращаемое значение:
+// Структура - Описание окружения:
+// * ВерсияПлатформы - Строка
+// * ФайловаяБаза - Булево
+// * ОбычноеПриложение - Булево
+// * ВебКлиент - Булево
+// * ТолстыйКлиент - Булево
+// * ЛокальПлатформы - Строка
+// * ЛокальИнтерфейса - Строка
+// * ОперационнаяСистемаКлиент - Строка - Возможные значения: Linux, Windows, MacOS
+// * АрхитектураКлиент - Строка - Возможные значения: x86_64, i386
+// * ОперационнаяСистемаСервер - Строка - Возможные значения: Linux, Windows, MacOS
+// * АрхитектураСервер - Строка - Возможные значения: x86_64, i386
+// * ВстроенныйЯзык - Строка - Возможные значения: ru, en
+// * ИнформационнаяСреда - Строка
+Функция ОписаниеОкружения() Экспорт
+
+ СистемнаяИнформация = Новый СистемнаяИнформация();
+ ОписаниеСерверногоОкружения = ЮТМетодыСлужебный.ВызватьФункциюКонфигурацииНаСервере("ЮТОкружениеСлужебныйКлиентСервер",
+ "ОписаниеСерверногоОкружения");
+
+ Окружение = Новый Структура;
+ Окружение.Вставить("Конфигурация", ОписаниеСерверногоОкружения.Конфигурация);
+ Окружение.Вставить("ВерсияКонфигурации", ОписаниеСерверногоОкружения.ВерсияКонфигурации);
+ Окружение.Вставить("ВерсияПлатформы", СистемнаяИнформация.ВерсияПриложения);
+ Окружение.Вставить("ИнформационнаяСреда", "DEV");
+ Окружение.Вставить("ТестовыйДвижок", ОписаниеСерверногоОкружения.ТестовыйДвижок);
+ Окружение.Вставить("ВерсияТестовогоДвижка", ОписаниеСерверногоОкружения.ВерсияТестовогоДвижка);
+
+ Окружение.Вставить("ЛокальПлатформы", ЛокальПлатформы());
+ Окружение.Вставить("ЛокальИнтерфейса", ЛокальИнтерфейса());
+ Окружение.Вставить("ВстроенныйЯзык", ОписаниеСерверногоОкружения.ВстроенныйЯзык);
+
+ Платформа = Платформа(СистемнаяИнформация);
+ Окружение.Вставить("ОперационнаяСистемаКлиент", Платформа.ОперационнаяСистема);
+ Окружение.Вставить("АрхитектураКлиент", Платформа.Архитектура);
+
+ Окружение.Вставить("ОперационнаяСистемаСервер", ОписаниеСерверногоОкружения.ОперационнаяСистема);
+ Окружение.Вставить("АрхитектураСервер", ОписаниеСерверногоОкружения.Архитектура);
+
+ Окружение.Вставить("ФайловаяБаза", ЭтоФайловаяБаза());
+ Окружение.Вставить("ОбычноеПриложение", Ложь);
+ Окружение.Вставить("ВебКлиент", Ложь);
+ Окружение.Вставить("ТолстыйКлиент", Ложь);
+
+#Если ВебКлиент Тогда
+ Окружение.ВебКлиент = Истина;
+#ИначеЕсли ТолстыйКлиентОбычноеПриложение Тогда
+ Окружение.ОбычноеПриложение = Истина;
+ Окружение.ТолстыйКлиент = Истина;
+#ИначеЕсли ТолстыйКлиентУправляемоеПриложение Тогда
+ Окружение.ТолстыйКлиент = Истина;
+#КонецЕсли
+
+ //@skip-check use-non-recommended-method
+ Окружение.Вставить("ВремяЗапуска", ТекущаяДата()); // BSLLS:DeprecatedCurrentDate-off
+
+ //@skip-check constructor-function-return-section
+ Возврат Окружение;
+
+КонецФункции
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+Процедура Инициализация(ПараметрыЗапуска) Экспорт
+
+ Окружение = ОписаниеОкружения();
+ ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста("Окружение", Окружение, Истина);
+
+КонецПроцедуры
+
+Функция ЭтоФайловаяБаза()
+
+ Возврат СтрНайти(Врег(СтрокаСоединенияИнформационнойБазы()), "FILE=") = 0;
+
+КонецФункции
+
+Функция Платформа(СистемнаяИнформация) Экспорт
+
+ ОперационнаяСистема = Неопределено;
+ Архитектура = Неопределено;
+
+ Linux = "Linux";
+ Windows = "Windows";
+ MacOS = "MacOS";
+
+ //@skip-check bsl-variable-name-invalid
+ x86 = "i386";
+ //@skip-check bsl-variable-name-invalid
+ x64 = "x86_64";
+
+ ТипКлиентскойПлатформы = СистемнаяИнформация.ТипПлатформы;
+
+ Если ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86 Тогда
+ ОперационнаяСистема = Linux;
+ Архитектура = x86;
+ ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86_64 Тогда
+ ОперационнаяСистема = Linux;
+ Архитектура = x64;
+ ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Windows_x86 Тогда
+ ОперационнаяСистема = Windows;
+ Архитектура = x86;
+ ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Windows_x86_64 Тогда
+ ОперационнаяСистема = Windows;
+ Архитектура = x64;
+ ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.MacOS_x86 Тогда
+ ОперационнаяСистема = MacOS;
+ Архитектура = x86;
+ ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.MacOS_x86_64 Тогда
+ ОперационнаяСистема = MacOS;
+ Архитектура = x64;
+ Иначе
+ ВызватьИсключение "Неподдерживаемый тип платформы";
+ КонецЕсли;
+
+ Возврат Новый Структура("ОперационнаяСистема, Архитектура", ОперационнаяСистема, Архитектура);
+
+КонецФункции
+
+#Если Сервер Тогда
+Функция ОписаниеСерверногоОкружения() Экспорт
+
+ СистемнаяИнформация = Новый СистемнаяИнформация();
+ Платформа = Платформа(СистемнаяИнформация);
+
+ Окружение = Новый Структура;
+ Окружение.Вставить("ОперационнаяСистема", Платформа.ОперационнаяСистема);
+ Окружение.Вставить("Архитектура", Платформа.Архитектура);
+
+ ЭтоРусскийВстроенныйЯзык = Метаданные.ВариантВстроенногоЯзыка = Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка.Русский;
+ Окружение.Вставить("ВстроенныйЯзык", Формат(ЭтоРусскийВстроенныйЯзык, "БЛ=en; БИ=ru;"));
+
+ Расширение = Метаданные.ОбщиеМодули.ЮТОкружениеСлужебныйКлиентСервер.РасширениеКонфигурации();
+ Окружение.Вставить("ТестовыйДвижок", Расширение.Имя);
+ Окружение.Вставить("ВерсияТестовогоДвижка", Расширение.Версия);
+ Окружение.Вставить("Конфигурация", Метаданные.Представление());
+ Окружение.Вставить("ВерсияКонфигурации", Метаданные.Версия);
+
+ Возврат Окружение;
+
+КонецФункции
+#КонецЕсли
+
+Функция ЛокальИнтерфейса()
+
+#Если Клиент Тогда
+ Возврат ТекущийЯзык();
+#Иначе
+ Возврат ТекущийЯзык().КодЯзыка;
+#КонецЕсли
+
+КонецФункции
+
+Функция ЛокальПлатформы()
+
+ Возврат ТекущийЯзыкСистемы();
+
+КонецФункции
+
+#КонецОбласти
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo"
new file mode 100644
index 000000000..d765a3dd5
--- /dev/null
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo"
@@ -0,0 +1,12 @@
+
+
+ ЮТОкружениеСлужебныйКлиентСервер
+
+ ru
+ Окружение служебный
+
+ true
+ true
+ true
+ true
+
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
index bc6bc3c1c..883dcf5b3 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202Allure\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
@@ -54,6 +54,8 @@
КонецЦикла;
КонецЦикла;
+
+ ЗаписатьИнформациюОбОкружении(Каталог);
#КонецЕсли
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьОбработчик(Обработчик);
@@ -264,10 +266,68 @@
КонецФункции
Функция ЮниксВремя(ДатаВМиллисекундах)
-
+
Возврат ДатаВМиллисекундах - 62135596800000;
+
+КонецФункции
+Процедура ЗаписатьИнформациюОбОкружении(Каталог)
+
+ Окружение = ЮТест.Окружение();
+
+ Если НЕ ЗначениеЗаполнено(Окружение) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ИмяФайла = ЮТФайлы.ОбъединитьПути(Каталог, "environment.properties");
+ Запись = Новый ЗаписьТекста(ИмяФайла, "ISO-8859-1", , Ложь);
+
+ Для Каждого Элемент Из ЮТест.Окружение() Цикл
+ ЗаписатьСтрокуProperties(Запись, СтрШаблон("%1=%2", Элемент.Ключ, Элемент.Значение));
+ КонецЦикла;
+ Запись.Закрыть();
+
+КонецПроцедуры
+
+Процедура ЗаписатьСтрокуProperties(Запись, ВходнаяСтрока)
+
+ ГраницаЛатиницы = 127;
+
+ Для Инд = 1 По СтрДлина(ВходнаяСтрока) Цикл
+ КодСимволаЗначения = КодСимвола(ВходнаяСтрока, Инд);
+ Если КодСимволаЗначения > ГраницаЛатиницы Тогда
+ Запись.Записать("\u" + ПеревестиВШестнадцатеричнуюСистему(КодСимволаЗначения));
+ Иначе
+ Запись.Записать(Сред(ВходнаяСтрока, Инд, 1));
+ КонецЕсли;
+ КонецЦикла;
+
+ Запись.Записать(Символы.ПС);
+
+КонецПроцедуры
+
+Функция ПеревестиВШестнадцатеричнуюСистему(Знач Число)
+
+ Основание = 16;
+ Длина = 4;
+
+ СимволыСистемы = СтрРазделить("0 1 2 3 4 5 6 7 8 9 A B C D E F", " ");
+
+ Результат = "";
+ Пока Число <> 0 Цикл
+ Остаток = Число % Основание;
+ Результат = СимволыСистемы[Остаток] + Результат;
+ Число = Цел(Число / Основание);
+ КонецЦикла;
+
+ Пока СтрДлина(Результат) < Длина Цикл
+ Результат = "0" + Результат;
+ КонецЦикла;
+
+ Возврат Результат;
+
КонецФункции
+
#КонецЕсли
#КонецОбласти
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
index 2d6263189..0f2333926 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\321\202\321\207\320\265\321\202JUnit\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
@@ -78,7 +78,8 @@
КонецЦикла;
- ЗаписатьСвойства(ЗаписьXML, Новый Структура("executor, reportDate", "BIA YAxUnit", ТекущаяДата()));
+ Окружение = ЮТест.Окружение();
+ ЗаписатьСвойства(ЗаписьXML, Окружение);
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/Module.bsl"
index 143527091..bc1527e52 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272/Module.bsl"
@@ -29,6 +29,20 @@
КонецПроцедуры
+// Фрмирует сообщение об ошибки.
+//
+// Параметры:
+// Описание - Строка - Префикс текста ошибки
+// Ошибка - Строка, ИнформацияОбОшибке - Ошибка
+//
+// Возвращаемое значение:
+// Строка
+Функция ПредставлениеОшибки(Описание, Ошибка = Неопределено) Экспорт
+
+ Возврат ЮТРегистрацияОшибокСлужебный.ПредставлениеОшибки(Описание, Ошибка);
+
+КонецФункции
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
index a68985960..b3b019cc3 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\321\217\320\236\321\210\320\270\320\261\320\276\320\272\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
@@ -163,13 +163,15 @@
КонецПроцедуры
-Функция ПредставлениеОшибки(Знач Описание, Знач Ошибка) Экспорт
+Функция ПредставлениеОшибки(Описание, Ошибка) Экспорт
Если ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке") Тогда
- Ошибка = Символы.ПС + ПодробноеПредставлениеОшибки(Ошибка);
+ ПредставлениеОшибки = Символы.ПС + ПодробноеПредставлениеОшибки(Ошибка);
+ Иначе
+ ПредставлениеОшибки = Ошибка;
КонецЕсли;
- Возврат СтрШаблон("%1: %2", Описание, Ошибка);
+ Возврат ЮТСтроки.ДобавитьСтроку(Описание, ПредставлениеОшибки, ": ");
КонецФункции
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
index e7a318880..6e9806648 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
@@ -312,6 +312,9 @@
ЮТЛогирование.Отладка(СтрШаблон("Обработка события `%1` - `%2`", ИмяСобытия, ПолноеИмяМетода));
Ошибка = ЮТМетодыСлужебный.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыСобытия);
+ Если Ошибка <> Неопределено Тогда
+ ЮТЛогирование.Ошибка(ЮТРегистрацияОшибок.ПредставлениеОшибки("Ошибка обработки события", Ошибка));
+ КонецЕсли;
Если Ошибка <> Неопределено Тогда
Ошибки.Добавить(Ошибка);
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/Module.bsl"
index 19d1a27d3..c941f2838 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\202\321\200\320\276\320\272\320\270/Module.bsl"
@@ -232,7 +232,7 @@
Для Позиция = 1 По СтрДлина(Значение) Цикл
КодСимволаШаблона = КодСимвола(Шаблон, Позиция);
КодСимволаЗначения = КодСимвола(Значение, Позиция);
-
+
Если КодСимволаШаблона = 88 // X
И ((КодСимволаЗначения < 48 ИЛИ КодСимволаЗначения > 57) // 0..9
И (КодСимволаЗначения < 97 ИЛИ КодСимволаЗначения > 102) // a..f
@@ -276,6 +276,25 @@
КонецФункции
+// Проверяет переданную строку, является ли она подходщим именем переменной - должна соответствовать требованиям к именам переменных
+//
+// Параметры:
+// ИмяПеременной - Строка
+//
+// Возвращаемое значение:
+// Булево - Это валидное имя переменной
+Функция ЭтоВалидноеИмяПеременной(ИмяПеременной) Экспорт
+
+ Попытка
+ Проверка = Новый Структура;
+ Проверка.Вставить(ИмяПеременной);
+ Возврат Истина;
+ Исключение
+ Возврат Ложь;
+ КонецПопытки;
+
+КонецФункции
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\265\321\201\321\202/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\265\321\201\321\202/Module.bsl"
index b8d45af82..eb36ff07c 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\265\321\201\321\202/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\265\321\201\321\202/Module.bsl"
@@ -220,4 +220,28 @@
КонецФункции
+// Возвращает информацию об окружении.
+//
+// Возвращаемое значение:
+// Структура - Описание окружения:
+// * ВерсияПлатформы - Строка
+// * ФайловаяБаза - Булево
+// * ОбычноеПриложение - Булево
+// * ВебКлиент - Булево
+// * ТолстыйКлиент - Булево
+// * ЛокальПлатформы - Строка
+// * ЛокальИнтерфейса - Строка
+// * ОперационнаяСистемаКлиент - Строка - Возможные значения: Linux, Windows, MacOS
+// * АрхитектураКлиент - Строка - Возможные значения: x86_64, i386
+// * ОперационнаяСистемаСервер - Строка - Возможные значения: Linux, Windows, MacOS
+// * АрхитектураСервер - Строка - Возможные значения: x86_64, i386
+// * ВстроенныйЯзык - Строка - Возможные значения: ru, en
+// * ИнформационнаяСреда - Строка
+Функция Окружение() Экспорт
+
+ //@skip-check constructor-function-return-section
+ Возврат ЮТКонтекстСлужебный.ЗначениеКонтекста("Окружение");
+
+КонецФункции
+
#КонецОбласти
diff --git a/exts/yaxunit/src/Configuration/Configuration.mdo b/exts/yaxunit/src/Configuration/Configuration.mdo
index 1acfe00b0..0c7b93b9c 100644
--- a/exts/yaxunit/src/Configuration/Configuration.mdo
+++ b/exts/yaxunit/src/Configuration/Configuration.mdo
@@ -96,6 +96,7 @@
CommonModule.ЮТНастройкиВыполнения
CommonModule.ЮТОбщий
CommonModule.ЮТОбщийСлужебныйВызовСервера
+ CommonModule.ЮТОкружениеСлужебныйКлиентСервер
CommonModule.ЮТОтчетAllureСлужебный
CommonModule.ЮТОтчетJSONСлужебный
CommonModule.ЮТОтчетJUnitСлужебный
diff --git "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201.mdo" "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201.mdo"
index 68a3a618e..ccb510e78 100644
--- "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201.mdo"
+++ "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201.mdo"
@@ -26,6 +26,7 @@
CommonModule.ЮТМетодыСлужебный
CommonModule.ЮТНастройкиВыполнения
CommonModule.ЮТОбщийСлужебныйВызовСервера
+ CommonModule.ЮТОкружениеСлужебныйКлиентСервер
CommonModule.ЮТОтчетСлужебный
CommonModule.ЮТПодключаемыеМодулиСлужебный
CommonModule.ЮТПроверкиСлужебный
diff --git "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\320\265\320\274\321\213\320\265\320\234\320\276\320\264\321\203\320\273\320\270/Subsystems/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271/Subsystems/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217.mdo" "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\320\265\320\274\321\213\320\265\320\234\320\276\320\264\321\203\320\273\320\270/Subsystems/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271/Subsystems/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217.mdo"
index 90f3f4ecf..4f5813280 100644
--- "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\320\265\320\274\321\213\320\265\320\234\320\276\320\264\321\203\320\273\320\270/Subsystems/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271/Subsystems/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217.mdo"
+++ "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\260\320\265\320\274\321\213\320\265\320\234\320\276\320\264\321\203\320\273\320\270/Subsystems/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\270\320\241\320\276\320\261\321\213\321\202\320\270\320\271/Subsystems/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217.mdo"
@@ -7,5 +7,6 @@
true
CommonModule.ЮТЗависимостиСлужебный
+ CommonModule.ЮТОкружениеСлужебныйКлиентСервер
Subsystem.ЮТПодключаемыеМодули.Subsystem.ОбработчикиСобытий
diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\265\321\201\321\202/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\265\321\201\321\202/Module.bsl"
index 55c8effa5..562c7175d 100644
--- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\265\321\201\321\202/Module.bsl"
+++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\265\321\201\321\202/Module.bsl"
@@ -29,6 +29,7 @@
.ДобавитьТест("ПроверкаПереопределенногоКонтекста").Перед("Перед_ПроверкаПереопределенногоКонтекста")
.ДобавитьТестовыйНабор("ПовторнаяПроверкаКонтекста")
.ДобавитьТест("ПроверкаКонтекста")
+ .ДобавитьТест("Окружение")
;
КонецПроцедуры
@@ -74,10 +75,10 @@
ЮТест.Контекст().Значение("Коллекция").Добавить("ПослеВсехТестов");
#Если Сервер Тогда
ЮТест.ОжидаетЧто(ЮТест.Контекст().Значение("Коллекция"))
- .ИмеетДлину(18); // Количество вызванных обработчиков событий
+ .ИмеетДлину(20); // Количество вызванных обработчиков событий
#Иначе
ЮТест.ОжидаетЧто(ЮТест.Контекст().Значение("Коллекция"))
- .ИмеетДлину(16); // Количество вызванных обработчиков событий
+ .ИмеетДлину(18); // Количество вызванных обработчиков событий
#КонецЕсли
КонецПроцедуры
@@ -151,4 +152,28 @@
КонецПроцедуры
#КонецЕсли
+Процедура Окружение() Экспорт
+
+ Окружение = ЮТест.Окружение();
+
+ ЮТест.ОжидаетЧто(Окружение)
+ .Заполнено()
+ .ИмеетТип("Структура")
+ .Свойство("ВстроенныйЯзык").Равно("ru")
+ .Свойство("ОбычноеПриложение").Равно(Ложь)
+ .Свойство("ВебКлиент").Равно(Ложь)
+ .Свойство("ТолстыйКлиент").Равно(Ложь)
+ .Свойство("ВерсияПлатформы")
+ .Свойство("ФайловаяБаза")
+ .Свойство("ЛокальПлатформы")
+ .Свойство("ЛокальИнтерфейса")
+ .Свойство("ОперационнаяСистемаКлиент")
+ .Свойство("АрхитектураКлиент")
+ .Свойство("ОперационнаяСистемаСервер")
+ .Свойство("АрхитектураСервер")
+ .Свойство("ИнформационнаяСреда")
+ ;
+
+КонецПроцедуры
+
#КонецОбласти