mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-01-23 18:54:40 +02:00
parent
ec6ae1f290
commit
ff519c5755
@ -0,0 +1,73 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Процедура ПроверитьТипПараметра(Значение, ОжидаемыйТип, ИмяМетода, ИмяПараметра, ЕслиУстановлен = Ложь) Экспорт
|
||||
|
||||
Если ЕслиУстановлен И Значение = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Соответствует = ТипЗначенияСоответствует(Значение, ОжидаемыйТип);
|
||||
|
||||
Если НЕ Соответствует Тогда
|
||||
ТекстОшибки = СтрШаблон("Некорректный тип параметра `%1` метода `%2`. Метод принимает `%3`, а получили `%4` (%5)",
|
||||
ИмяПараметра,
|
||||
ИмяМетода,
|
||||
ОжидаемыйТип,
|
||||
ТипЗнч(Значение),
|
||||
Значение);
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ТипЗначенияСоответствует(Значение, ОжидаемыйТип) Экспорт
|
||||
|
||||
ТипОжидаемогоТипа = ТипЗнч(ОжидаемыйТип);
|
||||
|
||||
Если ТипОжидаемогоТипа = Тип("Строка") Тогда
|
||||
Если СтрНайти(ОжидаемыйТип, ",") Тогда
|
||||
ОжидаемыйТип = Новый ОписаниеТипов(ОжидаемыйТип);
|
||||
ТипОжидаемогоТипа = Тип("ОписаниеТипов");
|
||||
Иначе
|
||||
ОжидаемыйТип = Тип(ОжидаемыйТип);
|
||||
ТипОжидаемогоТипа = Тип("Тип");
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ТипЗначения = ТипЗнч(Значение);
|
||||
|
||||
Если ТипОжидаемогоТипа = Тип("ОписаниеТипов") Тогда
|
||||
// СодержитТип не подходит, всегда выдает истину если проверяем Тип("Неопределено")
|
||||
Соответствует = ОжидаемыйТип.Типы().Найти(ТипЗначения) <> Неопределено
|
||||
И ОжидаемыйТип.ПривестиЗначение(Значение) = Значение;
|
||||
Иначе
|
||||
Соответствует = ТипЗначения = ОжидаемыйТип;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Соответствует;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="93359001-ba03-4990-9337-70d21cbbb080">
|
||||
<name>ЮТПроверкиСлужебный</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Проверки служебный</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -143,7 +143,7 @@
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
|
||||
Результат = ТипЗначенияСоответствует(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
Результат = ЮТПроверкиСлужебный.ТипЗначенияСоответствует(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
Реверс(Результат, ПараметрыПроверки);
|
||||
|
||||
@ -360,7 +360,7 @@
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Соответствует = ТипЗначенияСоответствует(Значение, ОжидаемыйТип);
|
||||
Соответствует = ЮТПроверкиСлужебный.ТипЗначенияСоответствует(Значение, ОжидаемыйТип);
|
||||
|
||||
Если НЕ Соответствует Тогда
|
||||
ТекстОшибки = СтрШаблон("Не верный тип %1 (`%2`), должен быть `%3`%4",
|
||||
@ -375,34 +375,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТипЗначенияСоответствует(Значение, ОжидаемыйТип)
|
||||
|
||||
ТипОжидаемогоТипа = ТипЗнч(ОжидаемыйТип);
|
||||
|
||||
Если ТипОжидаемогоТипа = Тип("Строка") Тогда
|
||||
Если СтрНайти(ОжидаемыйТип, ",") Тогда
|
||||
ОжидаемыйТип = Новый ОписаниеТипов(ОжидаемыйТип);
|
||||
ТипОжидаемогоТипа = Тип("ОписаниеТипов");
|
||||
Иначе
|
||||
ОжидаемыйТип = Тип(ОжидаемыйТип);
|
||||
ТипОжидаемогоТипа = Тип("Тип");
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ТипЗначения = ТипЗнч(Значение);
|
||||
|
||||
Если ТипОжидаемогоТипа = Тип("ОписаниеТипов") Тогда
|
||||
// СодержитТип не подходит, всегда выдает истину если проверяем Тип("Неопределено")
|
||||
Соответствует = ОжидаемыйТип.Типы().Найти(ТипЗначения) <> Неопределено
|
||||
И ОжидаемыйТип.ПривестиЗначение(Значение) = Значение;
|
||||
Иначе
|
||||
Соответствует = ТипЗначения = ОжидаемыйТип;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Соответствует;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СравнитьПоЗначению(Значение1, Значение2)
|
||||
|
||||
Попытка
|
||||
|
@ -529,6 +529,16 @@
|
||||
ТаблицаЗначений = Ложь;
|
||||
#КонецЕсли
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Макет) Тогда
|
||||
ВызватьИсключение "Укажите источник данных (Макет)";
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(ОписанияТипов) Тогда
|
||||
ВызватьИсключение "Укажите описание загружаемых колонок (ОписанияТипов)";
|
||||
КонецЕсли;
|
||||
|
||||
ЮТПроверкиСлужебный.ПроверитьТипПараметра(ОписанияТипов, "Структура, Соответствие", "ЮТТестовыеДанные.ЗагрузитьИзМакета", "ОписанияТипов");
|
||||
|
||||
Возврат ЮТТестовыеДанныеСлужебный.ЗагрузитьИзМакета(Макет,
|
||||
ОписанияТипов,
|
||||
КэшЗначений,
|
||||
|
@ -257,116 +257,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеКолонок(КолонкиМакета, ОписанияТипов)
|
||||
|
||||
Колонки = Новый Массив();
|
||||
ВсеКолонки = Новый Массив();
|
||||
|
||||
ОсновныеКолонки = Новый Структура();
|
||||
|
||||
Для Инд = 0 По КолонкиМакета.ВГраница() Цикл
|
||||
|
||||
ИмяКолонки = КолонкиМакета[Инд];
|
||||
ЧастиИмени = СтрРазделить(ИмяКолонки, ".");
|
||||
|
||||
Если ПустаяСтрока(ИмяКолонки) ИЛИ ОписанияТипов[ЧастиИмени[0]] = Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ЭтоВложенныйРеквизит = ЧастиИмени.Количество() = 2;
|
||||
ЭтоОсновнойРеквизит = ЧастиИмени.Количество() = 1;
|
||||
|
||||
ОписаниеКолонки = ОписаниеКолонки(Инд);
|
||||
|
||||
Если ЭтоОсновнойРеквизит Тогда
|
||||
ОписаниеКолонки.Имя = ИмяКолонки;
|
||||
Иначе
|
||||
ОписаниеКолонки.Имя = ЧастиИмени[1];
|
||||
КонецЕсли;
|
||||
|
||||
ОписаниеКолонки.ОписаниеТипа = ОписанияТипов[ИмяКолонки];
|
||||
|
||||
Если ОписаниеКолонки.ОписаниеТипа = Неопределено И ЭтоВложенныйРеквизит Тогда
|
||||
|
||||
Родитель = ОсновныеКолонки[ЧастиИмени[0]];
|
||||
Реквизиты = Родитель.ОписаниеОбъектаМетаданных.Реквизиты;
|
||||
|
||||
Если Реквизиты.Свойство(ЧастиИмени[1]) Тогда
|
||||
ОписаниеКолонки.ОписаниеТипа = Реквизиты[ЧастиИмени[1]].Тип;
|
||||
Иначе
|
||||
Продолжить; // TODO
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ДозаполнитьОписаниеКолонки(ОписаниеКолонки);
|
||||
|
||||
ВсеКолонки.Добавить(ОписаниеКолонки);
|
||||
|
||||
Если ЭтоОсновнойРеквизит Тогда
|
||||
|
||||
Колонки.Добавить(ОписаниеКолонки);
|
||||
ОсновныеКолонки.Вставить(ИмяКолонки, ОписаниеКолонки);
|
||||
|
||||
ИначеЕсли ЭтоВложенныйРеквизит Тогда
|
||||
|
||||
Родитель = ОсновныеКолонки[ЧастиИмени[0]];
|
||||
Родитель.ДополнительныеРеквизиты.Добавить(ОписаниеКолонки);
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение СтрШаблон("Недопустимо использовать несколько точек в имени колонки, `%1`", ИмяКолонки);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого ОписаниеКолонки Из ВсеКолонки Цикл
|
||||
ОписаниеКолонки.Составное = ЗначениеЗаполнено(ОписаниеКолонки.ДополнительныеРеквизиты);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Колонки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеКолонки(Индекс)
|
||||
|
||||
ОписаниеКолонки = Новый Структура;
|
||||
ОписаниеКолонки.Вставить("Индекс", Индекс);
|
||||
ОписаниеКолонки.Вставить("Имя", "");
|
||||
|
||||
ОписаниеКолонки.Вставить("ОписаниеТипа", Неопределено);
|
||||
ОписаниеКолонки.Вставить("ТипЗначения", Неопределено);
|
||||
ОписаниеКолонки.Вставить("Ссылочный", Ложь);
|
||||
ОписаниеКолонки.Вставить("ДополнительныеРеквизиты", Новый Массив());
|
||||
ОписаниеКолонки.Вставить("Составное", Ложь);
|
||||
ОписаниеКолонки.Вставить("Менеджер", Неопределено);
|
||||
ОписаниеКолонки.Вставить("ОписаниеОбъектаМетаданных", Неопределено);
|
||||
ОписаниеКолонки.Вставить("ЭтоПеречисление", Ложь);
|
||||
ОписаниеКолонки.Вставить("ЭтоЧисло", Ложь);
|
||||
ОписаниеКолонки.Вставить("ЭтоДата", Ложь);
|
||||
|
||||
Возврат ОписаниеКолонки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДозаполнитьОписаниеКолонки(ОписаниеКолонки)
|
||||
|
||||
ТипЗначения = ОписаниеКолонки.ОписаниеТипа.Типы()[0];
|
||||
ОписаниеКолонки.ТипЗначения = ТипЗначения;
|
||||
|
||||
ОписаниеКолонки.Ссылочный = ЮТТипыДанныхСлужебный.ЭтоСсылочныйТип(ТипЗначения);
|
||||
ОписаниеКолонки.ЭтоЧисло = ТипЗначения = Тип("Число");
|
||||
ОписаниеКолонки.ЭтоДата = ТипЗначения = Тип("Дата");
|
||||
|
||||
Если ОписаниеКолонки.Ссылочный Тогда
|
||||
ОписаниеКолонки.ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектаМетаданных(ТипЗначения);
|
||||
ОписаниеКолонки.ЭтоПеречисление = ЮТМетаданные.ЭтоПеречисление(ОписаниеКолонки.ОписаниеОбъектаМетаданных);
|
||||
ОписаниеКолонки.Менеджер = ЮТОбщий.Менеджер(ОписаниеКолонки.ОписаниеОбъектаМетаданных);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ЗначениеЯчейки(СтрокаДанных, ЗначениеПредставления, ОписаниеКолонки, ЗаменяемыеЗначения, КэшЗначений, ПараметрыСоздания)
|
||||
|
||||
Значение = ЗаменяемыеЗначения[ЗначениеПредставления];
|
||||
@ -386,11 +276,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
ЗначенияРеквизитов = ЗначенияРеквизитов(СтрокаДанных, ОписаниеКолонки, ЗаменяемыеЗначения, КэшЗначений, ПараметрыСоздания);
|
||||
Если ОписаниеКолонки.Составное Тогда
|
||||
Значение = ПривестиЗначениеКолонки(ОписаниеКолонки, ЗначениеПредставления, ЗначенияРеквизитов, ПараметрыСоздания);
|
||||
Иначе
|
||||
Значение = ПривестиЗначениеКолонки(ОписаниеКолонки, ЗначениеПредставления, ЗначенияРеквизитов, ПараметрыСоздания);
|
||||
КонецЕсли;
|
||||
Значение = ПривестиЗначениеКолонки(ОписаниеКолонки, ЗначениеПредставления, ЗначенияРеквизитов, ПараметрыСоздания);
|
||||
|
||||
Если КэшироватьЗначение Тогда
|
||||
КэшЗначений[ОписаниеКолонки.Менеджер].Вставить(ЗначениеПредставления, Значение);
|
||||
@ -520,4 +406,167 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область ОписаниеКолонок
|
||||
|
||||
Функция ОписаниеКолонок(КолонкиМакета, ОписанияТипов)
|
||||
|
||||
ОсновныеКолонки = ОсновныеКолонкиМакета(КолонкиМакета);
|
||||
|
||||
Для Каждого Элемент Из ОписанияТипов Цикл
|
||||
|
||||
Если НЕ ОсновныеКолонки.Свойство(Элемент.Ключ) Тогда
|
||||
|
||||
Сообщение = СтрШаблон("Макет не содержит колонку `%1`", Элемент.Ключ);
|
||||
ВызватьИсключение Сообщение;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЗагружаемыеКолонки = Новый Массив();
|
||||
|
||||
Для Каждого Элемент Из ОсновныеКолонки Цикл
|
||||
|
||||
ОписаниеТиповКолонки = ОписаниеТиповКолонки(ОписанияТипов, Элемент.Ключ);
|
||||
|
||||
Если ОписаниеТиповКолонки = Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ОсновнаяКолонка = Элемент.Значение;
|
||||
ЗагружаемыеКолонки.Добавить(ОсновнаяКолонка);
|
||||
|
||||
ОсновнаяКолонка.ОписаниеТипа = ОписаниеТиповКолонки;
|
||||
ДозаполнитьОписаниеКолонки(ОсновнаяКолонка);
|
||||
|
||||
ДополнительныеКолонки = ОсновнаяКолонка.ДополнительныеРеквизиты;
|
||||
ОсновнаяКолонка.ДополнительныеРеквизиты = Новый Массив();
|
||||
|
||||
Для Каждого ВложеннаяКолонка Из ДополнительныеКолонки Цикл
|
||||
|
||||
ПолноеИмя = СтрШаблон("%1.%2", ОсновнаяКолонка.Имя, ВложеннаяКолонка.Имя);
|
||||
ВложеннаяКолонка.ОписаниеТипа = ОписаниеТиповКолонки(ОписанияТипов, ПолноеИмя);
|
||||
|
||||
Если ВложеннаяКолонка.ОписаниеТипа = Неопределено Тогда
|
||||
Реквизиты = ОсновнаяКолонка.ОписаниеОбъектаМетаданных.Реквизиты;
|
||||
|
||||
Если Реквизиты.Свойство(ВложеннаяКолонка.Имя) Тогда
|
||||
ВложеннаяКолонка.ОписаниеТипа = Реквизиты[ВложеннаяКолонка.Имя].Тип;
|
||||
Иначе
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ОсновнаяКолонка.ДополнительныеРеквизиты.Добавить(ВложеннаяКолонка);
|
||||
ДозаполнитьОписаниеКолонки(ВложеннаяКолонка);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ОсновнаяКолонка.Составное = ЗначениеЗаполнено(ОсновнаяКолонка.ДополнительныеРеквизиты);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ЗагружаемыеКолонки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеТиповКолонки(ОписанияТипов, ИмяКолонки)
|
||||
|
||||
Если ТипЗнч(ОписанияТипов) = Тип("Структура") Тогда
|
||||
Возврат ?(ОписанияТипов.Свойство(ИмяКолонки), ОписанияТипов[ИмяКолонки], Неопределено);
|
||||
Иначе
|
||||
Возврат ОписанияТипов[ИмяКолонки];
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеКолонки(Индекс)
|
||||
|
||||
ОписаниеКолонки = Новый Структура;
|
||||
ОписаниеКолонки.Вставить("Индекс", Индекс);
|
||||
ОписаниеКолонки.Вставить("Имя", "");
|
||||
|
||||
ОписаниеКолонки.Вставить("ОписаниеТипа", Неопределено);
|
||||
ОписаниеКолонки.Вставить("ТипЗначения", Неопределено);
|
||||
ОписаниеКолонки.Вставить("Ссылочный", Ложь);
|
||||
ОписаниеКолонки.Вставить("ДополнительныеРеквизиты", Новый Массив());
|
||||
ОписаниеКолонки.Вставить("Составное", Ложь);
|
||||
ОписаниеКолонки.Вставить("Менеджер", Неопределено);
|
||||
ОписаниеКолонки.Вставить("ОписаниеОбъектаМетаданных", Неопределено);
|
||||
ОписаниеКолонки.Вставить("ЭтоПеречисление", Ложь);
|
||||
ОписаниеКолонки.Вставить("ЭтоЧисло", Ложь);
|
||||
ОписаниеКолонки.Вставить("ЭтоДата", Ложь);
|
||||
|
||||
Возврат ОписаниеКолонки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОсновныеКолонкиМакета(КолонкиМакета)
|
||||
|
||||
ОсновныеКолонки = Новый Структура();
|
||||
|
||||
// Сначала соберем основные колонки
|
||||
Для Инд = 0 По КолонкиМакета.ВГраница() Цикл
|
||||
|
||||
ИмяКолонки = КолонкиМакета[Инд];
|
||||
ЧастиИмени = СтрРазделить(ИмяКолонки, ".");
|
||||
|
||||
Если ПустаяСтрока(ИмяКолонки) ИЛИ ЧастиИмени.Количество() = 2 Тогда
|
||||
Продолжить;
|
||||
ИначеЕсли ЧастиИмени.Количество() > 2 Тогда
|
||||
Сообщение = СтрШаблон("Некорреткное имя колонки макета `%1`, доступно использовать максимум 1 уровень вложенности", ИмяКолонки);
|
||||
ВызватьИсключение Сообщение;
|
||||
КонецЕсли;
|
||||
|
||||
ОписаниеКолонки = ОписаниеКолонки(Инд);
|
||||
ОписаниеКолонки.Имя = ИмяКолонки;
|
||||
|
||||
ОсновныеКолонки.Вставить(ИмяКолонки, ОписаниеКолонки);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Для Инд = 0 По КолонкиМакета.ВГраница() Цикл
|
||||
|
||||
ЧастиИмени = СтрРазделить(КолонкиМакета[Инд], ".");
|
||||
|
||||
Если ЧастиИмени.Количество() <> 2 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ ОсновныеКолонки.Свойство(ЧастиИмени[0]) Тогда
|
||||
Сообщение = СтрШаблон("Для колонки `%1` не найдена в макете основная колонка с именем `%2`", ИмяКолонки, ЧастиИмени[0]);
|
||||
ВызватьИсключение Сообщение;
|
||||
КонецЕсли;
|
||||
|
||||
ОсновнаяКолонка = ОсновныеКолонки[ЧастиИмени[0]];
|
||||
ОписаниеКолонки = ОписаниеКолонки(Инд);
|
||||
ОписаниеКолонки.Имя = ЧастиИмени[1];
|
||||
|
||||
ОсновнаяКолонка.ДополнительныеРеквизиты.Добавить(ОписаниеКолонки);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ОсновныеКолонки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДозаполнитьОписаниеКолонки(ОписаниеКолонки)
|
||||
|
||||
ТипЗначения = ОписаниеКолонки.ОписаниеТипа.Типы()[0];
|
||||
ОписаниеКолонки.ТипЗначения = ТипЗначения;
|
||||
|
||||
ОписаниеКолонки.Ссылочный = ЮТТипыДанныхСлужебный.ЭтоСсылочныйТип(ТипЗначения);
|
||||
ОписаниеКолонки.ЭтоЧисло = ТипЗначения = Тип("Число");
|
||||
ОписаниеКолонки.ЭтоДата = ТипЗначения = Тип("Дата");
|
||||
|
||||
Если ОписаниеКолонки.Ссылочный Тогда
|
||||
ОписаниеКолонки.ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектаМетаданных(ТипЗначения);
|
||||
ОписаниеКолонки.ЭтоПеречисление = ЮТМетаданные.ЭтоПеречисление(ОписаниеКолонки.ОписаниеОбъектаМетаданных);
|
||||
ОписаниеКолонки.Менеджер = ЮТОбщий.Менеджер(ОписаниеКолонки.ОписаниеОбъектаМетаданных);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -1547,6 +1547,10 @@
|
||||
|
||||
ИскомоеЗначениеНайдено = ПроверяемоеЗначение.НайтиПоЗначению(ОжидаемоеЗначение) <> Неопределено;
|
||||
|
||||
ИначеЕсли ЮТОбщий.МетодМодуляСуществует(ПроверяемоеЗначение, "Найти", , Ложь) Тогда
|
||||
|
||||
ИскомоеЗначениеНайдено = ПроверяемоеЗначение.Найти(ОжидаемоеЗначение) <> Неопределено;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ИскомоеЗначениеНайдено;
|
||||
@ -1622,7 +1626,7 @@
|
||||
Попытка
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
|
||||
ПроверитьТипЗначения(Контекст, ОжидаемоеЗначение, Новый ОписаниеТипов("ОписаниеТипов, Тип, Строка"));
|
||||
Результат = ТипЗначенияСоответствует(ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
Результат = ЮТПроверкиСлужебный.ТипЗначенияСоответствует(ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
|
||||
КонецПопытки;
|
||||
@ -1643,7 +1647,7 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Соответствует = ТипЗначенияСоответствует(Значение, ОжидаемыйТип);
|
||||
Соответствует = ЮТПроверкиСлужебный.ТипЗначенияСоответствует(Значение, ОжидаемыйТип);
|
||||
|
||||
Если НЕ Соответствует Тогда
|
||||
ТекстОшибки = СтрШаблон("Не верный тип %1 (`%2`), должен быть `%3`%4",
|
||||
@ -1656,34 +1660,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ТипЗначенияСоответствует(Значение, ОжидаемыйТип)
|
||||
|
||||
ТипОжидаемогоТипа = ТипЗнч(ОжидаемыйТип);
|
||||
|
||||
Если ТипОжидаемогоТипа = Тип("Строка") Тогда
|
||||
Если СтрНайти(ОжидаемыйТип, ",") Тогда
|
||||
ОжидаемыйТип = Новый ОписаниеТипов(ОжидаемыйТип);
|
||||
ТипОжидаемогоТипа = Тип("ОписаниеТипов");
|
||||
Иначе
|
||||
ОжидаемыйТип = Тип(ОжидаемыйТип);
|
||||
ТипОжидаемогоТипа = Тип("Тип");
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ТипЗначения = ТипЗнч(Значение);
|
||||
|
||||
Если ТипОжидаемогоТипа = Тип("ОписаниеТипов") Тогда
|
||||
// СодержитТип не подходит, всегда выдает истину если проверяем Тип("Неопределено")
|
||||
Соответствует = ОжидаемыйТип.Типы().Найти(ТипЗначения) <> Неопределено
|
||||
И ОжидаемыйТип.ПривестиЗначение(Значение) = Значение;
|
||||
Иначе
|
||||
Соответствует = ТипЗначения = ОжидаемыйТип;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Соответствует;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоТипМассива(Тип)
|
||||
|
||||
Возврат Тип = Тип("Массив") Или Тип = Тип("ФиксированныйМассив");
|
||||
|
@ -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>
|
||||
|
@ -28,6 +28,8 @@
|
||||
.ДобавитьТест("СоздатьГруппу")
|
||||
.ДобавитьТест("ЗагрузитьИзМакета_ТабличныйДокумент")
|
||||
.ДобавитьТест("ЗагрузитьИзМакета_MarkDown")
|
||||
.ДобавитьТест("ЗагрузитьИзМакета_ЧастичнаяЗагрузкаДанных")
|
||||
.ДобавитьТест("ЗагрузитьИзМакета_Проверки")
|
||||
.ДобавитьТест("СлучайныйИдентификатор")
|
||||
;
|
||||
|
||||
@ -243,4 +245,78 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗагрузитьИзМакета_ЧастичнаяЗагрузкаДанных() Экспорт
|
||||
|
||||
ОписанияТипов = Новый Структура;
|
||||
ОписанияТипов.Вставить("Период", Новый ОписаниеТипов("Дата"));
|
||||
ОписанияТипов.Вставить("Количество", Новый ОписаниеТипов("Число"));
|
||||
|
||||
ТаблицаРезультатов = ЮТест.Данные().ЗагрузитьИзМакета("ОбщийМакет.ЮТ_МакетТестовыхДанных.R2C1:R5C11", ОписанияТипов);
|
||||
|
||||
#Если Сервер Тогда
|
||||
Ютест.ОжидаетЧто(ТаблицаРезультатов)
|
||||
.ИмеетДлину(3)
|
||||
.Свойство("Колонки").ИмеетДлину(2)
|
||||
.Содержит("Период")
|
||||
.Содержит("Количество")
|
||||
;
|
||||
#Иначе
|
||||
Ютест.ОжидаетЧто(ТаблицаРезультатов)
|
||||
.ИмеетТип("Массив")
|
||||
.ИмеетДлину(3)
|
||||
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
|
||||
.ИмеетДлину(2)
|
||||
.ИмеетСвойство("Период")
|
||||
.ИмеетСвойство("Количество")
|
||||
)
|
||||
;
|
||||
#КонецЕсли
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗагрузитьИзМакета_Проверки() Экспорт
|
||||
|
||||
ЮТест.ОжидаетЧто(ЮТест.Данные())
|
||||
.Метод("ЗагрузитьИзМакета")
|
||||
.Параметр(Неопределено)
|
||||
.Параметр(Новый Массив)
|
||||
.ВыбрасываетИсключение("Укажите источник данных (Макет)");
|
||||
|
||||
ЮТест.ОжидаетЧто(ЮТест.Данные())
|
||||
.Метод("ЗагрузитьИзМакета")
|
||||
.Параметр("ОбщийМакет.ЮТ_ТестовыеДанныеMarkdown")
|
||||
.Параметр(Новый Массив)
|
||||
.ВыбрасываетИсключение("Укажите описание загружаемых колонок (ОписанияТипов)");
|
||||
|
||||
ЮТест.ОжидаетЧто(ЮТест.Данные())
|
||||
.Метод("ЗагрузитьИзМакета")
|
||||
.Параметр("ОбщийМакет.ЮТ_ТестовыеДанныеMarkdown")
|
||||
.Параметр(1)
|
||||
.ВыбрасываетИсключение("Некорректный тип параметра `ОписанияТипов` метода `ЮТТестовыеДанные.ЗагрузитьИзМакета`. Метод принимает `Соответствие, Структура`, а получили `Число` (1)");
|
||||
|
||||
ЮТест.ОжидаетЧто(ЮТест.Данные())
|
||||
.Метод("ЗагрузитьИзМакета")
|
||||
.Параметр("ОбщийМакет.ЮТ_ТестовыеДанныеMarkdown")
|
||||
.Параметр(Новый Структура("Количество, Резерв", Новый ОписаниеТипов("Число"), Новый ОписаниеТипов("Число")))
|
||||
.ВыбрасываетИсключение("Макет не содержит колонку `Резерв`");
|
||||
|
||||
ЮТест.ОжидаетЧто(ЮТест.Данные())
|
||||
.Метод("ЗагрузитьИзМакета")
|
||||
.Параметр("ОбщийМакет.ЮТ_ТестовыеДанныеMarkdown")
|
||||
.Параметр(Новый Структура("Количество, Резерв", Новый ОписаниеТипов("Число"), Новый ОписаниеТипов("Число")))
|
||||
.ВыбрасываетИсключение("Макет не содержит колонку `Резерв`");
|
||||
|
||||
ЮТест.ОжидаетЧто(ЮТест.Данные())
|
||||
.Метод("ЗагрузитьИзМакета")
|
||||
.Параметр("ОбщийМакет.ЮТ_МакетТестовыхДанных.R2C4:R5C5")
|
||||
.Параметр(Новый Структура("Товар", Новый ОписаниеТипов("СправочникСсылка.Товары")))
|
||||
.ВыбрасываетИсключение("не найдена в макете основная колонка с именем `Товар`");
|
||||
|
||||
ЮТест.ОжидаетЧто(ЮТест.Данные())
|
||||
.Метод("ЗагрузитьИзМакета")
|
||||
.Параметр("ОбщийМакет.ЮТ_МакетТестовыхДанных.ОсновнаяТаблица")
|
||||
.Параметр(Новый Структура("Цена", Новый ОписаниеТипов("Дата")))
|
||||
.ВыбрасываетИсключение("Область не найдена: ОсновнаяТаблица");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
Loading…
x
Reference in New Issue
Block a user