1С 8.3 Разбить массив на несколько массивов
Данные > Примеры кода 1С > 1С 8.3 Массив
Перейти в раздел примеры кода 1С 8.3:
Разбивает массив на несколько массивов с заданным количеством элементов в 1С 8.3:
// Параметры:
// ВходящийМассив - Массив - массив значений для заполнения таблицы;
// КоличествоПодмассивов - Число - Количество подмассивов которые нужно создать;
// УдалятьПустые - Булево - Признак что нужно возвращать только заполненные массивы.
Функция РазбитьМассивНаМассивы(ВходящийМассив,КоличествоПодмассивов,УдалятьПустые = Истина) Экспорт
ПулМассивов = Новый Массив;
// Готовим массивы
Для НомерМассива = 1 По КоличествоПодмассивов Цикл
ПулМассивов.Добавить(Новый Массив);
КонецЦикла;
// Переносим массивы
ТекНомерМассива = 0; // индексы, не забываем
Для Каждого ТекЭл Из ВходящийМассив Цикл
ПулМассивов[ТекНомерМассива].Добавить(ТекЭл);
// говорим в какой поток дальше вставлять данные.
ТекНомерМассива = ?(ТекНомерМассива=(КоличествоПодмассивов-1),0,ТекНомерМассива+1);
КонецЦикла;
// Удаляем пустые
Если УдалятьПустые Тогда
МассивУдаления = Новый Массив;
Для Каждого ТекМассив Из ПулМассивов Цикл
Если ТекМассив.Количество() = 0 Тогда
МассивУдаления.Добавить(ТекМассив);
КонецЕсли;
КонецЦикла;
Для Каждого ТекУдМассив Из МассивУдаления Цикл
Инд = ПулМассивов.Найти(ТекУдМассив);
ПулМассивов.Удалить(Инд);
КонецЦикла;
КонецЕсли;
Возврат ПулМассивов;
КонецФункции
// ВходящийМассив - Массив - массив значений для заполнения таблицы;
// КоличествоПодмассивов - Число - Количество подмассивов которые нужно создать;
// УдалятьПустые - Булево - Признак что нужно возвращать только заполненные массивы.
Функция РазбитьМассивНаМассивы(ВходящийМассив,КоличествоПодмассивов,УдалятьПустые = Истина) Экспорт
ПулМассивов = Новый Массив;
// Готовим массивы
Для НомерМассива = 1 По КоличествоПодмассивов Цикл
ПулМассивов.Добавить(Новый Массив);
КонецЦикла;
// Переносим массивы
ТекНомерМассива = 0; // индексы, не забываем
Для Каждого ТекЭл Из ВходящийМассив Цикл
ПулМассивов[ТекНомерМассива].Добавить(ТекЭл);
// говорим в какой поток дальше вставлять данные.
ТекНомерМассива = ?(ТекНомерМассива=(КоличествоПодмассивов-1),0,ТекНомерМассива+1);
КонецЦикла;
// Удаляем пустые
Если УдалятьПустые Тогда
МассивУдаления = Новый Массив;
Для Каждого ТекМассив Из ПулМассивов Цикл
Если ТекМассив.Количество() = 0 Тогда
МассивУдаления.Добавить(ТекМассив);
КонецЕсли;
КонецЦикла;
Для Каждого ТекУдМассив Из МассивУдаления Цикл
Инд = ПулМассивов.Найти(ТекУдМассив);
ПулМассивов.Удалить(Инд);
КонецЦикла;
КонецЕсли;
Возврат ПулМассивов;
КонецФункции
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник