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