Skip to content

Commit

Permalink
[wip] Унификация СоздатьОпределениеЖелудя
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Dec 16, 2023
1 parent 957db95 commit 897ef6f
Showing 1 changed file with 72 additions and 36 deletions.
108 changes: 72 additions & 36 deletions src/internal/Классы/ФабрикаЖелудей.os
Original file line number Diff line number Diff line change
Expand Up @@ -111,39 +111,14 @@

Для Каждого МетодЗавязи Из МетодыЗавязи Цикл

Аннотации = МетодЗавязи.Аннотации;

ТипЖелудяЗавязи = ПрочитатьТипЖелудя(МетодЗавязи, Аннотации);
ИмяЖелудяЗавязи = ПрочитатьИмяЖелудя(Аннотации, "Завязь", МетодЗавязи.Имя);
ХарактерЖелудя = ПрочитатьХарактерЖелудя(Аннотации);
ПрилепляемыеЧастицы = ПрочитатьПрилепляемыеЧастицыВМетоде(МетодЗавязи, ТипДуба);
Завязь = СоздатьЗавязьЧерезМетодЗавязи(ТипДуба, МетодЗавязи);
Прозвища = ПрочитатьПрозвища(Аннотации, ИмяЖелудяЗавязи);
Порядок = ПрочитатьПорядок(Аннотации);
Верховный = ПрочитатьПризнакВерховногоЖелудя(Аннотации);
Спецификация = ПрочитатьСпецификацию(Аннотации);

Если Спецификация = СостоянияПриложения.Инициализация()
И НЕ ОпределениеЖелудя.Спецификация() = СостоянияПриложения.Инициализация() Тогда
ТекстСообщения = СтрШаблон(
"Дуб %1 имеет завязь %2, которая имеет &Спецификацию ""Инициализация"", но сам дуб не имеет этой спецификации.",
ОпределениеЖелудя.Имя(),
МетодЗавязи.Имя
);
ВызватьИсключение ТекстСообщения;
КонецЕсли;

ОпределениеЗавязи = Новый ОпределениеЖелудя(
РазворачивательАннотаций,
ТипЖелудяЗавязи,
ИмяЖелудяЗавязи,
ХарактерЖелудя,
ПрилепляемыеЧастицы,
Завязь,
Прозвища,
Порядок,
Верховный,
Спецификация
ТипЖелудя = ПрочитатьТипЖелудя(МетодЗавязи, МетодЗавязи.Аннотации);

ОпределениеЗавязи = СоздатьОпределениеЖелудяПоМетоду(
ТипЖелудя,
ТипДуба,
МетодЗавязи,
МетодЗавязи.Аннотации,
"Завязь"
);
СохранитьОпределениеЖелудя(ОпределениеЗавязи);

Expand All @@ -153,6 +128,50 @@

КонецФункции

Функция СоздатьОпределениеЖелудяПоМетоду(ТипЖелудя, ТипВладельцаСвойств, Конструктор, Аннотации, АннотацияНадМетодом, Знач ИмяЖелудя = "")

Если Не ЗначениеЗаполнено(ИмяЖелудя) Тогда
// TODO: ИмяЖелудяПоУмолчанию отличается
ИмяЖелудя = ПрочитатьИмяЖелудя(Аннотации, АннотацияНадМетодом, Конструктор.Имя);
КонецЕсли;

Завязь = СоздатьЗавязь(ТипВладельцаСвойств, Конструктор);

ПрилепляемыеЧастицы = ПрочитатьПрилепляемыеЧастицыВМетоде(Конструктор, ТипВладельцаСвойств);
ХарактерЖелудя = ПрочитатьХарактерЖелудя(Аннотации);
Прозвища = ПрочитатьПрозвища(Аннотации, ИмяЖелудя);
Порядок = ПрочитатьПорядок(Аннотации);
Верховный = ПрочитатьПризнакВерховногоЖелудя(Аннотации);
Спецификация = ПрочитатьСпецификацию(Аннотации);

// TODO: Унести в Приемку &Дуб
Если Спецификация = СостоянияПриложения.Инициализация()
И НЕ ОпределениеЖелудя.Спецификация() = СостоянияПриложения.Инициализация() Тогда
ТекстСообщения = СтрШаблон(
"Дуб %1 имеет завязь %2, которая имеет &Спецификацию ""Инициализация"", но сам дуб не имеет этой спецификации.",
ОпределениеЖелудя.Имя(),
Конструктор.Имя
);
ВызватьИсключение ТекстСообщения;
КонецЕсли;

ОпределениеЗавязи = Новый ОпределениеЖелудя(
РазворачивательАннотаций,
ТипЖелудя,
ИмяЖелудя,
ХарактерЖелудя,
ПрилепляемыеЧастицы,
Завязь,
Прозвища,
Порядок,
Верховный,
Спецификация
);

Возврат ОпределениеЗавязи;

КонецФункции

Функция ДобавитьНапильник(ТипНапильника) Экспорт
ОпределениеНапильника = ДобавитьЖителяЛеса(ТипНапильника, "", "Напильник");

Expand Down Expand Up @@ -317,6 +336,7 @@
КонецЕсли;

ОпределениеЖелудя = СоздатьОпределениеЖелудя(
ТипЖителяЛеса,
ТипЖителяЛеса,
Конструктор,
Аннотации,
Expand All @@ -333,15 +353,16 @@

КонецФункции

Функция СоздатьОпределениеЖелудя(ТипЖелудя, Конструктор, Аннотации, АннотацияНадКонструктором, Знач ИмяЖелудя = "")
Функция СоздатьОпределениеЖелудя(ТипЖелудя, ТипВладельцаСвойств, Конструктор, Аннотации, АннотацияНадКонструктором, Знач ИмяЖелудя = "")

Если Не ЗначениеЗаполнено(ИмяЖелудя) Тогда
ИмяЖелудя = ПрочитатьИмяЖелудя(Аннотации, АннотацияНадКонструктором, Строка(ТипЖелудя));
КонецЕсли;

ПрилепляемыеЧастицы = ПрочитатьПрилепляемыеЧастицыВМетоде(Конструктор, ТипЖелудя);
Завязь = СоздатьЗавязь(ТипВладельцаСвойств, Конструктор);

ПрилепляемыеЧастицы = ПрочитатьПрилепляемыеЧастицыВМетоде(Конструктор, ТипВладельцаСвойств);
Характер = ПрочитатьХарактерЖелудя(Аннотации);
Завязь = СоздатьЗавязьЧерезКонструкторОбъекта(ТипЖелудя, Конструктор);
Прозвища = ПрочитатьПрозвища(Аннотации, ИмяЖелудя);
Порядок = ПрочитатьПорядок(Аннотации);
Верховный = ПрочитатьПризнакВерховногоЖелудя(Аннотации);
Expand All @@ -364,6 +385,21 @@

КонецФункции

Функция СоздатьЗавязь(ТипВладельцаСвойств, Конструктор)

Если НРег(Конструктор.Имя) = НРег("ПриСозданииОбъекта")
ИЛИ НРег(Конструктор.Имя) = НРег("OnObjectCreation") Тогда

Возврат СоздатьЗавязьЧерезКонструкторОбъекта(ТипВладельцаСвойств, Конструктор);

Иначе

Возврат СоздатьЗавязьЧерезМетодЗавязи(ТипВладельцаСвойств, Конструктор);

КонецЕсли;

КонецФункции

Функция СоздатьЗавязьЧерезКонструкторОбъекта(ТипЖелудя, Конструктор)

Действие = Новый Действие(ФабричныеМетоды, "КонструкторОбъекта");
Expand Down

0 comments on commit 897ef6f

Please sign in to comment.