From f9c02ec94b8d29d46f71c1dabf6e1254e32b6646 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D1=8E=D0=B1=D0=B0=D0=BD=D0=B5=D0=B2=D0=B8=D1=87=20?= =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Wed, 9 Aug 2023 16:36:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CommonModules/ЮТТестовыеДанные/Module.bsl | 18 ++- .../Module.bsl | 108 +++++++++++++----- .../ОМ_ЮТТестовыеДанные/Module.bsl | 6 +- 3 files changed, 94 insertions(+), 38 deletions(-) diff --git a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl index df44b437..f0988522 100644 --- a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl @@ -552,17 +552,22 @@ // ТабличныйДокумент - ТабличныйДокумент - Исходный табличный документ // ОписанияТипов - Соответствие из Строка - Соответствие имен колонок таблицы к типам значений // КэшЗначений - Соответствие из Произвольный - Соответствие для хранения создаваемых значений -// Параметры - Соответствие из Строка - Соответствие значений в табличном документе значению таблицы +// ЗаменяемыеЗначения - Соответствие из Строка - Значения, использующиеся для замены +// ПараметрыСозданияОбъектов - Структура: +// * ФикцияОбязательныхПолей - Булево - По умолчанию - Ложь +// * ОбменДаннымиЗагрузка - Булево - По умолчанию - Истина // Возвращаемое значение: // см. ЮТТестовыеДанные_ТаблицыЗначений.ТаблицаЗначенийИзМассиваСтруктур Функция ТаблицаЗначенийИзТабличногоДокумента(ТабличныйДокумент, ОписанияТипов, КэшЗначений = Неопределено, - Параметры = Неопределено) Экспорт + ЗаменяемыеЗначения = Неопределено, ПараметрыСозданияОбъектов = Неопределено) Экспорт + Параметры = ЮТТестовыеДанные_ТаблицыЗначений.ПараметрыЗаполненияТаблицыЗначений(ПараметрыСозданияОбъектов); ИсточникДанных = СтруктурыТабличногоДокумента(ТабличныйДокумент); ТаблицаЗначений = ЮТТестовыеДанные_ТаблицыЗначений.ТаблицаЗначенийИзМассиваСтруктур( ИсточникДанных, ОписанияТипов, КэшЗначений, + ЗаменяемыеЗначения, Параметры ); @@ -575,17 +580,22 @@ // Строки - Строка - Таблица markdown // ОписанияТипов - Соответствие из Строка - Соответствие имен колонок таблицы к типам значений // КэшЗначений - Соответствие из Произвольный - Соответствие для хранения создаваемых значений -// Параметры - Соответствие из Строка - Соответствие значений в табличном документе значению таблицы +// ЗаменяемыеЗначения - Соответствие из Строка - Значения, использующиеся для замены +// ПараметрыСозданияОбъектов - Структура: +// * ФикцияОбязательныхПолей - Булево - По умолчанию - Ложь +// * ОбменДаннымиЗагрузка - Булево - По умолчанию - Истина // Возвращаемое значение: // см. ЮТТестовыеДанные_ТаблицыЗначений.ТаблицаЗначенийИзМассиваСтруктур Функция ТаблицаЗначенийИзТаблицыMarkDown(Строки, ОписанияТипов, КэшЗначений = Неопределено, - Параметры = Неопределено) Экспорт + ЗаменяемыеЗначения = Неопределено, ПараметрыСозданияОбъектов = Неопределено) Экспорт + Параметры = ЮТТестовыеДанные_ТаблицыЗначений.ПараметрыЗаполненияТаблицыЗначений(ПараметрыСозданияОбъектов); ИсточникДанных = ТаблицаMarkDown(Строки); ТаблицаЗначений = ЮТТестовыеДанные_ТаблицыЗначений.ТаблицаЗначенийИзМассиваСтруктур( ИсточникДанных, ОписанияТипов, КэшЗначений, + ЗаменяемыеЗначения, Параметры ); diff --git a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные_ТаблицыЗначений/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные_ТаблицыЗначений/Module.bsl index d76e3f58..5c7db644 100644 --- a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные_ТаблицыЗначений/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные_ТаблицыЗначений/Module.bsl @@ -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 @@ КонструкторОбъекта.Установить(ДанныеЗначения.Ключ, ДанныеЗначения.Значение); КонецЦикла; - Значение = КонструкторОбъекта - .ФикцияОбязательныхПолей() - .Записать(, ОбменДаннымиЗагрузка); + Если Параметры.ФикцияОбязательныхПолей Тогда + КонструкторОбъекта.ФикцияОбязательныхПолей(); + КонецЕсли; + + Значение = КонструкторОбъекта.Записать(, Параметры.ОбменДаннымиЗагрузка); КонецЕсли; diff --git a/tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl b/tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl index 6de2a10e..a0dbbca0 100644 --- a/tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl +++ b/tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl @@ -137,8 +137,8 @@ Поставщик = ЮТест.Данные().СоздатьЭлемент(Справочники.Контрагенты, "Поставщик"); - Параметры = Новый Соответствие; - Параметры.Вставить("Поставщик 1", Поставщик); + ЗаменяемыеЗначения = Новый Соответствие; + ЗаменяемыеЗначения.Вставить("Поставщик 1", Поставщик); // Вызов тестируемого сценария @@ -146,7 +146,7 @@ ИсходныеДанные, ОписанияТипов, КэшЗначений, - Параметры + ЗаменяемыеЗначения ); // Проверка поведения и результатов