ОбработчикиОбновленияВИнтервале (БСП)

Автор: 1С
ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный
БСП

Обработчики обновления интервале. Для внутреннего использования.

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

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

Похожие публикации

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

Нахождение интервалов в запросе

НовыеПараметрыОбработчикаОбновления (БСП)

ПриДобавленииОбработчиковОбновления (БСП)

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