Обновлятор: Установка общей даты запрета изменения. БП3

Если установить общую дату вручную:

То в регистре сведений ДатыЗапретаИзменения это выглядит так:

Скрипт для обновлятора, который устанавливает аналогичные настройки выглядит так:

#use "updater1c"

// ****************************************************************************
// Переменные модуля
// ****************************************************************************

Перем errors;		// Признак того, что при выполнении скрипта были ошибки.
Перем updater;		// Обновлятор, через который мы получаем информацию о базе,
					// а также вызываем различные функции обновлятора.
Перем connector;	// Коннектор для подключения к базе.
Перем v8;			// Само подключение к базе через коннектор.

// ****************************************************************************
// Ваш код для выполнения обновлятором
// ****************************************************************************

Процедура Главная()

	//==========================================================================================
	//  У С Т А Н О В К А    Д А Т Ы    З А П Р Е Т А    И З М Е Н Е Н И Я   Д А Н Н Ы Х
	//==========================================================================================
	
	ДатаЗапрета = '20231001'; //Здесь указать дату запрета
	
	//Внимание - удаляются все даты запрета изменения данных и оставляется только одна общая
	
	НЗ = v8.РегистрыСведений.ДатыЗапретаИзменения.СоздатьНаборЗаписей();
	МЗ = НЗ.Добавить();
	МЗ.Пользователь = v8.Перечисления.ВидыНазначенияДатЗапрета.ДляВсехПользователей;
	МЗ.Объект = v8.ПланыВидовХарактеристик.РазделыДатЗапретаИзменения.ПустаяСсылка();
	МЗ.Раздел = v8.ПланыВидовХарактеристик.РазделыДатЗапретаИзменения.ПустаяСсылка();
	МЗ.ДатаЗапрета = ДатаЗапрета;
	НЗ.Записать();
	
КонецПроцедуры

// ****************************************************************************
// Служебные процедуры
// ****************************************************************************

Процедура ПриНачалеРаботы()

	errors = Ложь;

	updater = Новый Updater1C;

	// Если в скрипте не планируется использовать
	// подключение к базе - просто закомментируйте
	// две нижние строки.
	
	connector = updater.CreateConnector();
	v8 = updater.BaseConnectNew(connector);
	
КонецПроцедуры

Процедура ПриОкончанииРаботы()

	Если v8 <> Неопределено Тогда
		Попытка
			ОсвободитьОбъект(v8);
			v8 = Неопределено;
		Исключение
		КонецПопытки;
	КонецЕсли;
	
	Если connector <> Неопределено Тогда
		Попытка
			ОсвободитьОбъект(connector);
			connector = Неопределено;
		Исключение
		КонецПопытки;
	КонецЕсли;
	
	Если updater <> Неопределено Тогда
		Попытка
			ОсвободитьОбъект(updater);
			updater = Неопределено;
		Исключение
		КонецПопытки;
	КонецЕсли;

	Если errors Тогда
		ЗавершитьРаботу(1);
	КонецЕсли;

КонецПроцедуры

// ****************************************************************************
// Инициализация и запуск скрипта
// ****************************************************************************

ПриНачалеРаботы();

Попытка	
	Главная();
	updater.КодПользователяВыполнился();
Исключение
	errors = Истина;
	Сообщить("" + ОписаниеОшибки() + "");
КонецПопытки;

ПриОкончанииРаботы();

При этом очищаются все даты запрета обновления, остается только общая.

Запускать лучше с такими настройками (выделено красным):

UPD 2023-12-14: на релизе БП 3.0.144.49 проявился нюанс — первоначальный скрипт выдавал вот такой результат:

Консолью кода проверил как выглядит регистр у меня:

И как он выглядит если поставить вручную общую дату запрета:

Поправил скрипт, чтобы он устанавливал объект и раздел.

Среда: БП 3.0.144.49

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *