ОбновитьРазделыДатЗапретаИзменения (БСП)

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

Обновить разделы дат запрета изменения. Обновляет план видов характеристик РазделыДатЗапретаИзменения по описанию в метаданных.

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

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

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

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

ПриЗаполненииРазделовДатЗапретаИзменения (БСП)

ОбновитьРазделыДатЗапретаИзменения (БСП)

ОбновитьОтображениеДатыЗапретаПриИзменении (БСП)

ОбновитьВерсиюДатЗапретаИзменения (БСП)

ОчиститьПредопределенныеЭлементыРазделовДатЗапрета (БСП)

ОбновитьВерсиюДатЗапретаИзмененияПриЗагрузкеДанных (БСП)

ЗаменитьРазделыДатЗапретаНаНовые (БСП)

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