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

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

Очистить предопределенные элементы разделов дат запрета. Обработчик преобразует план видов характеристик разделы дат запрета изменения.

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

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

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

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

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

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

ЗапретитьУдалениеПредопределенныхЭлементовПередУдалением (БСП)

ЗапретитьПометкуУдаленияПредопределенныхЭлементовПередЗаписью (БСП)

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

ПроверитьДатыЗапретаЗагрузкиДанных (БСП)

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