////////////////////////////////////////////////////////////////////////////////
// Модуль: A1sAR
// Назначение:
// Утилиты для работы с массивами: создание, объединение, фильтрация, сортировка.
//
// Автор: A1sCode (a1scode.ru)
// Версия: 1.2
// Дата: 2025-11-17
////////////////////////////////////////////////////////////////////////////////
Функция Of(
Знач1 = Неопределено, Знач2 = Неопределено, Знач3 = Неопределено, Знач4 = Неопределено, Знач5 = Неопределено,
Знач6 = Неопределено, Знач7 = Неопределено, Знач8 = Неопределено, Знач9 = Неопределено, Знач10 = Неопределено,
Знач11 = Неопределено, Знач12 = Неопределено, Знач13 = Неопределено, Знач14 = Неопределено, Знач15 = Неопределено,
Знач16 = Неопределено, Знач17 = Неопределено, Знач18 = Неопределено, Знач19 = Неопределено, Знач20 = Неопределено,
Знач21 = Неопределено, Знач22 = Неопределено, Знач23 = Неопределено, Знач24 = Неопределено, Знач25 = Неопределено,
Знач26 = Неопределено, Знач27 = Неопределено, Знач28 = Неопределено, Знач29 = Неопределено, Знач30 = Неопределено,
Знач31 = Неопределено, Знач32 = Неопределено, Знач33 = Неопределено, Знач34 = Неопределено, Знач35 = Неопределено,
Знач36 = Неопределено, Знач37 = Неопределено, Знач38 = Неопределено, Знач39 = Неопределено, Знач40 = Неопределено,
ТолькоУникальные = Ложь
) Экспорт
Массив = Новый Массив;
// Заменяем ЗначениеЗаполнено на <> Неопределено
Если Знач1 <> Неопределено Тогда Массив.Добавить(Знач1); КонецЕсли;
Если Знач2 <> Неопределено Тогда Массив.Добавить(Знач2); КонецЕсли;
Если Знач3 <> Неопределено Тогда Массив.Добавить(Знач3); КонецЕсли;
Если Знач4 <> Неопределено Тогда Массив.Добавить(Знач4); КонецЕсли;
Если Знач5 <> Неопределено Тогда Массив.Добавить(Знач5); КонецЕсли;
Если Знач6 <> Неопределено Тогда Массив.Добавить(Знач6); КонецЕсли;
Если Знач7 <> Неопределено Тогда Массив.Добавить(Знач7); КонецЕсли;
Если Знач8 <> Неопределено Тогда Массив.Добавить(Знач8); КонецЕсли;
Если Знач9 <> Неопределено Тогда Массив.Добавить(Знач9); КонецЕсли;
Если Знач10 <> Неопределено Тогда Массив.Добавить(Знач10); КонецЕсли;
Если Знач11 <> Неопределено Тогда Массив.Добавить(Знач11); КонецЕсли;
Если Знач12 <> Неопределено Тогда Массив.Добавить(Знач12); КонецЕсли;
Если Знач13 <> Неопределено Тогда Массив.Добавить(Знач13); КонецЕсли;
Если Знач14 <> Неопределено Тогда Массив.Добавить(Знач14); КонецЕсли;
Если Знач15 <> Неопределено Тогда Массив.Добавить(Знач15); КонецЕсли;
Если Знач16 <> Неопределено Тогда Массив.Добавить(Знач16); КонецЕсли;
Если Знач17 <> Неопределено Тогда Массив.Добавить(Знач17); КонецЕсли;
Если Знач18 <> Неопределено Тогда Массив.Добавить(Знач18); КонецЕсли;
Если Знач19 <> Неопределено Тогда Массив.Добавить(Знач19); КонецЕсли;
Если Знач20 <> Неопределено Тогда Массив.Добавить(Знач20); КонецЕсли;
Если Знач21 <> Неопределено Тогда Массив.Добавить(Знач21); КонецЕсли;
Если Знач22 <> Неопределено Тогда Массив.Добавить(Знач22); КонецЕсли;
Если Знач23 <> Неопределено Тогда Массив.Добавить(Знач23); КонецЕсли;
Если Знач24 <> Неопределено Тогда Массив.Добавить(Знач24); КонецЕсли;
Если Знач25 <> Неопределено Тогда Массив.Добавить(Знач25); КонецЕсли;
Если Знач26 <> Неопределено Тогда Массив.Добавить(Знач26); КонецЕсли;
Если Знач27 <> Неопределено Тогда Массив.Добавить(Знач27); КонецЕсли;
Если Знач28 <> Неопределено Тогда Массив.Добавить(Знач28); КонецЕсли;
Если Знач29 <> Неопределено Тогда Массив.Добавить(Знач29); КонецЕсли;
Если Знач30 <> Неопределено Тогда Массив.Добавить(Знач30); КонецЕсли;
Если Знач31 <> Неопределено Тогда Массив.Добавить(Знач31); КонецЕсли;
Если Знач32 <> Неопределено Тогда Массив.Добавить(Знач32); КонецЕсли;
Если Знач33 <> Неопределено Тогда Массив.Добавить(Знач33); КонецЕсли;
Если Знач34 <> Неопределено Тогда Массив.Добавить(Знач34); КонецЕсли;
Если Знач35 <> Неопределено Тогда Массив.Добавить(Знач35); КонецЕсли;
Если Знач36 <> Неопределено Тогда Массив.Добавить(Знач36); КонецЕсли;
Если Знач37 <> Неопределено Тогда Массив.Добавить(Знач37); КонецЕсли;
Если Знач38 <> Неопределено Тогда Массив.Добавить(Знач38); КонецЕсли;
Если Знач39 <> Неопределено Тогда Массив.Добавить(Знач39); КонецЕсли;
Если Знач40 <> Неопределено Тогда Массив.Добавить(Знач40); КонецЕсли;
Если ТолькоУникальные Тогда
Массив = RemoveDuplicates(Массив);
КонецЕсли;
Возврат Массив;
КонецФункции
#Region Public_Methods
//
// Создает новый массив заданного размера, заполненный одинаковым значением. ✦
// Размер массива ➤
// Значение для заполнения всех элементов ➤
// Array — новый массив заполненный значениями ⬅
//
//
// // A1sAR.OfN(5, "test") -> ["test", "test", "test", "test", "test"]
// // A1sAR.OfN(3, 0) -> [0, 0, 0]
// // A1sAR.OfN(2, Новый Структура()) -> [Структура{}, Структура{}]
//
//
Функция OfN(ArraySize, DefaultValueForAllElements) Экспорт //⚙
ib = "Создание массива размером " + Строка(ArraySize); //✍
Если ТипЗнч(ArraySize) <> Тип("Число") ИЛИ ArraySize < 0 Тогда //⚡
Возврат Новый Массив(); //↩
КонецЕсли;
ResultArray = Новый Массив(); //✏
Для i = 0 По ArraySize - 1 Цикл //⟳
ResultArray.Добавить(DefaultValueForAllElements); //✏
КонецЦикла;
Возврат ResultArray; //↩
КонецФункции
//
// Заполняет существующий массив одинаковым значением. ✦
// Существующий массив для заполнения ➤
// Значение для заполнения ➤
// Boolean — успешно ли выполнена операция ⬅
//
//
// // arr = Новый Массив();
// // arr.Добавить(1); arr.Добавить(2); arr.Добавить(3);
// // A1sAR.Fill(arr, "new") -> arr станет ["new", "new", "new"]
//
//
Функция Fill(ExistingArray, DefaultValueForAllElements) Экспорт //⚙
ib = "Заполнение существующего массива"; //✍
Если ТипЗнч(ExistingArray) <> Тип("Массив") Тогда //⚡
Возврат Ложь; //↩
КонецЕсли;
ArraySize = ExistingArray.Количество(); //✏
Для i = 0 По ArraySize - 1 Цикл //⟳
ExistingArray[i] = DefaultValueForAllElements; //✏
КонецЦикла;
Возврат Истина; //↩
КонецФункции
#КонецОбласти
#Region OfN_Tests_And_Examples
//
// Самотест модуля A1sAR с примерами использования. ✦
// Boolean — все тесты пройдены успешно ⬅
//
//
Функция OfN_SelfTest() Экспорт //⚙
ib = "Самотест A1sAR"; //✍
TestsPassed = 0; //✏
TestsTotal = 0; //✏
Сообщить("=== A1sAR.SelfTest() START ===");
// Тест 1: OfN с числовым значением
TestsTotal = TestsTotal + 1; //✏
TestArray1 = OfN(5, 42); //✏
Если TestArray1.Количество() = 5 И TestArray1[0] = 42 И TestArray1[4] = 42 Тогда //⚡
TestsPassed = TestsPassed + 1; //✏
Сообщить("✓ Тест 1 (OfN числовое): ПРОЙДЕН");
Иначе
Сообщить("✗ Тест 1 (OfN числовое): ПРОВАЛЕН");
КонецЕсли;
// Тест 2: OfN со строковым значением
TestsTotal = TestsTotal + 1; //✏
TestArray2 = OfN(3, "test"); //✏
Если TestArray2.Количество() = 3 И TestArray2[0] = "test" И TestArray2[2] = "test" Тогда //⚡
TestsPassed = TestsPassed + 1; //✏
Сообщить("✓ Тест 2 (OfN строковое): ПРОЙДЕН");
Иначе
Сообщить("✗ Тест 2 (OfN строковое): ПРОВАЛЕН");
КонецЕсли;
// Тест 3: OfN с нулевым размером
TestsTotal = TestsTotal + 1; //✏
TestArray3 = OfN(0, "empty"); //✏
Если TestArray3.Количество() = 0 Тогда //⚡
TestsPassed = TestsPassed + 1; //✏
Сообщить("✓ Тест 3 (OfN пустой): ПРОЙДЕН");
Иначе
Сообщить("✗ Тест 3 (OfN пустой): ПРОВАЛЕН");
КонецЕсли;
// Тест 4: OfN с отрицательным размером
TestsTotal = TestsTotal + 1; //✏
TestArray4 = OfN(-5, "negative"); //✏
Если TestArray4.Количество() = 0 Тогда //⚡
TestsPassed = TestsPassed + 1; //✏
Сообщить("✓ Тест 4 (OfN отрицательный): ПРОЙДЕН");
Иначе
Сообщить("✗ Тест 4 (OfN отрицательный): ПРОВАЛЕН");
КонецЕсли;
// Тест 5: Fill существующего массива
TestsTotal = TestsTotal + 1; //✏
TestArray5 = Новый Массив(); //✏
TestArray5.Добавить(1); //✏
TestArray5.Добавить(2); //✏
TestArray5.Добавить(3); //✏
FillResult = Fill(TestArray5, "filled"); //✏
Если FillResult И TestArray5.Количество() = 3 И TestArray5[0] = "filled" И TestArray5[2] = "filled" Тогда //⚡
TestsPassed = TestsPassed + 1; //✏
Сообщить("✓ Тест 5 (Fill массива): ПРОЙДЕН");
Иначе
Сообщить("✗ Тест 5 (Fill массива): ПРОВАЛЕН");
КонецЕсли;
// Тест 6: Fill с неправильным параметром
TestsTotal = TestsTotal + 1; //✏
FillResult2 = Fill("не массив", "error"); //✏
Если НЕ FillResult2 Тогда //⚡
TestsPassed = TestsPassed + 1; //✏
Сообщить("✓ Тест 6 (Fill ошибка): ПРОЙДЕН");
Иначе
Сообщить("✗ Тест 6 (Fill ошибка): ПРОВАЛЕН");
КонецЕсли;
// Итоги тестирования
Если TestsPassed = TestsTotal Тогда //⚡
Сообщить("=== A1sAR.SelfTest() SUCCESS: " + Строка(TestsPassed) + "/" + Строка(TestsTotal) + " ===");
Возврат Истина; //↩
Иначе
Сообщить("=== A1sAR.SelfTest() FAILED: " + Строка(TestsPassed) + "/" + Строка(TestsTotal) + " ===");
Возврат Ложь; //↩
КонецЕсли;
КонецФункции
#КонецОбласти
#Region Examples_Advanced
//
// Расширенные примеры использования функций модуля A1sAR. ✦
//
Процедура OfN_ExamplesAdvanced() Экспорт //⚙
ib = "Примеры A1sAR"; //✍
Сообщить("=== Примеры использования A1sAR ===");
// Пример 1: Создание массива с булевыми значениями
BoolArray = OfN(4, Истина); //✏
Сообщить("Массив булевых (4 элемента): " + Строка(BoolArray.Количество()) + " элементов");
// Пример 2: Массив структур
EmptyStruct = Новый Структура(); //✏
StructArray = OfN(2, EmptyStruct); //✏
Сообщить("Массив структур: " + Строка(StructArray.Количество()) + " элементов");
// Пример 3: Заполнение существующего массива датой
DateArray = Новый Массив(); //✏
DateArray.Добавить('20240101'); //✏
DateArray.Добавить('20240201'); //✏
DateArray.Добавить('20240301'); //✏
CurrentDate = ТекущаяДата(); //✏
Fill(DateArray, CurrentDate); //✏
Сообщить("Массив дат заполнен текущей датой: " + Строка(DateArray.Количество()) + " элементов");
// Пример 4: Создание матрицы (массив массивов)
MatrixRow = OfN(3, 0); //✏
Matrix = OfN(2, MatrixRow); //✏
Сообщить("Матрица 2x3 создана: " + Строка(Matrix.Количество()) + " строк");
Сообщить("=== Примеры завершены ===");
КонецПроцедуры
#КонецОбласти
// Добавляет значение в массив по условию.
//
// Параметры:
// Массив - Массив - массив, в который нужно добавить значение.
// ЗначениеЕслиИстина - Произвольный - значение для добавления при истинном условии.
// Условие - Булево - условие добавления значения.
// ЗначениеЕслиЛожь - Произвольный - значение для добавления при ложном условии.
//
// Возвращаемое значение:
// Массив - переданный массив с добавленным значением или без изменений.
//
Функция AddIf(Массив, ЗначениеЕслиИстина, Условие = Истина, ЗначениеЕслиЛожь = Неопределено) Экспорт
Если Условие Тогда
Массив.Добавить(ЗначениеЕслиИстина);
ИначеЕсли ЗначениеЕслиЛожь <> Неопределено Тогда
Массив.Добавить(ЗначениеЕслиЛожь);
КонецЕсли;
Возврат Массив;
КонецФункции
/// Объединяет до 8 массивов в один
/// Первый массив
/// Второй массив
/// Третий массив
/// Четвертый массив
/// Пятый массив
/// Шестой массив
/// Седьмой массив
/// Восьмой массив
/// Удалить дубликаты из результата
/// Объединенный массив
Функция Concatenate(Массив1, Массив2 = Неопределено, Массив3 = Неопределено, Массив4 = Неопределено, Массив5 = Неопределено, Массив6 = Неопределено, Массив7 = Неопределено, Массив8 = Неопределено, ТолькоУникальные = Ложь) Экспорт
Результат = Новый Массив;
// Создаем массив всех переданных массивов для итерации
МассивыДляОбъединения = Новый Массив;
Если Массив1 <> Неопределено Тогда МассивыДляОбъединения.Добавить(Массив1); КонецЕсли;
Если Массив2 <> Неопределено Тогда МассивыДляОбъединения.Добавить(Массив2); КонецЕсли;
Если Массив3 <> Неопределено Тогда МассивыДляОбъединения.Добавить(Массив3); КонецЕсли;
Если Массив4 <> Неопределено Тогда МассивыДляОбъединения.Добавить(Массив4); КонецЕсли;
Если Массив5 <> Неопределено Тогда МассивыДляОбъединения.Добавить(Массив5); КонецЕсли;
Если Массив6 <> Неопределено Тогда МассивыДляОбъединения.Добавить(Массив6); КонецЕсли;
Если Массив7 <> Неопределено Тогда МассивыДляОбъединения.Добавить(Массив7); КонецЕсли;
Если Массив8 <> Неопределено Тогда МассивыДляОбъединения.Добавить(Массив8); КонецЕсли;
// Объединяем все массивы
Для Каждого ТекущийМассив Из МассивыДляОбъединения Цикл
Для Каждого Элемент Из ТекущийМассив Цикл
Результат.Добавить(Элемент);
КонецЦикла;
КонецЦикла;
// При необходимости удаляем дубликаты
Если ТолькоУникальные Тогда
Результат = RemoveDuplicates(Результат);
КонецЕсли;
Возврат Результат;
КонецФункции
/// Объединение множеств до 8 массивов - всегда возвращает только уникальные значения
Функция Union(Массив1, Массив2 = Неопределено, Массив3 = Неопределено, Массив4 = Неопределено, Массив5 = Неопределено, Массив6 = Неопределено, Массив7 = Неопределено, Массив8 = Неопределено) Экспорт
Возврат Concatenate(Массив1, Массив2, Массив3, Массив4, Массив5, Массив6, Массив7, Массив8, Истина);
КонецФункции
/// Возвращает элементы, которые есть во всех переданных массивах (пересечение до 8 массивов)
Функция Intersection(Массив1, Массив2 = Неопределено, Массив3 = Неопределено, Массив4 = Неопределено, Массив5 = Неопределено, Массив6 = Неопределено, Массив7 = Неопределено, Массив8 = Неопределено) Экспорт
// Создаем массив всех переданных массивов
ВсеМассивы = Новый Массив;
Если Массив1 <> Неопределено Тогда ВсеМассивы.Добавить(Массив1); КонецЕсли;
Если Массив2 <> Неопределено Тогда ВсеМассивы.Добавить(Массив2); КонецЕсли;
Если Массив3 <> Неопределено Тогда ВсеМассивы.Добавить(Массив3); КонецЕсли;
Если Массив4 <> Неопределено Тогда ВсеМассивы.Добавить(Массив4); КонецЕсли;
Если Массив5 <> Неопределено Тогда ВсеМассивы.Добавить(Массив5); КонецЕсли;
Если Массив6 <> Неопределено Тогда ВсеМассивы.Добавить(Массив6); КонецЕсли;
Если Массив7 <> Неопределено Тогда ВсеМассивы.Добавить(Массив7); КонецЕсли;
Если Массив8 <> Неопределено Тогда ВсеМассивы.Добавить(Массив8); КонецЕсли;
Если ВсеМассивы.Количество() = 0 Тогда
Возврат Новый Массив;
КонецЕсли;
Если ВсеМассивы.Количество() = 1 Тогда
Возврат RemoveDuplicates(ВсеМассивы[0]);
КонецЕсли;
// Начинаем с первого массива
Результат = RemoveDuplicates(ВсеМассивы[0]);
// Последовательно пересекаем с каждым следующим массивом
Для Индекс = 1 По ВсеМассивы.Количество() - 1 Цикл
ТекущийМассив = ВсеМассивы[Индекс];
Элементы = Новый Соответствие;
Для Каждого Элемент Из ТекущийМассив Цикл
Элементы.Вставить(Элемент, Истина);
КонецЦикла;
НовыйРезультат = Новый Массив;
Для Каждого Элемент Из Результат Цикл
Если Элементы[Элемент] <> Неопределено Тогда
НовыйРезультат.Добавить(Элемент);
КонецЕсли;
КонецЦикла;
Результат = НовыйРезультат;
КонецЦикла;
Возврат Результат;
КонецФункции
/// Возвращает элементы из первого массива, которых нет в остальных массивах (разность до 8 массивов)
Функция Difference(Массив1, Массив2 = Неопределено, Массив3 = Неопределено, Массив4 = Неопределено, Массив5 = Неопределено, Массив6 = Неопределено, Массив7 = Неопределено, Массив8 = Неопределено) Экспорт
Если Массив1 = Неопределено Тогда
Возврат Новый Массив;
КонецЕсли;
// Создаем массив массивов для исключения
МассивыИсключения = Новый Массив;
Если Массив2 <> Неопределено Тогда МассивыИсключения.Добавить(Массив2); КонецЕсли;
Если Массив3 <> Неопределено Тогда МассивыИсключения.Добавить(Массив3); КонецЕсли;
Если Массив4 <> Неопределено Тогда МассивыИсключения.Добавить(Массив4); КонецЕсли;
Если Массив5 <> Неопределено Тогда МассивыИсключения.Добавить(Массив5); КонецЕсли;
Если Массив6 <> Неопределено Тогда МассивыИсключения.Добавить(Массив6); КонецЕсли;
Если Массив7 <> Неопределено Тогда МассивыИсключения.Добавить(Массив7); КонецЕсли;
Если Массив8 <> Неопределено Тогда МассивыИсключения.Добавить(Массив8); КонецЕсли;
// Создаем соответствие всех элементов для исключения
ЭлементыИсключения = Новый Соответствие;
Для Каждого МассивИсключения Из МассивыИсключения Цикл
Для Каждого Элемент Из МассивИсключения Цикл
ЭлементыИсключения.Вставить(Элемент, Истина);
КонецЦикла;
КонецЦикла;
// Формируем результат
Результат = Новый Массив;
Для Каждого Элемент Из Массив1 Цикл
Если ЭлементыИсключения[Элемент] = Неопределено Тогда
Результат.Добавить(Элемент);
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
/// Проверяет, содержит ли массив указанное значение
Функция Contains(Массив, Значение) Экспорт
Возврат Массив.Найти(Значение) <> Неопределено;
КонецФункции
/// Возвращает первый элемент массива или Неопределено
Функция First(Массив) Экспорт
Если Массив.Количество() > 0 Тогда
Возврат Массив[0];
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
/// Возвращает последний элемент массива или Неопределено
Функция Last(Массив) Экспорт
Если Массив.Количество() > 0 Тогда
Возврат Массив[Массив.Количество() - 1];
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
/// Создает копию массива с отсортированными по возрастанию элементами
Функция Sort(Массив) Экспорт
Список = Новый СписокЗначений;
Для Каждого Элемент Из Массив Цикл
Список.Добавить(Элемент);
КонецЦикла;
Список.Сортировать();
Результат = Новый Массив;
Для Счет = 0 По Список.Количество() - 1 Цикл
Результат.Добавить(Список.Получить(Счет));
КонецЦикла;
Возврат Результат;
КонецФункции
/// Создает копию массива с элементами в обратном порядке
Функция Reverse(Массив) Экспорт
Результат = Новый Массив;
Индекс = Массив.Количество() - 1;
Пока Индекс >= 0 Цикл
Результат.Добавить(Массив[Индекс]);
Индекс = Индекс - 1;
КонецЦикла;
Возврат Результат;
КонецФункции
/// Создает новый массив, удаляя дубликаты из исходного массива
/// Исходный массив
/// Массив без дубликатов
Функция RemoveDuplicates(Массив) Экспорт
Результат = Новый Массив;
// Оптимизация: используем Соответствие вместо Массив.Найти()
УникальныеЗначения = Новый Соответствие;
Для Каждого Элемент Из Массив Цикл
Если УникальныеЗначения[Элемент] = Неопределено Тогда
Результат.Добавить(Элемент);
УникальныеЗначения.Вставить(Элемент, Истина);
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
/// Объединяет элементы массива в строку с указанным разделителем
Функция Join(Массив, Разделитель) Экспорт
Если Массив.Количество() = 0 Тогда
Возврат "";
КонецЕсли;
Результат = "";
Для Счет = 0 По Массив.Количество() - 1 Цикл
Результат = Результат + Формат(Массив[Счет]);
Если Счет < Массив.Количество() - 1 Тогда
Результат = Результат + Разделитель;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
/// Возвращает индекс первого вхождения элемента в массив, или -1 если не найден
Функция IndexOf(Массив, Значение) Экспорт
Для Счет = 0 По Массив.Количество() - 1 Цикл
Если Массив[Счет] = Значение Тогда
Возврат Счет;
КонецЕсли;
КонецЦикла;
Возврат -1;
КонецФункции
/// Вставляет элемент в массив по указанному индексу
Функция Insert(Массив, Индекс, Значение) Экспорт
Результат = Новый Массив;
Для Счет = 0 По Массив.Количество() - 1 Цикл
Если Счет = Индекс Тогда
Результат.Добавить(Значение);
КонецЕсли;
Результат.Добавить(Массив[Счет]);
КонецЦикла;
// Если индекс равен количеству элементов, добавляем в конец
Если Индекс >= Массив.Количество() Тогда
Результат.Добавить(Значение);
КонецЕсли;
Возврат Результат;
КонецФункции
/// Удаляет элемент из массива по указанному индексу
Функция RemoveAt(Массив, Индекс) Экспорт
Если Индекс < 0 Или Индекс >= Массив.Количество() Тогда
Возврат Массив; // Без изменений, если индекс вне диапазона
КонецЕсли;
Результат = Новый Массив;
Для Счет = 0 По Массив.Количество() - 1 Цикл
Если Счет <> Индекс Тогда
Результат.Добавить(Массив[Счет]);
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
/// Проверяет, пуст ли массив (нет элементов)
Функция IsEmpty(Массив) Экспорт
Возврат Массив.Количество() = 0;
КонецФункции