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.ЮТФабрика