1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2024-12-03 08:45:31 +02:00
Унификация работы с реквизитами.
Более понятное сообщение об ошибке при неизвестном реквизите.
This commit is contained in:
alkoleft 2024-03-24 02:48:11 +03:00
parent bd4f64ded6
commit 2f118e52ad

View File

@ -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`", ИмяОсновнойТаблицы, ИмяРеквизита);
КонецЕсли;
ВызватьИсключение Пояснение;
КонецЕсли;
Возврат Реквизиты[ИмяРеквизита];
КонецФункции
Функция ТекущаяЗапись(Контекст)
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
Возврат ДанныеСтроки(Контекст);
Иначе
Возврат Контекст.Данные;
КонецЕсли;
КонецФункции
#КонецОбласти