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

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

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

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

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

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

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

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

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

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

ДатаЗапретаПоОписанию (БСП)

Запрет выгрузки в КД по дате запрета редактирования

РассчитанныеДатыЗапретаИзменения (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз