1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-03-17 20:48:01 +02:00

Рефакторинг

This commit is contained in:
Любаневич Дмитрий 2023-08-09 16:36:24 +03:00
parent 8ae0f03198
commit f9c02ec94b
3 changed files with 94 additions and 38 deletions

View File

@ -552,17 +552,22 @@
// ТабличныйДокумент - ТабличныйДокумент - Исходный табличный документ
// ОписанияТипов - Соответствие из Строка - Соответствие имен колонок таблицы к типам значений
// КэшЗначений - Соответствие из Произвольный - Соответствие для хранения создаваемых значений
// Параметры - Соответствие из Строка - Соответствие значений в табличном документе значению таблицы
// ЗаменяемыеЗначения - Соответствие из Строка - Значения, использующиеся для замены
// ПараметрыСозданияОбъектов - Структура:
// * ФикцияОбязательныхПолей - Булево - По умолчанию - Ложь
// * ОбменДаннымиЗагрузка - Булево - По умолчанию - Истина
// Возвращаемое значение:
// см. ЮТТестовыеДанные_ТаблицыЗначений.ТаблицаЗначенийИзМассиваСтруктур
Функция ТаблицаЗначенийИзТабличногоДокумента(ТабличныйДокумент, ОписанияТипов, КэшЗначений = Неопределено,
Параметры = Неопределено) Экспорт
ЗаменяемыеЗначения = Неопределено, ПараметрыСозданияОбъектов = Неопределено) Экспорт
Параметры = ЮТТестовыеДанные_ТаблицыЗначений.ПараметрыЗаполненияТаблицыЗначений(ПараметрыСозданияОбъектов);
ИсточникДанных = СтруктурыТабличногоДокумента(ТабличныйДокумент);
ТаблицаЗначений = ЮТТестовыеДанные_ТаблицыЗначений.ТаблицаЗначенийИзМассиваСтруктур(
ИсточникДанных,
ОписанияТипов,
КэшЗначений,
ЗаменяемыеЗначения,
Параметры
);
@ -575,17 +580,22 @@
// Строки - Строка - Таблица markdown
// ОписанияТипов - Соответствие из Строка - Соответствие имен колонок таблицы к типам значений
// КэшЗначений - Соответствие из Произвольный - Соответствие для хранения создаваемых значений
// Параметры - Соответствие из Строка - Соответствие значений в табличном документе значению таблицы
// ЗаменяемыеЗначения - Соответствие из Строка - Значения, использующиеся для замены
// ПараметрыСозданияОбъектов - Структура:
// * ФикцияОбязательныхПолей - Булево - По умолчанию - Ложь
// * ОбменДаннымиЗагрузка - Булево - По умолчанию - Истина
// Возвращаемое значение:
// см. ЮТТестовыеДанные_ТаблицыЗначений.ТаблицаЗначенийИзМассиваСтруктур
Функция ТаблицаЗначенийИзТаблицыMarkDown(Строки, ОписанияТипов, КэшЗначений = Неопределено,
Параметры = Неопределено) Экспорт
ЗаменяемыеЗначения = Неопределено, ПараметрыСозданияОбъектов = Неопределено) Экспорт
Параметры = ЮТТестовыеДанные_ТаблицыЗначений.ПараметрыЗаполненияТаблицыЗначений(ПараметрыСозданияОбъектов);
ИсточникДанных = ТаблицаMarkDown(Строки);
ТаблицаЗначений = ЮТТестовыеДанные_ТаблицыЗначений.ТаблицаЗначенийИзМассиваСтруктур(
ИсточникДанных,
ОписанияТипов,
КэшЗначений,
ЗаменяемыеЗначения,
Параметры
);

View File

@ -20,23 +20,30 @@
// Возвращает таблицу значений, заполненную из массива структур
// Параметры:
// Данные - Массив из Структура
// ОписанияТипов - Соответствие из Строка
// КэшЗначений - Соответствие из Произвольный
// Параметры - Соответствие из Строка
// Данные - Массив из Структура - Значения для преобразования в таблицу
// ОписанияТипов - Соответствие из Строка - Соответствие имен колонок таблицы к типам значений
// КэшЗначений - Соответствие из Произвольный - Соответствие для хранения создаваемых значений
// ЗаменяемыеЗначения - Соответствие из Строка - Значения, использующиеся для замены
// Параметры - см. ЮТТестовыеДанные_ТаблицыЗначений.ПараметрыЗаполненияТаблицыЗначений
// Возвращаемое значение:
// ТаблицаЗначений
Функция ТаблицаЗначенийИзМассиваСтруктур(Данные, ОписанияТипов, КэшЗначений = Неопределено,
Параметры = Неопределено) Экспорт
ЗаменяемыеЗначения = Неопределено, Параметры = Неопределено) Экспорт
Если Не ЗначениеЗаполнено(Данные) Тогда
Возврат Новый ТаблицаЗначений;
КонецЕсли;
Если Параметры = Неопределено Тогда
Параметры = Новый Соответствие;
Если ЗаменяемыеЗначения = Неопределено Тогда
ЗаменяемыеЗначения = Новый Соответствие;
КонецЕсли;
Если Параметры = Неопределено Тогда
Параметры = ПараметрыЗаполненияТаблицыЗначений();
КонецЕсли;
ПараметрыСозданияОбъектовМетаданных = Параметры.СозданиеОбъектовМетаданных;
ИменаКолонок = ПолучитьИменаКолонок(Данные[0]);
СведенияОбъектовМетаданных = СведенияОбъектовМетаданныхИзОписанийТипов(ИменаКолонок, ОписанияТипов);
@ -61,11 +68,11 @@
КонецЕсли;
СведенияОбъекта = СведенияОбъектовМетаданных.Получить(ИмяКолонки);
ЗначениеПараметра = Параметры.Получить(ЗначениеИсточника);
ЗаменяемоеЗначение = ЗаменяемыеЗначения.Получить(ЗначениеИсточника);
Если ЗначениеПараметра <> Неопределено Тогда
Если ЗаменяемоеЗначение <> Неопределено Тогда
ЗначениеТаблицы = ЗначениеПараметра;
ЗначениеТаблицы = ЗаменяемоеЗначение;
ИначеЕсли СведенияОбъекта <> Неопределено Тогда
@ -89,7 +96,8 @@
СведенияРеквизитовОбъекта,
Источник,
КэшЗначений,
Параметры
ЗаменяемыеЗначения,
ПараметрыСозданияОбъектовМетаданных
);
КонецЕсли;
@ -97,7 +105,8 @@
ЗначениеТаблицы = ЗначениеОбъектаМетаданных(
ОписаниеОбъектаМетаданных,
Менеджер,
ЗначенияРеквизитовОбъекта
ЗначенияРеквизитовОбъекта,
ПараметрыСозданияОбъектовМетаданных
);
КэшЗначений[Менеджер].Вставить(ЗначениеИсточника, ЗначениеТаблицы);
@ -120,10 +129,45 @@
КонецФункции
// Возвращает фиксированную структуру параметров для заполнения таблицы значений
// Параметры:
// СозданиеОбъектовМетаданных - Структура:
// * ФикцияОбязательныхПолей - Булево
// * ОбменДаннымиЗагрузка - Булево
// Возвращаемое значение:
// ФиксированнаяСтруктура:
// * СозданиеОбъектовМетаданных - ФиксированнаяСтруктура:
// * ФикцияОбязательныхПолей - Булево,
// * ОбменДаннымиЗагрузка - Булево
Функция ПараметрыЗаполненияТаблицыЗначений(СозданиеОбъектовМетаданных = Неопределено) Экспорт
ФикцияОбязательныхПолей = Ложь;
ОбменДаннымиЗагрузка = Истина;
Если ТипЗнч(СозданиеОбъектовМетаданных) = Тип("Структура") Тогда
Если СозданиеОбъектовМетаданных.Свойство("ФикцияОбязательныхПолей") Тогда
ФикцияОбязательныхПолей = СозданиеОбъектовМетаданных.ФикцияОбязательныхПолей;
КонецЕсли;
Если СозданиеОбъектовМетаданных.Свойство("ОбменДаннымиЗагрузка") Тогда
ОбменДаннымиЗагрузка = СозданиеОбъектовМетаданных.ОбменДаннымиЗагрузка;
КонецЕсли;
КонецЕсли;
СозданиеОбъектовМетаданных = Новый Структура;
СозданиеОбъектовМетаданных.Вставить("ФикцияОбязательныхПолей", ФикцияОбязательныхПолей);
СозданиеОбъектовМетаданных.Вставить("ОбменДаннымиЗагрузка", ОбменДаннымиЗагрузка);
Параметры = Новый Структура;
Параметры.Вставить("СозданиеОбъектовМетаданных", СозданиеОбъектовМетаданных);
Возврат Новый ФиксированнаяСтруктура(Параметры);
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ПолучитьИменаКолонок(Структура)
ИменаКолонок = Новый Массив;
@ -339,25 +383,26 @@
КонецФункции
Функция ДополнитьЗначенияРеквизитовОбъекта(Результат, СведенияРеквизитов, Источник, КешЗначений, Параметры)
Функция ДополнитьЗначенияРеквизитовОбъекта(Результат, СведенияРеквизитов, Источник, КешЗначений, ЗаменяемыеЗначения,
ПараметрыСозданияОбъектовМетаданных)
Для Каждого Сведения Из СведенияРеквизитов Цикл
ЗначениеИсточника = Источник[Сведения.Идентификатор];
ОписаниеОбъектаМетаданных = ОписаниеОбъектМетаданныхПоОписаниюТипа(Сведения.ОписаниеТипа);
Если ЗначениеЗаполнено(ЗначениеИсточника) Тогда
Если ОписаниеОбъектаМетаданных = Неопределено Тогда
ЗаменяемоеЗначение = ЗаменяемыеЗначения.Получить(ЗначениеИсточника);
ОписаниеОбъектаМетаданных = ОписаниеОбъектМетаданныхПоОписаниюТипа(Сведения.ОписаниеТипа);
ЗначениеРеквизита = Сведения.ОписаниеТипа.ПривестиЗначение(ЗначениеИсточника);
ИначеЕсли ЗначениеЗаполнено(ЗначениеИсточника) Тогда
ЗначениеПараметра = Параметры.Получить(ЗначениеИсточника);
Если ЗначениеПараметра <> Неопределено Тогда
Если ЗаменяемоеЗначение <> Неопределено Тогда
ЗначениеРеквизита = ЗначениеПараметра;
ЗначениеРеквизита = ЗаменяемоеЗначение;
ИначеЕсли ОписаниеОбъектаМетаданных = Неопределено Тогда
ЗначениеРеквизита = Сведения.ОписаниеТипа.ПривестиЗначение(ЗначениеИсточника);
Иначе
Менеджер = МенеджерОбъектаИзОписанияОбъектаМетаданных(ОписаниеОбъектаМетаданных);
@ -379,7 +424,8 @@
ЗначениеРеквизита = ЗначениеОбъектаМетаданных(
ОписаниеОбъектаМетаданных,
Менеджер,
ЗначенияРеквизитовОбъекта
ЗначенияРеквизитовОбъекта,
ПараметрыСозданияОбъектовМетаданных
);
КешЗначений[Менеджер].Вставить(ЗначениеИсточника, ЗначениеРеквизита);
@ -402,9 +448,7 @@
КонецФункции
Функция ЗначениеОбъектаМетаданных(ОписаниеОбъектаМетаданных, Менеджер, ЗначенияРеквизитов)
ОбменДаннымиЗагрузка = Истина;
Функция ЗначениеОбъектаМетаданных(ОписаниеОбъектаМетаданных, Менеджер, ЗначенияРеквизитов, Параметры)
Если Метаданные.Перечисления.Найти(ОписаниеОбъектаМетаданных.Имя) <> Неопределено Тогда
@ -417,9 +461,11 @@
КонструкторОбъекта.Установить(ДанныеЗначения.Ключ, ДанныеЗначения.Значение);
КонецЦикла;
Значение = КонструкторОбъекта
.ФикцияОбязательныхПолей()
.Записать(, ОбменДаннымиЗагрузка);
Если Параметры.ФикцияОбязательныхПолей Тогда
КонструкторОбъекта.ФикцияОбязательныхПолей();
КонецЕсли;
Значение = КонструкторОбъекта.Записать(, Параметры.ОбменДаннымиЗагрузка);
КонецЕсли;

View File

@ -137,8 +137,8 @@
Поставщик = ЮТест.Данные().СоздатьЭлемент(Справочники.Контрагенты, "Поставщик");
Параметры = Новый Соответствие;
Параметры.Вставить("Поставщик 1", Поставщик);
ЗаменяемыеЗначения = Новый Соответствие;
ЗаменяемыеЗначения.Вставить("Поставщик 1", Поставщик);
// Вызов тестируемого сценария
@ -146,7 +146,7 @@
ИсходныеДанные,
ОписанияТипов,
КэшЗначений,
Параметры
ЗаменяемыеЗначения
);
// Проверка поведения и результатов