From eadf8b7da6c2014c0ef3131da9f9709b40e722bc Mon Sep 17 00:00:00 2001 From: Ivanchenko Nikita Date: Tue, 27 Sep 2022 10:45:40 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D1=84?= =?UTF-8?q?=D0=BB=D1=8E=D0=B5=D0=BD=D1=82=20=D0=B8=D0=B7=20=D1=84=D0=B0?= =?UTF-8?q?=D0=B1=D1=80=D0=B8=D0=BA=D0=B8=20=D0=B6=D0=B5=D0=BB=D1=83=D0=B4?= =?UTF-8?q?=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\273\321\203\320\264\320\265\320\271.os" | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) 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; + КонецЕсли; + КонецЦикла; + Возврат Количество; +КонецФункции + Функция ДобавитьЖителяЛеса(ТипЖителяТеля, ИмяЖителяЛеса, АннотацияНадКонструктором) РефлекторОбъекта = Новый РефлекторОбъекта(ТипЖителяТеля); From 64e6fb91e0e4079d8c97ef4f90956d26c4f6419b Mon Sep 17 00:00:00 2001 From: Ivanchenko Nikita Date: Thu, 29 Sep 2022 03:02:03 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=B5=D1=89=D0=B5=20=D1=83=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D0=BB=20=D1=84=D0=BB=D1=8E=D0=B5=D0=BD=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\206\320\270\321\217\320\274\320\270.os" | 48 ++++++++++++------- 1 file changed, 31 insertions(+), 17 deletions(-) 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