diff --git a/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl
index bb9daf19..7a04b4b0 100644
--- a/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl
@@ -175,7 +175,7 @@
// Структура - Новый контекст конструктора:
// * Менеджер - Произвольный
// * Данные - Структура
-// * Метаданные - см. ЮТМетаданные.ОписаниеОбъектМетаданных
+// * Метаданные - см. ЮТМетаданные.ОписаниеОбъектаМетаданных
// * ТекущаяТабличнаяЧасть - Строка
// * ДополнительныеСвойства - Структура
Функция НовыйКонтекстКонструктора(Менеджер) Экспорт
@@ -183,7 +183,7 @@
Контекст = Новый Структура("Менеджер, Данные, Метаданные", Менеджер, Новый Структура());
Контекст.Вставить("Менеджер", Менеджер);
Контекст.Вставить("Данные", Новый Структура());
- Контекст.Вставить("Метаданные", ЮТМетаданные.ОписаниеОбъектМетаданных(Менеджер));
+ Контекст.Вставить("Метаданные", ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер));
Контекст.Вставить("ТекущаяТабличнаяЧасть", "");
Контекст.Вставить("ДополнительныеСвойства", Новый Структура());
diff --git a/exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl
index 69d5db7a..067d517a 100644
--- a/exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl
@@ -33,29 +33,40 @@
КонецФункции
-// Описание менеджера.
+// Описание объекта метаданных.
//
// Параметры:
-// Значение - Произвольный
+// Значение - ОбъектМетаданных
+// - Тип - Тип объекта информационной базы
+// - Строка - Полное имя объекта метаданных
+// - Произвольный - Объект информационной базы
//
// Возвращаемое значение:
// Структура - Описание менеджера:
// * ОписаниеТипа - см. ЮТМетаданныеСервер.ОписаниеТипаМетаданных
// * Реквизиты - Структура из см. ЮТФабрика.ОписаниеРеквизита
// * ТабличныеЧасти - Структура из Структура -
-Функция ОписаниеОбъектМетаданных(Знач Значение) Экспорт
+Функция ОписаниеОбъектаМетаданных(Знач Значение) Экспорт
ТипЗначения = ТипЗнч(Значение);
+#Если Сервер Тогда
+ Если ТипЗначения = Тип("ОбъектМетаданных") Тогда
+ Значение = Значение.ПолноеИмя();
+ ТипЗначения = Тип("Строка");
+ КонецЕсли;
+#КонецЕсли
+
Если ТипЗначения <> Тип("Тип") И ТипЗначения <> Тип("Строка") Тогда
Значение = ТипЗнч(Значение);
ТипЗначения = Тип("Тип");
КонецЕсли;
Если ТипЗначения = Тип("Тип") Тогда
- Возврат ЮТМетаданныеСервер.ОписаниеОбъектМетаданных(Значение);
+ ИдентификаторТипа = ЮТТипыДанныхСлужебный.ИдентификаторТипа(Значение); // Для работы кэширования
+ Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектаМетаданныхПоИдентификаторуТипа(ИдентификаторТипа);
Иначе
- Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектМетаданных(Значение);
+ Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектаМетаданных(Значение);
КонецЕсли;
КонецФункции
diff --git a/exts/yaxunit/src/CommonModules/ЮТМетаданныеПовтИсп/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТМетаданныеПовтИсп/Module.bsl
index 2ffe07f7..9a189f1a 100644
--- a/exts/yaxunit/src/CommonModules/ЮТМетаданныеПовтИсп/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТМетаданныеПовтИсп/Module.bsl
@@ -24,9 +24,16 @@
КонецФункции
-Функция ОписаниеОбъектМетаданных(Знач Менеджер) Экспорт
+Функция ОписаниеОбъектаМетаданных(Знач Менеджер) Экспорт
- Возврат ЮТМетаданныеСервер.ОписаниеОбъектМетаданных(Менеджер);
+ Возврат ЮТМетаданныеСервер.ОписаниеОбъектаМетаданных(Менеджер);
+
+КонецФункции
+
+Функция ОписаниеОбъектаМетаданныхПоИдентификаторуТипа(Знач ИдентификаторТипа) Экспорт
+
+ Тип = ЮТТипыДанныхСлужебный.ТипПоИдентификатору(ИдентификаторТипа);
+ Возврат ЮТМетаданныеСервер.ОписаниеОбъектаМетаданных(Тип);
КонецФункции
diff --git a/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl
index 389663a4..b38c834c 100644
--- a/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl
@@ -120,7 +120,7 @@
КонецФункции
-Функция ОписаниеОбъектМетаданных(Знач Значение, Знач ЗаполнятьРеквизиты = Истина) Экспорт
+Функция ОписаниеОбъектаМетаданных(Знач Значение, ЗаполнятьРеквизиты = Истина) Экспорт
МетаданныеОбъекта = ОбъектМетаданных(Значение);
ОписаниеТипа = ОписаниеТипаМетаданных(МетаданныеОбъекта);
@@ -248,12 +248,15 @@
ИначеЕсли ТипЗначение = Тип("Строка") Тогда
ЧастиСтроки = СтрРазделить(Значение, ".");
+
Если ЧастиСтроки.Количество() = 2 Тогда
+
ТипыМетаданных = ЮТМетаданные.ТипыМетаданных();
ОписаниеТипа = ТипыМетаданных[ЧастиСтроки[0]];
Если ОписаниеТипа <> Неопределено Тогда
ОбъектМетаданных = Метаданные[ОписаниеТипа.ИмяКоллекции][ЧастиСтроки[1]];
КонецЕсли;
+
КонецЕсли;
Иначе
diff --git a/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl
index 91ebfc8a..e9f48bf4 100644
--- a/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl
@@ -716,17 +716,7 @@
Функция ПредставлениеТипа(Тип) Экспорт
-#Если ВебКлиент Тогда
- ВызватьИсключение МетодНеДоступен("ЮТОбщий.ПредставлениеТипа");
-#Иначе
- ТипXML = СериализаторXDTO.XMLТип(Тип);
-
- Если ТипXML = Неопределено Тогда
- Возврат Строка(Тип);
- Иначе
- Возврат ТипXML.ИмяТипа;
- КонецЕсли;
-#КонецЕсли
+ Возврат ЮТТипыДанныхСлужебный.ПредставлениеТипа(Тип);
КонецФункции
diff --git a/exts/yaxunit/src/CommonModules/ЮТПовторногоИспользования/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТПовторногоИспользования/Module.bsl
index 63c8f200..061e266c 100644
--- a/exts/yaxunit/src/CommonModules/ЮТПовторногоИспользования/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТПовторногоИспользования/Module.bsl
@@ -48,4 +48,17 @@
КонецФункции
+Функция ПримитивныеТипы() Экспорт
+
+ Типы = Новый Массив();
+ Типы.Добавить(Тип("Строка"));
+ Типы.Добавить(Тип("Число"));
+ Типы.Добавить(Тип("Дата"));
+ Типы.Добавить(Тип("Булево"));
+ Типы.Добавить(Тип("УникальныйИдентификатор"));
+
+ Возврат Новый ФиксированныйМассив(Типы);
+
+КонецФункции
+
#КонецОбласти
diff --git a/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
new file mode 100644
index 00000000..eebd5556
--- /dev/null
+++ b/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
@@ -0,0 +1,168 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// 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.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Функция ПредставлениеТипа(Тип) Экспорт
+
+#Если ВебКлиент Тогда
+ ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа");
+#Иначе
+ //@skip-check Undefined variable
+ ТипXML = СериализаторXDTO.XMLТип(Тип);
+
+ Если ТипXML = Неопределено Тогда
+ Возврат Строка(Тип);
+ Иначе
+ Возврат ТипXML.ИмяТипа;
+ КонецЕсли;
+#КонецЕсли
+
+КонецФункции
+
+Функция ИдентификаторТипа(Тип) Экспорт
+
+#Если ВебКлиент Тогда
+ ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа");
+#ИначеЕсли Сервер Тогда
+ Возврат ЗначениеВСтрокуВнутр(Тип); // Не все серверные типы сериализуются через СериализаторXDTO
+#Иначе
+ ТипXML = СериализаторXDTO.XMLТип(Тип);
+ Возврат ТипXML.ИмяТипа;
+#КонецЕсли
+
+КонецФункции
+
+Функция ТипПоИдентификатору(ИдентификаторТипа) Экспорт
+
+#Если ВебКлиент Тогда
+ ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ПредставлениеТипа");
+#ИначеЕсли Сервер Тогда
+ Если СтрНачинаетсяС(ИдентификаторТипа, "{") Тогда
+ Возврат ЗначениеИзСтрокиВнутр(ИдентификаторТипа);
+ КонецЕсли;
+#КонецЕсли
+
+ Возврат ТипПоПредставлению(ИдентификаторТипа);
+
+КонецФункции
+
+Функция ТипПоПредставлению(ПредставлениеТипа) Экспорт
+
+#Если ВебКлиент Тогда
+ ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ТипПоПредставлению");
+#Иначе
+ //@skip-check Undefined variable
+ Сериализатор = СериализаторXDTO;
+ Если СтрНайти(ПредставлениеТипа, ".") Тогда
+ Результат = Сериализатор.ИзXMLТипа(ПредставлениеТипа, "http://v8.1c.ru/8.1/data/enterprise/current-config");
+ Иначе
+ Результат = Сериализатор.ИзXMLТипа(ПредставлениеТипа, "http://www.w3.org/2001/XMLSchema");
+ Если Результат = Неопределено Тогда
+ Результат = Сериализатор.ИзXMLТипа(ПредставлениеТипа, "http://v8.1c.ru/8.1/data/core");
+ КонецЕсли;
+ Если Результат = Неопределено Тогда
+ Результат = Сериализатор.ИзXMLТипа(ПредставлениеТипа, "http://v8.1c.ru/8.1/data/enterprise");
+ КонецЕсли;
+ КонецЕсли;
+
+ Если Результат = Неопределено Тогда
+ ВызватьИсключение СтрШаблон("Не удалось определить тип по представлению `%1`", ПредставлениеТипа);
+ КонецЕсли;
+
+ Возврат Результат;
+#КонецЕсли
+
+КонецФункции
+
+#Область СистемныеПеречисления
+
+Функция ЭтоСистемноеПеречисление(Тип) Экспорт
+
+ Возврат ТипыСистемныхПеречислений().СодержитТип(Тип);
+
+КонецФункции
+
+Функция ТипыСистемныхПеречислений() Экспорт
+
+ Возврат Новый ОписаниеТипов(
+ "ВидДвиженияБухгалтерии,
+ |ВидДвиженияНакопления,
+ |ВидПериодаРегистраРасчета,
+ |ВидСчета,
+ |ВидТочкиМаршрутаБизнесПроцесса,
+ |ИспользованиеГруппИЭлементов,
+ |ИспользованиеСреза,
+ |ИспользованиеРежимаПроведения,
+ |РежимАвтоВремя,
+ |РежимЗаписиДокумента,
+ |РежимПроведенияДокумента,
+ |ПериодичностьАгрегатаРегистраНакопления,
+ |ИспользованиеАгрегатаРегистраНакопления");
+
+КонецФункции
+
+Функция ИмяСистемногоПеречисления(Тип) Экспорт
+
+ Возврат Строка(Тип);
+
+КонецФункции
+
+Функция ЭтоКоллекцияПримитивныхТипов(Типы) Экспорт
+
+ Для Каждого Тип Из Типы Цикл
+
+ Если НЕ ЭтоПримитивныйТип(Тип) Тогда
+ Возврат Ложь;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Возврат Истина;
+
+КонецФункции
+
+Функция ЭтоПримитивныйТип(Тип) Экспорт
+
+ ПримитивныеТипы = ЮТПовторногоИспользования.ПримитивныеТипы();
+
+ ТипПараметра = ТипЗнч(Тип);
+
+ Если ТипПараметра = Тип("Тип") Тогда
+ Возврат ПримитивныеТипы.Найти(Тип) <> Неопределено;
+ КонецЕсли;
+
+ Для Каждого Тип Из Тип.Типы() Цикл
+
+ Если ПримитивныеТипы.Найти(Тип) = Неопределено Тогда
+ Возврат Ложь;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Возврат Истина;
+
+КонецФункции
+
+#КонецОбласти
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+#КонецОбласти
diff --git a/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/ЮТТипыДанныхСлужебный.mdo b/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/ЮТТипыДанныхСлужебный.mdo
new file mode 100644
index 00000000..539418b4
--- /dev/null
+++ b/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/ЮТТипыДанныхСлужебный.mdo
@@ -0,0 +1,11 @@
+
+
+ ЮТТипыДанныхСлужебный
+
+ ru
+ Типы данных
+
+ true
+ true
+ true
+
diff --git a/exts/yaxunit/src/Configuration/Configuration.mdo b/exts/yaxunit/src/Configuration/Configuration.mdo
index 386e5148..2600f77d 100644
--- a/exts/yaxunit/src/Configuration/Configuration.mdo
+++ b/exts/yaxunit/src/Configuration/Configuration.mdo
@@ -88,6 +88,7 @@
CommonModule.ЮТПредикаты
CommonModule.ЮТПредикатыКлиентСервер
CommonModule.ЮТПреобразования
+ CommonModule.ЮТПреобразованияСервер
CommonModule.ЮТРасширения
CommonModule.ЮТРегистрацияОшибок
CommonModule.ЮТСобытия
@@ -97,8 +98,10 @@
CommonModule.ЮТТестовыеДанные
CommonModule.ЮТТестовыеДанные_ТаблицыЗначений
CommonModule.ЮТТестовыеДанныеВызовСервера
+ CommonModule.ЮТТестовыеДанныеКлиент
CommonModule.ЮТТестовыеДанныеСлужебный
CommonModule.ЮТТесты
+ CommonModule.ЮТТипыДанныхСлужебный
CommonModule.ЮТУтверждения
CommonModule.ЮТУтвержденияИБ
CommonModule.ЮТФабрика