Загрузка данных


Процедура ОбработкаПроведения(Отказ, Режим)
	
	// Поиск пересекающихся числовых интервалов внутри табличной части
	ТаблицаПроверки = УстановкаКатегорий.Выгрузить();
	ТаблицаПроверки.Сортировать("Бренд, НачалоПериода Возр");
	
	ПредыдущийБренд = Неопределено;
	ПредыдущийКонец = -1;
	
	Для Каждого Строка Из ТаблицаПроверки Цикл
		
		// Если перешли к следующему бренду, сбрасываем кэш предыдущих значений
		Если Строка.Бренд <> ПредыдущийБренд Тогда
			ПредыдущийБренд = Строка.Бренд;
			ПредыдущийКонец = Строка.КонецПериода;
			Продолжить;
		КонецЕсли;
		
		// Проверяем наложение: если начало текущего интервала заходит внутрь или стыкуется 
		// с предыдущим концом (например, первый интервал 0-100, а второй 100-200 или 50-150)
		Если Строка.НачалоПериода <= ПредыдущийКонец Тогда
			Отказ = Истина;
			
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = СтрШаблон("Для бренда ""%1"" обнаружено пересечение интервалов! "
				+ "Интервал (%2 - %3) накладывается на уже существующие диапазоны в документе.", 
				Строка.Бренд, Строка.НачалоПериода, Строка.КонецПериода);
			Сообщение.Сообщить();
		КонецЕсли;
		
		// Фиксируем максимальную границу окончания для корректной проверки вложенных интервалов
		ПредыдущийКонец = Макс(ПредыдущийКонец, Строка.КонецПериода);
		
	КонецЦикла;
	
	// Если во время проверки были обнаружены ошибки, останавливаем проведение
	Если Отказ Тогда
		Возврат;
	КонецЕсли;

	//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

	// регистр пм_КатегорииБрендовЧасов
	Движения.пм_КатегорииБрендовЧасов.Записывать = Истина;
	Для Каждого ТекСтрокаУстановкаКатегорий Из УстановкаКатегорий Цикл
		Движение = Движения.пм_КатегорииБрендовЧасов.Добавить();
		Движение.Период = Дата;
		Движение.Бренд = ТекСтрокаУстановкаКатегорий.Бренд;
		Движение.НачалоПериода = ТекСтрокаУстановкаКатегорий.НачалоПериода;
		Движение.КонецПериода = ТекСтрокаУстановкаКатегорий.КонецПериода;
		Движение.Категория = ТекСтрокаУстановкаКатегорий.Категория;
	КонецЦикла;

	//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры