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