diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\226\320\265\320\273\321\203\320\264\320\265\320\271.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\226\320\265\320\273\321\203\320\264\320\265\320\271.os" index b80a653..ba070c5 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\226\320\265\320\273\321\203\320\264\320\265\320\271.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\226\320\265\320\273\321\203\320\264\320\265\320\271.os" @@ -111,39 +111,14 @@ Для Каждого МетодЗавязи Из МетодыЗавязи Цикл - Аннотации = МетодЗавязи.Аннотации; - - ТипЖелудяЗавязи = ПрочитатьТипЖелудя(МетодЗавязи, Аннотации); - ИмяЖелудяЗавязи = ПрочитатьИмяЖелудя(Аннотации, "Завязь", МетодЗавязи.Имя); - ХарактерЖелудя = ПрочитатьХарактерЖелудя(Аннотации); - ПрилепляемыеЧастицы = ПрочитатьПрилепляемыеЧастицыВМетоде(МетодЗавязи, ТипДуба); - Завязь = СоздатьЗавязьЧерезМетодЗавязи(ТипДуба, МетодЗавязи); - Прозвища = ПрочитатьПрозвища(Аннотации, ИмяЖелудяЗавязи); - Порядок = ПрочитатьПорядок(Аннотации); - Верховный = ПрочитатьПризнакВерховногоЖелудя(Аннотации); - Спецификация = ПрочитатьСпецификацию(Аннотации); - - Если Спецификация = СостоянияПриложения.Инициализация() - И НЕ ОпределениеЖелудя.Спецификация() = СостоянияПриложения.Инициализация() Тогда - ТекстСообщения = СтрШаблон( - "Дуб %1 имеет завязь %2, которая имеет &Спецификацию ""Инициализация"", но сам дуб не имеет этой спецификации.", - ОпределениеЖелудя.Имя(), - МетодЗавязи.Имя - ); - ВызватьИсключение ТекстСообщения; - КонецЕсли; - - ОпределениеЗавязи = Новый ОпределениеЖелудя( - РазворачивательАннотаций, - ТипЖелудяЗавязи, - ИмяЖелудяЗавязи, - ХарактерЖелудя, - ПрилепляемыеЧастицы, - Завязь, - Прозвища, - Порядок, - Верховный, - Спецификация + ТипЖелудя = ПрочитатьТипЖелудя(МетодЗавязи, МетодЗавязи.Аннотации); + + ОпределениеЗавязи = СоздатьОпределениеЖелудяПоМетоду( + ТипЖелудя, + ТипДуба, + МетодЗавязи, + МетодЗавязи.Аннотации, + "Завязь" ); СохранитьОпределениеЖелудя(ОпределениеЗавязи); @@ -153,6 +128,50 @@ КонецФункции +Функция СоздатьОпределениеЖелудяПоМетоду(ТипЖелудя, ТипВладельцаСвойств, Конструктор, Аннотации, АннотацияНадМетодом, Знач ИмяЖелудя = "") + + Если Не ЗначениеЗаполнено(ИмяЖелудя) Тогда + // TODO: ИмяЖелудяПоУмолчанию отличается + ИмяЖелудя = ПрочитатьИмяЖелудя(Аннотации, АннотацияНадМетодом, Конструктор.Имя); + КонецЕсли; + + Завязь = СоздатьЗавязь(ТипВладельцаСвойств, Конструктор); + + ПрилепляемыеЧастицы = ПрочитатьПрилепляемыеЧастицыВМетоде(Конструктор, ТипВладельцаСвойств); + ХарактерЖелудя = ПрочитатьХарактерЖелудя(Аннотации); + Прозвища = ПрочитатьПрозвища(Аннотации, ИмяЖелудя); + Порядок = ПрочитатьПорядок(Аннотации); + Верховный = ПрочитатьПризнакВерховногоЖелудя(Аннотации); + Спецификация = ПрочитатьСпецификацию(Аннотации); + + // TODO: Унести в Приемку &Дуб + // Если Спецификация = СостоянияПриложения.Инициализация() + // И НЕ ОпределениеЖелудя.Спецификация() = СостоянияПриложения.Инициализация() Тогда + // ТекстСообщения = СтрШаблон( + // "Дуб %1 имеет завязь %2, которая имеет &Спецификацию ""Инициализация"", но сам дуб не имеет этой спецификации.", + // ОпределениеЖелудя.Имя(), + // Конструктор.Имя + // ); + // ВызватьИсключение ТекстСообщения; + // КонецЕсли; + + ОпределениеЗавязи = Новый ОпределениеЖелудя( + РазворачивательАннотаций, + ТипЖелудя, + ИмяЖелудя, + ХарактерЖелудя, + ПрилепляемыеЧастицы, + Завязь, + Прозвища, + Порядок, + Верховный, + Спецификация + ); + + Возврат ОпределениеЗавязи; + +КонецФункции + Функция ДобавитьНапильник(ТипНапильника) Экспорт ОпределениеНапильника = ДобавитьЖителяЛеса(ТипНапильника, "", "Напильник"); @@ -317,6 +336,7 @@ КонецЕсли; ОпределениеЖелудя = СоздатьОпределениеЖелудя( + ТипЖителяЛеса, ТипЖителяЛеса, Конструктор, Аннотации, @@ -333,15 +353,16 @@ КонецФункции -Функция СоздатьОпределениеЖелудя(ТипЖелудя, Конструктор, Аннотации, АннотацияНадКонструктором, Знач ИмяЖелудя = "") +Функция СоздатьОпределениеЖелудя(ТипЖелудя, ТипВладельцаСвойств, Конструктор, Аннотации, АннотацияНадКонструктором, Знач ИмяЖелудя = "") Если Не ЗначениеЗаполнено(ИмяЖелудя) Тогда ИмяЖелудя = ПрочитатьИмяЖелудя(Аннотации, АннотацияНадКонструктором, Строка(ТипЖелудя)); КонецЕсли; - ПрилепляемыеЧастицы = ПрочитатьПрилепляемыеЧастицыВМетоде(Конструктор, ТипЖелудя); + Завязь = СоздатьЗавязь(ТипВладельцаСвойств, Конструктор); + + ПрилепляемыеЧастицы = ПрочитатьПрилепляемыеЧастицыВМетоде(Конструктор, ТипВладельцаСвойств); Характер = ПрочитатьХарактерЖелудя(Аннотации); - Завязь = СоздатьЗавязьЧерезКонструкторОбъекта(ТипЖелудя, Конструктор); Прозвища = ПрочитатьПрозвища(Аннотации, ИмяЖелудя); Порядок = ПрочитатьПорядок(Аннотации); Верховный = ПрочитатьПризнакВерховногоЖелудя(Аннотации); @@ -364,6 +385,21 @@ КонецФункции +Функция СоздатьЗавязь(ТипВладельцаСвойств, Конструктор) + + Если НРег(Конструктор.Имя) = НРег("ПриСозданииОбъекта") + ИЛИ НРег(Конструктор.Имя) = НРег("OnObjectCreation") Тогда + + Возврат СоздатьЗавязьЧерезКонструкторОбъекта(ТипВладельцаСвойств, Конструктор); + + Иначе + + Возврат СоздатьЗавязьЧерезМетодЗавязи(ТипВладельцаСвойств, Конструктор); + + КонецЕсли; + +КонецФункции + Функция СоздатьЗавязьЧерезКонструкторОбъекта(ТипЖелудя, Конструктор) Действие = Новый Действие(ФабричныеМетоды, "КонструкторОбъекта");