Обработчики обновления интервале. Для внутреннего использования.
// Для внутреннего использования.
Функция ОбработчикиОбновленияВИнтервале(Знач ИсходнаяТаблицаОбработчиков, Знач ВерсияОт, Знач ВерсияДо,
Знач ПараметрыОтбораОбработчиков = Неопределено) Экспорт
ПараметрыОтбора = ПараметрыОтбораОбработчиков;
Если ПараметрыОтбора = Неопределено Тогда
ПараметрыОтбора = ПараметрыОтбораОбработчиков();
КонецЕсли;
// Добавление номера в таблицу, для упорядочивания в порядке добавления.
ВсеОбработчики = ИсходнаяТаблицаОбработчиков.Скопировать();
ВсеОбработчики.Колонки.Добавить("НомерПоПорядку", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(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
///////////////////////////////////////////////////////////////////////////////////////////////////////
ЗарегистрироватьОбработчикиОбновления (БСП)
Нахождение интервалов в запросе