diff --git a/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl index 3728f74c..bc9a51a9 100644 --- a/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl @@ -20,12 +20,9 @@ Процедура Установить(Контекст, ИмяРеквизита, Значение) Экспорт - Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда - ТекущаяЗапись = ДанныеСтроки(Контекст); - Иначе - ТекущаяЗапись = Контекст.Данные; - КонецЕсли; + ОписаниеРеквизита(Контекст, ИмяРеквизита); // Проверка наличия реквизита + ТекущаяЗапись = ТекущаяЗапись(Контекст); ТекущаяЗапись.Вставить(ИмяРеквизита, Значение); КонецПроцедуры @@ -34,13 +31,8 @@ ЮТПроверкиСлужебный.ПроверитьТипПараметра(ОграничениеТипа, "Тип, ОписаниеТипов, Строка", "Фикция", "ЮТКонструкторТестовыхДанных", Истина); - Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда - ОписаниеРеквизита = Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть][ИмяРеквизита]; - ТекущаяЗапись = ДанныеСтроки(Контекст); - Иначе - ОписаниеРеквизита = Контекст.Метаданные.Реквизиты[ИмяРеквизита]; - ТекущаяЗапись = Контекст.Данные; - КонецЕсли; + ТекущаяЗапись = ТекущаяЗапись(Контекст); + ОписаниеРеквизита = ОписаниеРеквизита(Контекст, ИмяРеквизита); Если ОграничениеТипа <> Неопределено Тогда ПолноеИмяРеквизита = ЮТСтроки.ДобавитьСтроку(Контекст.ТекущаяТабличнаяЧасть, ИмяРеквизита, "."); @@ -56,13 +48,8 @@ Процедура ФикцияОбязательныхПолей(Контекст) Экспорт - Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда - Реквизиты = Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть]; - ТекущаяЗапись = ДанныеСтроки(Контекст); - Иначе - Реквизиты = Контекст.Метаданные.Реквизиты; - ТекущаяЗапись = Контекст.Данные; - КонецЕсли; + Реквизиты = Реквизиты(Контекст); + ТекущаяЗапись = ТекущаяЗапись(Контекст); Для Каждого Элемент Из Реквизиты Цикл Реквизит = Элемент.Значение; @@ -189,7 +176,7 @@ // Структура - Новый контекст конструктора: // * Менеджер - Произвольный // * Данные - Структура -// * Метаданные - см. ЮТМетаданные.ОписаниеОбъектаМетаданных +// * Метаданные - см. ЮТМетаданные.СтруктураОписанияОбъектаМетаданных // * ТекущаяТабличнаяЧасть - Строка // * ДополнительныеСвойства - Структура Функция НовыйКонтекстКонструктора(Менеджер) Экспорт @@ -247,4 +234,43 @@ КонецФункции +Функция Реквизиты(Контекст) + + Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда + Возврат Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть]; + Иначе + Возврат Контекст.Метаданные.Реквизиты; + КонецЕсли; + +КонецФункции + +Функция ОписаниеРеквизита(Контекст, ИмяРеквизита) + + Реквизиты = Реквизиты(Контекст); + + Если НЕ Реквизиты.Свойство(ИмяРеквизита) Тогда + ИмяОсновнойТаблицы = ЮТМетаданные.НормализованноеИмяТаблицы(Контекст.Метаданные); + Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда + Пояснение = СтрШаблон("Табличная часть `%1.%2` не содержит реквизит `%3`", ИмяОсновнойТаблицы, Контекст.ТекущаяТабличнаяЧасть, ИмяРеквизита); + Иначе + Пояснение = СтрШаблон("`%1` не содержит реквизит `%2`", ИмяОсновнойТаблицы, ИмяРеквизита); + КонецЕсли; + + ВызватьИсключение Пояснение; + КонецЕсли; + + Возврат Реквизиты[ИмяРеквизита]; + +КонецФункции + +Функция ТекущаяЗапись(Контекст) + + Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда + Возврат ДанныеСтроки(Контекст); + Иначе + Возврат Контекст.Данные; + КонецЕсли; + +КонецФункции + #КонецОбласти