Разбить число на Кусочки

miha 73 5

Для параллельного выполнения нужно наиболее "ровно" разделить, например массив, на кусочки.

Функция РазбитьНаКусочки(ОбщееКоличество, ОднаЧасть) Экспорт
	Частей = Цел(ОбщееКоличество / ОднаЧасть) + ?(ОбщееКоличество % ОднаЧасть > 0, 1, 0);

	Частное = ОбщееКоличество / Частей;
	МаксКусок = Цел(Частное) + ?(ОбщееКоличество % Частей > 0, 1, 0);
	Остаток = ОбщееКоличество % МаксКусок;

	Массив = Новый Массив;

	Если Остаток > 0 Тогда
		ОдинКусок = МаксКусок - 1;
		МеньшегоКолва = МаксКусок - Остаток;
		Для ъ = 1 по МеньшегоКолва Цикл
			Массив.Добавить(ОдинКусок);
		КонецЦикла;
	Иначе
		ъ = 1;
	КонецЕсли;

	ОдинКусок = МаксКусок;
	ъъ = ъ;
	Для ъ = ъъ по Частей Цикл
		Массив.Вставить(0, ОдинКусок);
	КонецЦикла;

//	ВсегоВМассиве = 0;
//	Для Каждого Элем из Массив Цикл
//		ВсегоВМассиве = ВсегоВМассиве + Элем;
//	КонецЦикла;

	Возврат Массив;
КонецФункции  // РазбитьНаКусочки

Функция РазбитьСписокТоваров(Знач списТоваров, МаксТоваров = 150)
	#Если Сервер И Не Сервер Тогда  // для типизации в конфигураторе
		списТоваров = Новый СписокЗначений;
	#КонецЕсли

	мТовары = списТоваров.ВыгрузитьЗначения();

	КоличествоТоваров = мТовары.Количество();
	мКусочки = РазбитьНаКусочки(КоличествоТоваров, МаксТоваров);

	ммТовары = Новый Массив;
	Для Каждого ЧислоТоваров Из мКусочки Цикл
		мПодСписок = Новый Массив;
		Для ъ = 1 По ЧислоТоваров Цикл
			мПодСписок.Добавить(мТовары[0]);
			мТовары.Удалить(0);
		КонецЦикла;

		ммТовары.Добавить(мПодСписок);
	КонецЦикла;

	Возврат ммТовары;
КонецФункции  // РазбитьСписокТоваров
0
Орфографическая ошибка в списТоваров (найдено 3): спис

Рекомендации

См. также

СтрокаСЧисломДляЛюбогоЯзыка (БСП)

ВерсияПлатформыВЧисло (БСП)

СтрокаВЧисло (БСП)

ЗавершитьПоискПорцииДляОбновления (БСП)

Преобразование строки в число

ОписаниеТипаЧисло (БСП)

ПреобразоватьЧислоВРимскуюНотацию (БСП)

ПреобразоватьЧислоВАрабскуюНотацию (БСП)

описание числа (15.2) в таблице значений

TurboConf - расширение Конфигуратора 1С

Комментарии

Модератору