+ Пронумеровать + тест

This commit is contained in:
Dmitry Belyaev 2022-09-01 14:38:21 +03:00
parent 7c5b6ee480
commit ce425712e2
Signed by: b4tman
GPG Key ID: 41A00BF15EA7E5F3
2 changed files with 41 additions and 0 deletions

View File

@ -733,3 +733,33 @@
Результат = 1 = ЭтотОбъект.Клонировать().Фильтр("Условие = Элемент").Количество();
Возврат Результат;
КонецФункции
Функция Пронумеровать(Знач ПервыйНомер=0) Экспорт
Если ЭтотОбъект.Пустой() Тогда
Возврат ЭтотОбъект;
КонецЕсли;
// создание пары Ключ => Значение
Набор = Новый Соответствие;
КлючиПоПорядку = Новый Массив;
ЭтотОбъект.СброситьПозицию();
Счетчик = ПервыйНомер;
Пока ЭтотОбъект.Следующий() Цикл
Набор.Вставить(Счетчик, ЭтотОбъект.ТекущийЭлемент());
КлючиПоПорядку.Добавить(Счетчик);
Счетчик = 1 + Счетчик;
КонецЦикла;
ЭтотОбъект.СброситьПозицию();
// заполнение новой коллекции
ЭтотОбъект.Начать();
ЭтотОбъект.Вставить(КлючиПоПорядку.ВГраница(), Неопределено);
Для Каждого ТекПара Из Набор Цикл
Индекс = КлючиПоПорядку.Найти(ТекПара.Ключ);
ЭтотОбъект.Установить(Индекс, ТекПара);
КонецЦикла;
Возврат ЭтотОбъект;
КонецФункции

View File

@ -97,6 +97,8 @@
НаборТестов.Добавить("Тест_ВерноЛюбое");
НаборТестов.Добавить("Тест_ВерноТолькоОдно");
НаборТестов.Добавить("Тест_Пронумеровать");
КонецПроцедуры
Процедура ПередЗапускомТеста() Экспорт
@ -611,4 +613,13 @@
).ЭтоИстина();
КонецПроцедуры
Процедура Тест_Пронумеровать() Экспорт
Ожидаем.Что(Итератор()
.ВзятьИз("АБВГД")
.Пронумеровать()
.Карта("Результат = СтрШаблон(""%1.%2"", Элемент.Ключ, Элемент.Значение)")
.СобратьСтроку(" ")
).Равно("0.А 1.Б 2.В 3.Г 4.Д");
КонецПроцедуры