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