mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-01-23 18:54:40 +02:00
Рефакторинг и оптимизация
This commit is contained in:
parent
cf0cb91f83
commit
aa152a7cf0
@ -175,7 +175,7 @@
|
||||
// Структура - Новый контекст конструктора:
|
||||
// * Менеджер - Произвольный
|
||||
// * Данные - Структура
|
||||
// * Метаданные - см. ЮТМетаданные.ОписаниеОбъектМетаданных
|
||||
// * Метаданные - см. ЮТМетаданные.ОписаниеОбъектаМетаданных
|
||||
// * ТекущаяТабличнаяЧасть - Строка
|
||||
// * ДополнительныеСвойства - Структура
|
||||
Функция НовыйКонтекстКонструктора(Менеджер) Экспорт
|
||||
@ -183,7 +183,7 @@
|
||||
Контекст = Новый Структура("Менеджер, Данные, Метаданные", Менеджер, Новый Структура());
|
||||
Контекст.Вставить("Менеджер", Менеджер);
|
||||
Контекст.Вставить("Данные", Новый Структура());
|
||||
Контекст.Вставить("Метаданные", ЮТМетаданные.ОписаниеОбъектМетаданных(Менеджер));
|
||||
Контекст.Вставить("Метаданные", ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер));
|
||||
Контекст.Вставить("ТекущаяТабличнаяЧасть", "");
|
||||
Контекст.Вставить("ДополнительныеСвойства", Новый Структура());
|
||||
|
||||
|
@ -33,29 +33,40 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Описание менеджера.
|
||||
// Описание объекта метаданных.
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - Произвольный
|
||||
// Значение - ОбъектМетаданных
|
||||
// - Тип - Тип объекта информационной базы
|
||||
// - Строка - Полное имя объекта метаданных
|
||||
// - Произвольный - Объект информационной базы
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание менеджера:
|
||||
// * ОписаниеТипа - см. ЮТМетаданныеСервер.ОписаниеТипаМетаданных
|
||||
// * Реквизиты - Структура из см. ЮТФабрика.ОписаниеРеквизита
|
||||
// * ТабличныеЧасти - Структура из Структура -
|
||||
Функция ОписаниеОбъектМетаданных(Знач Значение) Экспорт
|
||||
Функция ОписаниеОбъектаМетаданных(Знач Значение) Экспорт
|
||||
|
||||
ТипЗначения = ТипЗнч(Значение);
|
||||
|
||||
#Если Сервер Тогда
|
||||
Если ТипЗначения = Тип("ОбъектМетаданных") Тогда
|
||||
Значение = Значение.ПолноеИмя();
|
||||
ТипЗначения = Тип("Строка");
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
Если ТипЗначения <> Тип("Тип") И ТипЗначения <> Тип("Строка") Тогда
|
||||
Значение = ТипЗнч(Значение);
|
||||
ТипЗначения = Тип("Тип");
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗначения = Тип("Тип") Тогда
|
||||
Возврат ЮТМетаданныеСервер.ОписаниеОбъектМетаданных(Значение);
|
||||
ИдентификаторТипа = ЮТТипыДанныхСлужебный.ИдентификаторТипа(Значение); // Для работы кэширования
|
||||
Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектаМетаданныхПоИдентификаторуТипа(ИдентификаторТипа);
|
||||
Иначе
|
||||
Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектМетаданных(Значение);
|
||||
Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектаМетаданных(Значение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
@ -24,9 +24,16 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеОбъектМетаданных(Знач Менеджер) Экспорт
|
||||
Функция ОписаниеОбъектаМетаданных(Знач Менеджер) Экспорт
|
||||
|
||||
Возврат ЮТМетаданныеСервер.ОписаниеОбъектМетаданных(Менеджер);
|
||||
Возврат ЮТМетаданныеСервер.ОписаниеОбъектаМетаданных(Менеджер);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеОбъектаМетаданныхПоИдентификаторуТипа(Знач ИдентификаторТипа) Экспорт
|
||||
|
||||
Тип = ЮТТипыДанныхСлужебный.ТипПоИдентификатору(ИдентификаторТипа);
|
||||
Возврат ЮТМетаданныеСервер.ОписаниеОбъектаМетаданных(Тип);
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -120,7 +120,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеОбъектМетаданных(Знач Значение, Знач ЗаполнятьРеквизиты = Истина) Экспорт
|
||||
Функция ОписаниеОбъектаМетаданных(Знач Значение, ЗаполнятьРеквизиты = Истина) Экспорт
|
||||
|
||||
МетаданныеОбъекта = ОбъектМетаданных(Значение);
|
||||
ОписаниеТипа = ОписаниеТипаМетаданных(МетаданныеОбъекта);
|
||||
@ -248,12 +248,15 @@
|
||||
ИначеЕсли ТипЗначение = Тип("Строка") Тогда
|
||||
|
||||
ЧастиСтроки = СтрРазделить(Значение, ".");
|
||||
|
||||
Если ЧастиСтроки.Количество() = 2 Тогда
|
||||
|
||||
ТипыМетаданных = ЮТМетаданные.ТипыМетаданных();
|
||||
ОписаниеТипа = ТипыМетаданных[ЧастиСтроки[0]];
|
||||
Если ОписаниеТипа <> Неопределено Тогда
|
||||
ОбъектМетаданных = Метаданные[ОписаниеТипа.ИмяКоллекции][ЧастиСтроки[1]];
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
@ -716,17 +716,7 @@
|
||||
|
||||
Функция ПредставлениеТипа(Тип) Экспорт
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение МетодНеДоступен("ЮТОбщий.ПредставлениеТипа");
|
||||
#Иначе
|
||||
ТипXML = СериализаторXDTO.XMLТип(Тип);
|
||||
|
||||
Если ТипXML = Неопределено Тогда
|
||||
Возврат Строка(Тип);
|
||||
Иначе
|
||||
Возврат ТипXML.ИмяТипа;
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
Возврат ЮТТипыДанныхСлужебный.ПредставлениеТипа(Тип);
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -48,4 +48,17 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПримитивныеТипы() Экспорт
|
||||
|
||||
Типы = Новый Массив();
|
||||
Типы.Добавить(Тип("Строка"));
|
||||
Типы.Добавить(Тип("Число"));
|
||||
Типы.Добавить(Тип("Дата"));
|
||||
Типы.Добавить(Тип("Булево"));
|
||||
Типы.Добавить(Тип("УникальныйИдентификатор"));
|
||||
|
||||
Возврат Новый ФиксированныйМассив(Типы);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
168
exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
Normal file
168
exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
Normal file
@ -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`", ПредставлениеТипа);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
#КонецЕсли
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область СистемныеПеречисления
|
||||
|
||||
Функция ЭтоСистемноеПеречисление(Тип) Экспорт
|
||||
|
||||
Возврат ТипыСистемныхПеречислений().СодержитТип(Тип);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТипыСистемныхПеречислений() Экспорт
|
||||
|
||||
Возврат Новый ОписаниеТипов(
|
||||
"ВидДвиженияБухгалтерии,
|
||||
|ВидДвиженияНакопления,
|
||||
|ВидПериодаРегистраРасчета,
|
||||
|ВидСчета,
|
||||
|ВидТочкиМаршрутаБизнесПроцесса,
|
||||
|ИспользованиеГруппИЭлементов,
|
||||
|ИспользованиеСреза,
|
||||
|ИспользованиеРежимаПроведения,
|
||||
|РежимАвтоВремя,
|
||||
|РежимЗаписиДокумента,
|
||||
|РежимПроведенияДокумента,
|
||||
|ПериодичностьАгрегатаРегистраНакопления,
|
||||
|ИспользованиеАгрегатаРегистраНакопления");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ИмяСистемногоПеречисления(Тип) Экспорт
|
||||
|
||||
Возврат Строка(Тип);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоКоллекцияПримитивныхТипов(Типы) Экспорт
|
||||
|
||||
Для Каждого Тип Из Типы Цикл
|
||||
|
||||
Если НЕ ЭтоПримитивныйТип(Тип) Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоПримитивныйТип(Тип) Экспорт
|
||||
|
||||
ПримитивныеТипы = ЮТПовторногоИспользования.ПримитивныеТипы();
|
||||
|
||||
ТипПараметра = ТипЗнч(Тип);
|
||||
|
||||
Если ТипПараметра = Тип("Тип") Тогда
|
||||
Возврат ПримитивныеТипы.Найти(Тип) <> Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Тип Из Тип.Типы() Цикл
|
||||
|
||||
Если ПримитивныеТипы.Найти(Тип) = Неопределено Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="4089d47b-14fd-4dba-b573-0004f6590c82">
|
||||
<name>ЮТТипыДанныхСлужебный</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Типы данных</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -88,6 +88,7 @@
|
||||
<commonModules>CommonModule.ЮТПредикаты</commonModules>
|
||||
<commonModules>CommonModule.ЮТПредикатыКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТПреобразования</commonModules>
|
||||
<commonModules>CommonModule.ЮТПреобразованияСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТРасширения</commonModules>
|
||||
<commonModules>CommonModule.ЮТРегистрацияОшибок</commonModules>
|
||||
<commonModules>CommonModule.ЮТСобытия</commonModules>
|
||||
@ -97,8 +98,10 @@
|
||||
<commonModules>CommonModule.ЮТТестовыеДанные</commonModules>
|
||||
<commonModules>CommonModule.ЮТТестовыеДанные_ТаблицыЗначений</commonModules>
|
||||
<commonModules>CommonModule.ЮТТестовыеДанныеВызовСервера</commonModules>
|
||||
<commonModules>CommonModule.ЮТТестовыеДанныеКлиент</commonModules>
|
||||
<commonModules>CommonModule.ЮТТестовыеДанныеСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТТесты</commonModules>
|
||||
<commonModules>CommonModule.ЮТТипыДанныхСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТУтверждения</commonModules>
|
||||
<commonModules>CommonModule.ЮТУтвержденияИБ</commonModules>
|
||||
<commonModules>CommonModule.ЮТФабрика</commonModules>
|
||||
|
Loading…
x
Reference in New Issue
Block a user