1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-02-10 19:41:26 +02:00

Фикс работы с метаданными на клиенте

This commit is contained in:
alkoleft 2023-08-14 01:12:33 +03:00
parent 02f1aa07a7
commit cb3b8e04f7
5 changed files with 110 additions and 16 deletions

View File

@ -73,7 +73,7 @@
Функция ТипыМетаданных() Экспорт
Возврат ЮТМетаданныеСервер.ТипыМетаданных();
Возврат ЮТМетаданныеПовтИсп.ТипыМетаданных();
КонецФункции

View File

@ -42,8 +42,15 @@
#ИначеЕсли Сервер Тогда
Возврат ЗначениеВСтрокуВнутр(Тип); // Не все серверные типы сериализуются через СериализаторXDTO
#Иначе
ТипXML = СериализаторXDTO.XMLТип(Тип);
Возврат ТипXML.ИмяТипа;
Попытка
Запись = Новый ЗаписьJSON();
Запись.УстановитьСтроку();
СериализаторXDTO.ЗаписатьJSON(Запись, Тип);
Возврат Запись.Закрыть();
Исключение
ВызватьИсключение СтрШаблон("Не удалось определить индетификатор типа для `%1`
|%2", Тип, ОписаниеОшибки());
КонецПопытки;
#КонецЕсли
КонецФункции
@ -67,19 +74,9 @@
#Если ВебКлиент Тогда
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТипыДанныхСлужебный.ТипПоПредставлению");
#Иначе
//@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");
КонецЕсли;
КонецЕсли;
Чтение = Новый ЧтениеJSON();
Чтение.УстановитьСтроку(ПредставлениеТипа);
Результат = СериализаторXDTO.ПрочитатьJSON(Чтение, Тип("Тип"));
Если Результат = Неопределено Тогда
ВызватьИсключение СтрШаблон("Не удалось определить тип по представлению `%1`", ПредставлениеТипа);

View File

@ -0,0 +1,53 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// 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.
//
//©///////////////////////////////////////////////////////////////////////////©//
#Область СлужебныйПрограммныйИнтерфейс
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты
.ДобавитьТест("ОписаниеОбъектаМетаданных")
;
КонецПроцедуры
Процедура ОписаниеОбъектаМетаданных() Экспорт
#Если Сервер Тогда
ДляСервера = Истина;
#Иначе
ДляСервера = Ложь;
#КонецЕсли
Данные = ПомощникТестированияВызовСервера.ТестовыеДанныеДляОписаниеОбъектаМетаданных(ДляСервера);
Для Каждого Значение Из Данные Цикл
Описание = ЮТМетаданные.ОписаниеОбъектаМетаданных(Значение);
ЮТест.ОжидаетЧто(Описание).Заполнено();
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="16b464c9-e5a2-4c92-9afb-1ab4a3532a87">
<name>ОМ_ЮТМетаданные</name>
<synonym>
<key>ru</key>
<value>ЮТМетаданные</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -71,4 +71,37 @@
КонецПроцедуры
Функция ТестовыеДанныеДляОписаниеОбъектаМетаданных(ДляСервера) Экспорт
Данные = Новый Массив();
Вид = "Справочник";
Для Каждого Справочник Из Метаданные.Справочники Цикл
Данные.Добавить(Справочник.ПолноеИмя());
Данные.Добавить(Тип(СтрШаблон("%1Ссылка.%2", Вид, Справочник.Имя)));
Данные.Добавить(Новый(СтрШаблон("%1Ссылка.%2", Вид, Справочник.Имя)));
Если ДляСервера Тогда
Данные.Добавить(Справочник);
Данные.Добавить(Новый(СтрШаблон("%1Менеджер.%2", Вид, Справочник.Имя)));
Данные.Добавить(Новый(СтрШаблон("%1Объект.%2", Вид, Справочник.Имя)));
Данные.Добавить(Тип(СтрШаблон("%1Объект.%2", Вид, Справочник.Имя)));
Данные.Добавить(Тип(СтрШаблон("%1Менеджер.%2", Вид, Справочник.Имя)));
КонецЕсли
КонецЦикла;
Количество = Данные.Количество();
Для Инд = 0 По Количество - 1 Цикл
Данные.Добавить(Данные[Инд]);
Данные.Добавить(Данные[Инд]);
Данные.Добавить(Данные[Инд]);
КонецЦикла;
Возврат Данные;
КонецФункции
#КонецОбласти