#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ПравилаПроверкиУчета.Ссылка КАК Ссылка
|ИЗ
| Справочник.ПравилаПроверкиУчета КАК ПравилаПроверкиУчета
|ГДЕ
| ПравилаПроверкиУчета.Использование
| И ПравилаПроверкиУчета.Идентификатор В(&ИдентификаторыПроверок)");
ПроверкиВеденияУчета = КонтрольВеденияУчетаСлужебныйПовтИсп.ПроверкиВеденияУчета().Проверки;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Отключена", Истина);
ОтключенныеПроверки = ПроверкиВеденияУчета.НайтиСтроки(ПараметрыОтбора);
ИдентификаторыПроверок = Новый Массив;
Для Каждого ОтключеннаяПроверка Из ОтключенныеПроверки Цикл
ИдентификаторыПроверок.Добавить(ОтключеннаяПроверка.Идентификатор);
КонецЦикла;
Запрос.УстановитьПараметр("ИдентификаторыПроверок", ИдентификаторыПроверок);
Ссылки = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Ссылки);
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ОбработкаЗавершена = Истина;
ОбъектМетаданных = Метаданные.Справочники.ПравилаПроверкиУчета;
ПолноеИмяОбъекта = ОбъектМетаданных.ПолноеИмя();
ОбъектовОбработано = 0;
ПроблемныхОбъектов = 0;
ОтключаемаяПроверка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, ПолноеИмяОбъекта);
Пока ОтключаемаяПроверка.Следующий() Цикл
ОтключаемаяПроверкаСсылка = ОтключаемаяПроверка.Ссылка;
ПредставлениеСсылки = Строка(ОтключаемаяПроверкаСсылка);
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить(ПолноеИмяОбъекта);
ЭлементБлокировки.УстановитьЗначение("Ссылка", ОтключаемаяПроверкаСсылка);
Блокировка.Заблокировать();
ОтключаемаяПроверкаОбъект = ОтключаемаяПроверкаСсылка.ПолучитьОбъект();
ОтключаемаяПроверкаОбъект.Использование = Ложь;
ОбъектовОбработано = ОбъектовОбработано + 1;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(ОтключаемаяПроверкаОбъект);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ОбновлениеИнформационнойБазы.ЗаписатьОшибкуВЖурналРегистрации(
ОтключаемаяПроверкаСсылка,
ПредставлениеСсылки,
ИнформацияОбОшибке());
КонецПопытки;
КонецЦикла;
Если Не ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта) Тогда
ОбработкаЗавершена = Ложь;
КонецЕсли;
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать некоторые правила проверки (пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Информация, , ,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Обработана очередная порция правил проверки: %1'"),
ОбъектовОбработано));
КонецЕсли;
Параметры.ОбработкаЗавершена = ОбработкаЗавершена;
КонецПроцедуры
#КонецОбласти
#КонецЕсли