diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl"
index f2a096b02..194f174b8 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl"
@@ -26,6 +26,7 @@
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикЗагрузитьПараметры");
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикАнализПараметровЗапуска");
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикЗагрузитьТесты");
+ ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикПодключитьКомпоненты");
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикВыполнитьТестирование");
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикСохранитьОтчет");
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикСохранитьКодВозврата");
@@ -158,6 +159,13 @@
КонецПроцедуры
+Процедура ОбработчикПодключитьКомпоненты(Результат, ДополнительныеПараметры) Экспорт
+
+ ЮТКомпонентыКлиент.ТихаяУстановкаКомпонент();
+ ВызватьСледующийОбработчик(ДополнительныеПараметры);
+
+КонецПроцедуры
+
#КонецОбласти
Процедура ВызватьСледующийОбработчик(ПараметрыИсполнения, Результат = Неопределено)
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/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/Module.bsl"
new file mode 100644
index 000000000..cac59d236
--- /dev/null
+++ "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/Module.bsl"
@@ -0,0 +1,104 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// Copyright 2021-2023 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.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Область ПрограммныйИнтерфейс
+
+// Возвращает внешнюю компоненту, реализующую паузу
+//
+// Возвращаемое значение:
+// ВнешнийОбъект
+Функция Пауза() Экспорт
+
+ Возврат СоздатьКомпоненту(ОписаниеКомпонентыПауза());
+
+КонецФункции
+
+#КонецОбласти
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Создает внешнюю компоненту по описанию
+//
+// Параметры:
+// ОписаниеКомпоненты - см. ОписаниеКомпоненты
+//
+// Возвращаемое значение:
+// ВнешнийОбъект
+Функция СоздатьКомпоненту(ОписаниеКомпоненты) Экспорт
+
+ Если ПодключитьКомпоненту(ОписаниеКомпоненты.ИмяМакета, ОписаниеКомпоненты.ИмяКомпоненты, Истина) Тогда
+ Возврат Новый (ОписаниеКомпоненты.ИмяКласса);
+ Иначе
+ ВызватьИсключение "Не удалось подключить внешнюю компоненту " + ОписаниеКомпоненты.ИмяКласса;
+ КонецЕсли;
+
+КонецФункции
+
+// Подключает внещнюю компоненту из макета
+//
+// Параметры:
+// ИмяМакета - Строка - Имя макета, в котором хранится компонента
+// ИмяКомпоненты - Строка - Имя компоненты
+// Кэшировать - Булево - Кэшировать создание компоненты
+//
+// Возвращаемое значение:
+// Булево - Успешность подключения
+Функция ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты, Кэшировать) Экспорт
+
+ Если Кэшировать Тогда
+ Возврат ЮТПовторногоИспользования.ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты);
+ КонецЕсли;
+
+ Возврат ПодключитьВнешнююКомпоненту(ИмяМакета, ИмяКомпоненты, ТипВнешнейКомпоненты.Native);
+
+КонецФункции
+
+// Описание компоненты реализующей паузу.
+//
+// Возвращаемое значение:
+// см. ОписаниеКомпоненты
+Функция ОписаниеКомпонентыПауза() Экспорт
+
+ Возврат ОписаниеКомпоненты("ОбщийМакет.ЮТYaxUnitAddIn", "YaxUnitAddin", "Sleep");
+
+КонецФункции
+
+// Описание внешней компоненты.
+//
+// Параметры:
+// ИмяМакета - Строка - Имя макета, в котором хранится компонента
+// ИмяКомпоненты - Строка -Имя компоненты
+// ИмяКласса - Строка - Имя класса, по которому создается компонента
+//
+// Возвращаемое значение:
+// ФиксированнаяСтруктура - Описание компоненты:
+// * ИмяМакета - Строка - Имя макета, в котором хранится компонента
+// * ИмяКомпоненты - Строка -Имя компоненты
+// * ИмяКласса - Строка - Имя класса
+Функция ОписаниеКомпоненты(ИмяМакета, ИмяКомпоненты, ИмяКласса) Экспорт
+
+ Описание = Новый Структура;
+ Описание.Вставить("ИмяМакета", ИмяМакета);
+ Описание.Вставить("ИмяКомпоненты", ИмяКомпоненты);
+ Описание.Вставить("ИмяКласса", СтрШаблон("AddIn.%1.%2", ИмяКомпоненты, ИмяКласса));
+
+ Возврат Новый ФиксированнаяСтруктура(Описание);
+
+КонецФункции
+
+#КонецОбласти
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\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213.mdo" "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\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213.mdo"
new file mode 100644
index 000000000..2a4b2c61b
--- /dev/null
+++ "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\256\320\242\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213.mdo"
@@ -0,0 +1,11 @@
+
+
+ ЮТКомпоненты
+
+ ru
+ Компоненты
+
+ true
+ true
+ true
+
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\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\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213\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"
new file mode 100644
index 000000000..ec01d6304
--- /dev/null
+++ "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\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"
@@ -0,0 +1,108 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// Copyright 2021-2023 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.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Функция ФайлКомпоненты(Знач ИмяМакета, Знач ОперационнаяСистема, Знач Архитектура) Экспорт
+
+ Данные = ЮТОбщийВызовСервера.Макет(ИмяМакета);
+ ЧтениеАрхива = Новый ЧтениеZipФайла();
+ ЧтениеАрхива.Открыть(Данные.ОткрытьПотокДляЧтения());
+
+ ИмяФайлаКомпоненты = ИмяФайлаКомпоненты(ЧтениеАрхива, ОперационнаяСистема, Архитектура);
+
+ Если ИмяФайлаКомпоненты = Неопределено Тогда
+ ВызватьИсключение "Компонента не поддерживает клиентское окружение";
+ КонецЕсли;
+
+ Данные = ДвоичныеДанныеЭлемента(ЧтениеАрхива, ИмяФайлаКомпоненты);
+
+ Возврат Новый ФиксированнаяСтруктура("ИмяФайла, Данные", ИмяФайлаКомпоненты, Данные);
+
+КонецФункции
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+Функция ИмяФайлаКомпоненты(ЧтениеАрхива, ОперационнаяСистема, Архитектура)
+
+ Данные = ДвоичныеДанныеЭлемента(ЧтениеАрхива, "MANIFEST.XML");
+
+ Если Данные = Неопределено Тогда
+ ВызватьИсключение "Архив компоненты не содержит манифеста";
+ КонецЕсли;
+
+ ЧтениеXML = Новый ЧтениеXML();
+ ЧтениеXML.ОткрытьПоток(Данные.ОткрытьПотокДляЧтения());
+
+ ИмяФайлаКомпоненты = Неопределено;
+
+ Пока ЧтениеXML.Прочитать() Цикл
+
+ Если ЭтоПодходящийУзел(ЧтениеXML, ОперационнаяСистема, Архитектура) Тогда
+ ИмяФайлаКомпоненты = ЧтениеXML.ЗначениеАтрибута("path");
+ Прервать;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ ЧтениеXML.Закрыть();
+
+ Возврат ИмяФайлаКомпоненты;
+
+КонецФункции
+
+Функция ЭтоПодходящийУзел(ЧтениеXML, ОперационнаяСистема, Архитектура)
+
+ Если ЧтениеXML.ТипУзла <> ТипУзлаXML.НачалоЭлемента ИЛИ СтрСравнить(ЧтениеXML.Имя, "component") <> 0 Тогда
+ Возврат Ложь;
+ КонецЕсли;
+
+ ОперационнаяСистемаУзла = ЧтениеXML.ЗначениеАтрибута("os");
+ АрхитектураУзла = ЧтениеXML.ЗначениеАтрибута("arch");
+
+ Возврат ОперационнаяСистема = ОперационнаяСистемаУзла И Архитектура = АрхитектураУзла;
+
+КонецФункции
+
+Функция ДвоичныеДанныеЭлемента(ЧтениеАрхива, ИмяФайла)
+
+ ЭлементФайла = Неопределено;
+
+ Для Каждого Элемент Из ЧтениеАрхива.Элементы Цикл
+ Если СтрСравнить(Элемент.ПолноеИмя, ИмяФайла) = 0 Тогда
+ ЭлементФайла = Элемент;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если ЭлементФайла = Неопределено Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
+ ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
+ ЧтениеАрхива.Извлечь(ЭлементФайла, ИмяВременногоФайла, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
+
+ Данные = Новый ДвоичныеДанные(ЮТФайлы.ОбъединитьПути(ИмяВременногоФайла, ИмяФайла));
+ УдалитьФайлы(ИмяВременногоФайла);
+
+ Возврат Данные;
+
+КонецФункции
+
+#КонецОбласти
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\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\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\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" "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\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\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\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo"
new file mode 100644
index 000000000..2fdf4a25f
--- /dev/null
+++ "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\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\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\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo"
@@ -0,0 +1,10 @@
+
+
+ ЮТКомпонентыВызовСервера
+
+ ru
+ Компоненты вызов сервера
+
+ true
+ true
+
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\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\232\320\273\320\270\320\265\320\275\321\202/Module.bsl"
new file mode 100644
index 000000000..90adc1bd6
--- /dev/null
+++ "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\232\320\273\320\270\320\265\320\275\321\202/Module.bsl"
@@ -0,0 +1,113 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// Copyright 2021-2023 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 = "Linux";
+ Windows = "Windows";
+ MacOS = "MacOS";
+ x86 = "i386";
+ 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;
+ Иначе
+ ВызватьИсключение "Неподдерживаемый тип платформы";
+ КонецЕсли;
+
+ ДанныеФайла = ЮТКомпонентыВызовСервера.ФайлКомпоненты(ИмяМакета, ОперационнаяСистема, Архитектура);
+
+ Путь = РабочийКаталогДанныхПользователя();
+ КорневойКаталог = ЮТФайлы.ОбъединитьПути(Путь, "..", "..", "..");
+
+ КаталогКомпонент = ЮТФайлы.ОбъединитьПути(КорневойКаталог, "ExtCompT");
+ ФайлРеестра = ЮТФайлы.ОбъединитьПути(КаталогКомпонент, "registry.xml");
+ ФайлКомпоненты = ЮТФайлы.ОбъединитьПути(КаталогКомпонент, ДанныеФайла.ИмяФайла);
+
+ ДанныеФайла.Данные.Записать(ФайлКомпоненты);
+ ЗаписатьВРеестр(ФайлРеестра, ДанныеФайла.ИмяФайла);
+
+КонецПроцедуры
+
+Процедура ЗаписатьВРеестр(ФайлРеестра, ИмяФайла)
+
+ Данные = Новый ДвоичныеДанные(ФайлРеестра);
+ Текст = ПолучитьСтрокуИзДвоичныхДанных(Данные);
+
+ Если СтрНайти(Текст, "
+ |
+ |
+ |", ИмяФайла);
+ ИначеЕсли СтрНайти(Текст, СтрШаблон("path=""%1""", ИмяФайла)) <> 0 Тогда // Компонента уже зарегистрированна
+ Возврат;
+ Иначе // Добавляем компоненту
+ Запись = СтрШаблон(" ", ИмяФайла);
+ Текст = СтрЗаменить(Текст, "", Запись + Символы.ПС + "");
+ КонецЕсли;
+
+ Данные = ПолучитьДвоичныеДанныеИзСтроки(Текст, КодировкаТекста.UTF8, Истина);
+ Данные.Записать(ФайлРеестра);
+
+КонецПроцедуры
+
+#КонецОбласти
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\232\320\273\320\270\320\265\320\275\321\202/\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\232\320\273\320\270\320\265\320\275\321\202.mdo" "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\232\320\273\320\270\320\265\320\275\321\202/\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\232\320\273\320\270\320\265\320\275\321\202.mdo"
new file mode 100644
index 000000000..3a4492e06
--- /dev/null
+++ "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\232\320\273\320\270\320\265\320\275\321\202/\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\232\320\273\320\270\320\265\320\275\321\202.mdo"
@@ -0,0 +1,10 @@
+
+
+ ЮТКомпонентыКлиент
+
+ ru
+ Компоненты клиент
+
+ true
+ true
+
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271/Module.bsl"
index b36354853..e2539b45e 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271/Module.bsl"
@@ -841,6 +841,16 @@
КонецПроцедуры
+// Преостанавливает поток выполнения на указанное количество секунд
+//
+// Параметры:
+// Время - Число - Продолжительность паузы в секундах, возможно указывать дробное значение
+Процедура Пауза(Время) Экспорт
+
+ ЮТКомпоненты.Пауза().Sleep(Цел(1000 * Время));
+
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\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\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 0b4dd2ee1..325220422 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\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\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"
@@ -46,4 +46,33 @@
КонецФункции
+Функция Макет(ИмяМакета) Экспорт
+
+ ЧастиИмени = СтрРазделить(ИмяМакета, ".");
+
+ Если ЧастиИмени.Количество() < 2 Тогда
+ ВызватьИсключение СтрШаблон("Некорректно имя макет, если вы хотите получить данные общего макета необходимо указать `ОбщийМакет.%1`",
+ ИмяМакета);
+ КонецЕсли;
+
+ ИндексОбласти = 0;
+ Если СтрСравнить(ЧастиИмени[0], "ОбщийМакет") = 0 Тогда
+ Макет = ПолучитьОбщийМакет(ЧастиИмени[1]);
+ ИндексОбласти = 2;
+ ИначеЕсли ЧастиИмени.Количество() >= 3 Тогда
+ Менеджер = Менеджер(СтрШаблон("%1.%2", ЧастиИмени[0], ЧастиИмени[1]));
+ Макет = Менеджер.ПолучитьМакет(ЧастиИмени[2]);
+ ИндексОбласти = 3;
+ Иначе
+ ВызватьИсключение СтрШаблон("Некорректное имя макета `%1`", ИмяМакета);
+ КонецЕсли;
+
+ Если ЧастиИмени.Количество() > ИндексОбласти Тогда
+ Макет = Макет.ПолучитьОбласть(ЧастиИмени[ИндексОбласти]);
+ КонецЕсли;
+
+ Возврат Макет;
+
+КонецФункции
+
#КонецОбласти
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl"
index 7d64a2308..63c8f2008 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\237\320\276\320\262\321\202\320\276\321\200\320\275\320\276\320\263\320\276\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217/Module.bsl"
@@ -42,4 +42,10 @@
КонецФункции
+Функция ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты) Экспорт
+
+ Возврат ЮТКомпоненты.ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты, Ложь);
+
+КонецФункции
+
#КонецОбласти
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\271\320\273\321\213/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\271\320\273\321\213/Module.bsl"
index 249d5d762..d3c4baec0 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\271\320\273\321\213/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\271\320\273\321\213/Module.bsl"
@@ -77,26 +77,28 @@
// Параметры:
// Путь1 - Строка - базовый путь к каталогу
// Путь2 - Строка - относительный путь к вложенному элементу
+// Путь3 - Строка - относительный путь к вложенному элементу
+// Путь4 - Строка - относительный путь к вложенному элементу
+// Путь5 - Строка - относительный путь к вложенному элементу
//
// Возвращаемое значение:
// Строка - Объединенный путь
-Функция ОбъединитьПути(Путь1, Путь2) Экспорт
+Функция ОбъединитьПути(Путь1, Путь2, Путь3 = Неопределено, Путь4 = Неопределено, Путь5 = Неопределено) Экспорт
- Результат = Неопределено;
+ Разделитель = ПолучитьРазделительПути();
- Если ЗначениеЗаполнено(Путь1) И ЗначениеЗаполнено(Путь2) Тогда
- Разделитель = ПолучитьРазделительПути();
-
- Если НЕ СтрЗаканчиваетсяНа(Путь1, Разделитель) И НЕ СтрНачинаетсяС(Разделитель, Путь2) Тогда
- Результат = СтрШаблон("%1%2%3", Путь1, Разделитель, Путь2);
- Иначе
- Результат = Путь1 + Путь2;
- КонецЕсли;
-
- ИначеЕсли ЗначениеЗаполнено(Путь1) Тогда
- Результат = Путь1;
- Иначе
- Результат = Путь2;
+ Результат = ДополнитьПуть(Путь1, Путь2, Разделитель);
+
+ Если Путь3 <> Неопределено Тогда
+ Результат = ДополнитьПуть(Результат, Путь3, Разделитель);
+ КонецЕсли;
+
+ Если Путь4 <> Неопределено Тогда
+ Результат = ДополнитьПуть(Результат, Путь4, Разделитель);
+ КонецЕсли;
+
+ Если Путь5 <> Неопределено Тогда
+ Результат = ДополнитьПуть(Результат, Путь5, Разделитель);
КонецЕсли;
Возврат Результат;
@@ -174,4 +176,26 @@
КонецПроцедуры
#КонецЕсли
+Функция ДополнитьПуть(Путь1, Путь2, Разделитель)
+
+ Результат = Неопределено;
+
+ Если ЗначениеЗаполнено(Путь1) И ЗначениеЗаполнено(Путь2) Тогда
+
+ Если НЕ СтрЗаканчиваетсяНа(Путь1, Разделитель) И НЕ СтрНачинаетсяС(Разделитель, Путь2) Тогда
+ Результат = СтрШаблон("%1%2%3", Путь1, Разделитель, Путь2);
+ Иначе
+ Результат = Путь1 + Путь2;
+ КонецЕсли;
+
+ ИначеЕсли ЗначениеЗаполнено(Путь1) Тогда
+ Результат = Путь1;
+ Иначе
+ Результат = Путь2;
+ КонецЕсли;
+
+ Возврат Результат;
+
+КонецФункции
+
#КонецОбласти
diff --git "a/exts/yaxunit/src/CommonTemplates/\320\256\320\242YaxUnitAddIn/Template.addin" "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242YaxUnitAddIn/Template.addin"
new file mode 100644
index 000000000..6fa244c6d
Binary files /dev/null and "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242YaxUnitAddIn/Template.addin" differ
diff --git "a/exts/yaxunit/src/CommonTemplates/\320\256\320\242YaxUnitAddIn/\320\256\320\242YaxUnitAddIn.mdo" "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242YaxUnitAddIn/\320\256\320\242YaxUnitAddIn.mdo"
new file mode 100644
index 000000000..23825ac97
--- /dev/null
+++ "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242YaxUnitAddIn/\320\256\320\242YaxUnitAddIn.mdo"
@@ -0,0 +1,9 @@
+
+
+ ЮТYaxUnitAddIn
+
+ ru
+ ЮТYax unit add in
+
+ AddIn
+
diff --git a/exts/yaxunit/src/Configuration/Configuration.mdo b/exts/yaxunit/src/Configuration/Configuration.mdo
index 43e5cc1e1..e415fc41f 100644
--- a/exts/yaxunit/src/Configuration/Configuration.mdo
+++ b/exts/yaxunit/src/Configuration/Configuration.mdo
@@ -43,6 +43,7 @@
CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеИмена_ru
CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеОтчества_ru
CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеФамилии_ru
+ CommonTemplate.ЮТYaxUnitAddIn
CommonTemplate.ЮТОписаниеМетаданных
CommonModule.Мокито
CommonModule.МокитоОбучение
@@ -55,6 +56,9 @@
CommonModule.ЮТИсполнительКлиент
CommonModule.ЮТИсполнительКлиентСервер
CommonModule.ЮТИсполнительСервер
+ CommonModule.ЮТКомпоненты
+ CommonModule.ЮТКомпонентыВызовСервера
+ CommonModule.ЮТКомпонентыКлиент
CommonModule.ЮТКонструкторВариантов
CommonModule.ЮТКонструкторТестовыхДанныхСлужебный
CommonModule.ЮТКонтекст
diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271/Module.bsl"
index 2178a095c..2e8aa1fec 100644
--- "a/tests/src/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271/Module.bsl"
+++ "b/tests/src/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\270\320\271/Module.bsl"
@@ -25,10 +25,24 @@
.ДобавитьТест("ОбъединитьВСтруктуру")
.ДобавитьТест("СформироватьСтрокуСимволов")
.ДобавитьТест("ДанныеСовпадают")
+ .ДобавитьТест("Пауза")
;
КонецПроцедуры
+Процедура Пауза() Экспорт
+
+ Начало = ТекущаяУниверсальнаяДатаВМиллисекундах();
+ ЮТОбщий.Пауза(1);
+ ЮТОбщий.Пауза(1);
+ ЮТОбщий.Пауза(1);
+ Дельта = ТекущаяУниверсальнаяДатаВМиллисекундах() - Начало;
+
+ ЮТест.ОжидаетЧто(Дельта)
+ .МеждуИсключаяГраницы(3010, 3050);
+
+КонецПроцедуры
+
Процедура ДобавитьСтроку() Экспорт
Варианты = ЮТест.Варианты("Исходная, Дополнение, Разделитель, Результат")
diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/Module.bsl"
index 27220fd09..8642e9dc7 100644
--- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/Module.bsl"
+++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214/Module.bsl"
@@ -93,7 +93,7 @@
Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска);
ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests")
- .ИмеетДлину(21);
+ .ИмеетДлину(22);
КонецПроцедуры
@@ -158,4 +158,4 @@
КонецПроцедуры
-#КонецОбласти
\ No newline at end of file
+#КонецОбласти