Обновить настройки работы классификаторами областей данных. Выполняет обновление данных регистра сведений ВерсииКлассификаторовОбластейДанных.
// Выполняет обновление данных регистра сведений ВерсииКлассификаторовОбластейДанных.
//
Процедура ОбновитьНастройкиРаботыСКлассификаторамиОбластейДанных(Параметры) Экспорт
// Дозаписываем информацию о классификаторах в регистр
// отложенном обновлении из областей данных.
Если Не ОбщегоНазначения.РазделениеВключено()
Или Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ЗаписатьИнформациюВЖурналРегистрации(
НСтр("ru = 'Обновление настроек областей подсистемы ""Работа с классификаторами"". Начало обновления.'"),
Ложь);
Классификаторы = Новый Массив;
ПриДобавленииКлассификаторов(Классификаторы);
ИспользуемыеКлассификаторы = Новый Массив;
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ВерсииКлассификаторовОбластейДанных");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВерсииКлассификаторовОбластейДанных.Идентификатор КАК Идентификатор,
| ВерсииКлассификаторовОбластейДанных.Версия КАК Версия
|ИЗ
| РегистрСведений.ВерсииКлассификаторовОбластейДанных КАК ВерсииКлассификаторовОбластейДанных";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Для Каждого Описатель Из Классификаторы Цикл
Если Описатель.ОбщиеДанные Тогда
Продолжить;
КонецЕсли;
Отбор = Новый Структура;
Отбор.Вставить("Идентификатор", Описатель.Идентификатор);
Если Не ВыборкаДетальныеЗаписи.НайтиСледующий(Отбор) Тогда
Запись = РегистрыСведений.ВерсииКлассификаторовОбластейДанных.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(Запись, Описатель, "Идентификатор");
Запись.Записать();
КонецЕсли;
ВыборкаДетальныеЗаписи.Сбросить();
ИспользуемыеКлассификаторы.Добавить(Описатель.Идентификатор);
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВерсииКлассификаторовОбластейДанных.Идентификатор КАК Идентификатор
|ИЗ
| РегистрСведений.ВерсииКлассификаторовОбластейДанных КАК ВерсииКлассификаторовОбластейДанных
|ГДЕ
| НЕ ВерсииКлассификаторовОбластейДанных.Идентификатор В (&ИспользуемыеКлассификаторы)";
Запрос.УстановитьПараметр("ИспользуемыеКлассификаторы", ИспользуемыеКлассификаторы);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Набор = РегистрыСведений.ВерсииКлассификаторовОбластейДанных.СоздатьНаборЗаписей();
Набор.Отбор.Идентификатор.Установить(ВыборкаДетальныеЗаписи.Идентификатор);
Набор.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ИнформацияОбОшибке = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписатьИнформациюВЖурналРегистрации(
ИнформацияОбОшибке,
Истина,
Метаданные.РегистрыСведений.ВерсииКлассификаторовОбластейДанных);
ВызватьИсключение ИнформацияОбОшибке;
КонецПопытки;
ЗаписатьИнформациюВЖурналРегистрации(
НСтр("ru = 'Обновление настроек областей подсистемы ""Работа с классификаторами"". Успешно завершено.'"),
Ложь);
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ОбновитьНастройкиРаботыСКлассификаторами (БСП)
ОбновитьКэшКлассификатора (БСП)
ВыполнитьОбновлениеКлассификаторовВОбластяхДанных (БСП)
ОбновитьПараметрыТекущейОбластиДанных (БСП)
ЗапланироватьОбновлениеДанныхОбластей (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)