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 983d586..335e854 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" @@ -26,9 +26,7 @@ Возврат НайденныеОпределения[0]; КонецЕсли; - НайденноеОпределение = ПроцессорыКоллекций.ИзКоллекции(НайденныеОпределения) - .Фильтровать("Результат = Элемент.Верховный()") - .ПолучитьПервый(); + НайденноеОпределение = НайтиОпределениеВерховного(НайденныеОпределения); Если НайденноеОпределение = Неопределено Тогда ВызватьИсключение "Найдено несколько желудей с именем/прозвищем """ + Имя + """"; @@ -37,6 +35,15 @@ Возврат НайденноеОпределение; КонецФункции +Функция НайтиОпределениеВерховного(Коллекция) + Для Каждого Элемент из Коллекция Цикл + Если Элемент.Верховный() = Истина Тогда + Возврат Элемент; + КонецЕсли; + КонецЦикла; + Возврат Неопределено; +КонецФункции + Функция ПолучитьСписокОпределенийЖелудей(Имя) Экспорт Результат = Новый Массив; @@ -193,9 +200,7 @@ ПередаваемыеПрилепляемыеЧастицы = ПереданныеПрилепляемыеЧастицы; Иначе - КоличествоБлестяшек = ПроцессорыКоллекций.ИзКоллекции(ОпределениеЖелудя.ПрилепляемыеЧастицы()) - .Фильтровать("Результат = Элемент.ТипЧастицы() = ТипыПрилепляемыхЧастиц.Блестяшка()") - .Количество(); + КоличествоБлестяшек = ПосчитатьКоличествоБлестяшек(ОпределениеЖелудя.ПрилепляемыеЧастицы()); Если КоличествоБлестяшек <> ПереданныеПрилепляемыеЧастицы.Количество() Тогда ВызватьИсключение "При поиске желудя " + ИмяЖелудя + " количество переданных произвольных параметров отличается от количества параметров не-желудей/не-деталек."; @@ -251,6 +256,16 @@ КонецФункции +Функция ПосчитатьКоличествоБлестяшек(ПрилепляемыеЧастицы) + Количество = 0; + Для Каждого Элемент из ПрилепляемыеЧастицы Цикл + Если Элемент.ТипЧастицы() = ТипыПрилепляемыхЧастиц.Блестяшка() Тогда + Количество = Количество + 1; + КонецЕсли; + КонецЦикла; + Возврат Количество; +КонецФункции + Функция ДобавитьЖителяЛеса(ТипЖителяТеля, ИмяЖителяЛеса, АннотацияНадКонструктором) РефлекторОбъекта = Новый РефлекторОбъекта(ТипЖителяТеля); diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\274\320\270.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\274\320\270.os" index 3e65e29..435890e 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\274\320\270.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\274\320\270.os" @@ -1,25 +1,34 @@ #Использовать fluent Функция ПолучитьАннотацию(Свойство, ИмяАннотации) Экспорт - Аннотация = ПроцессорыКоллекций.ИзКоллекции(Свойство.Аннотации) - .Фильтровать( - "Результат = ВРег(Элемент.Имя) = ВРег(ДополнительныеПараметры.ИмяАннотации)", - Новый Структура("ИмяАннотации", ИмяАннотации) - ).ПолучитьПервый(); - + Аннотация = ОтфильтроватьПервуюАннотациюПоИмени(Свойство.Аннотации, ИмяАннотации); Возврат Аннотация; КонецФункции Функция ПолучитьАннотации(Свойство, ИмяАннотации) Экспорт - Аннотации = ПроцессорыКоллекций.ИзКоллекции(Свойство.Аннотации) - .Фильтровать( - "Результат = ВРег(Элемент.Имя) = ВРег(ДополнительныеПараметры.ИмяАннотации)", - Новый Структура("ИмяАннотации", ИмяАннотации) - ).ВМассив(); - + Аннотации = ОтфильтроватьАннотацииПоИмени(Свойство.Аннотации, ИмяАннотации); Возврат Аннотации; КонецФункции +Функция ОтфильтроватьАннотацииПоИмени(Аннотации, ИмяАннотации) + Массив = Новый Массив(); + Для каждого Элемент Из Аннотации Цикл + Если ВРег(Элемент.Имя) = ВРег(ИмяАннотации) Тогда + Массив.Добавить(Элемент); + КонецЕсли; + КонецЦикла; + Возврат Массив; +КонецФункции + +Функция ОтфильтроватьПервуюАннотациюПоИмени(Аннотации, ИмяАннотации) + Для каждого Элемент Из Аннотации Цикл + Если ВРег(Элемент.Имя) = ВРег(ИмяАннотации) Тогда + Возврат Элемент; + КонецЕсли; + КонецЦикла; + Возврат Неопределено; +КонецФункции + Функция ПолучитьЗначениеПараметраАннотации( Аннотация, ИмяПараметра = "Значение", @@ -33,11 +42,7 @@ Возврат ЗначениеПоУмолчанию; КонецЕсли; - ПараметрАннотации = ПроцессорыКоллекций.ИзКоллекции(Аннотация.Параметры) - .Фильтровать( - "Результат = ВРег(Элемент.Имя) = ВРег(ДополнительныеПараметры.ИмяПараметра)", - Новый Структура("ИмяПараметра", ИмяПараметра) - ).ПолучитьПервый(); + ПараметрАннотации = ПолучитьПараметрАннотации(Аннотация.Параметры, ИмяПараметра); Если ПараметрАннотации <> Неопределено Тогда Возврат ПараметрАннотации.Значение; @@ -59,4 +64,13 @@ ВызватьИсключение Сообщение; КонецЕсли; +КонецФункции + +Функция ПолучитьПараметрАннотации(ПараметрыАннотации, ИмяПараметра) + Для каждого Элемент Из ПараметрыАннотации Цикл + Если ВРег(Элемент.Имя) = ВРег(ИмяПараметра) Тогда + Возврат Элемент; + КонецЕсли; + КонецЦикла; + Возврат Неопределено; КонецФункции \ No newline at end of file