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

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

Проверить даты запрета изменения загрузки данных. Ищет даты запрета изменения/загрузки данных для объекта.

// Ищет даты запрета изменения/загрузки данных для объекта.
//
// Параметры:
//  Источник        - СправочникОбъект,
//                    ПланВидовХарактеристикОбъект,
//                    ПланСчетовОбъект,
//                    ПланВидовРасчетаОбъект,
//                    БизнесПроцессОбъект,
//                    ЗадачаОбъект,
//                    ПланОбменаОбъект,
//                    ДокументОбъект  - объект данных.
//                  - РегистрСведенийНаборЗаписей,
//                    РегистрНакопленияНаборЗаписей,
//                    РегистрБухгалтерииНаборЗаписей,
//                    РегистрРасчетаНаборЗаписей - набор записей.
//                  - УдалениеОбъекта - удаление объекта при загрузке.
//
//  Отказ           - Булево - (возвращаемое значение), будет установлено Истина,
//                    если объект не проходит проверки дат запрета.
//
//  ИсточникРегистр - Булево - Ложь - Источник является регистром, иначе объектом.
//
//  Замещение       - Булево - если источник является регистром и выполняется добавление,
//                    нужно указать Ложь.
//
//  Удаление        - Булево - если источник является объектом и выполняется удаление объекта,
//                    нужно указать Истина.
//
//  ДополнительныеПараметры - Неопределено - указанные ниже параметры имеют начальные значения.
//                          - Структура - со свойствами:
//    * ПроверкаЗапретаИзменения    - Булево - начальное значение Истина, если установить Ложь,
//                                    проверка запрета изменения для пользователей) будет пропущена.
//    * УзелПроверкиЗапретаЗагрузки - Неопределено - (начальное значение) выполнить проверку изменения данных.
//                                  - ПланыОбменаСсылка.<Имя плана обмена> - выполнить проверку
//                                    загрузки данных для указанного узла.
//    * ОписаниеОшибки              - Null      - (значение по умолчанию) - сведения о запретах не требуются.
//                                  - Строка    - (возвращаемое значение) - вернуть текстовое описание найденных запретов.
//                                  - Структура - (возвращаемое значение) - вернуть структурное описание найденных запретов,
//                                                подробнее см. функцию ДатыЗапретаИзменения.НайденЗапретИзмененияДанных.
//    * СообщитьОЗапрете            - Булево - начальное значение Истина. Если указать Ложь, тогда
//                                    непустое ОписаниеОшибки не будет отправлено пользователю и
//                                    записано в журнал регистрации.
//
Процедура ПроверитьДатыЗапретаИзмененияЗагрузкиДанных(Источник,
		Отказ, ИсточникРегистр, Замещение, Удаление, ДополнительныеПараметры = Неопределено) Экспорт
	
	ПроверкаЗапретаИзменения    = Истина;
	УзелПроверкиЗапретаЗагрузки = Неопределено;
	ОписаниеОшибки              = "";
	СообщитьОЗапрете            = Истина;
	
	Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
		ДополнительныеПараметры.Свойство("ПроверкаЗапретаИзменения",    ПроверкаЗапретаИзменения);
		ДополнительныеПараметры.Свойство("УзелПроверкиЗапретаЗагрузки", УзелПроверкиЗапретаЗагрузки);
		ДополнительныеПараметры.Свойство("ОписаниеОшибки",              ОписаниеОшибки);
		ДополнительныеПараметры.Свойство("СообщитьОЗапрете",            СообщитьОЗапрете);
	КонецЕсли;
	
	ВерсияОбъекта = "";
	Если ПропуститьПроверкуДатЗапрета(Источник, ПроверкаЗапретаИзменения,
			УзелПроверкиЗапретаЗагрузки, ВерсияОбъекта) Тогда
		Возврат;
	КонецЕсли;
	
	ИзменениеЗапрещено = Ложь;
	
	Если НЕ ИсточникРегистр
	   И НЕ Удаление
	   И НЕ Источник.ЭтоНовый() Тогда
	
		Если ИзменениеЗапрещено(
				?(ВерсияОбъекта <> "СтараяВерсия", Источник, Источник.Метаданные().ПолноеИмя()),
				?(ВерсияОбъекта <> "НоваяВерсия",  Источник.Ссылка, Неопределено),
				ОписаниеОшибки,
				УзелПроверкиЗапретаЗагрузки) Тогда
			
			ИзменениеЗапрещено = Истина;
		КонецЕсли;
		
	ИначеЕсли ИсточникРегистр И Замещение Тогда
		
		Если ИзменениеЗапрещено(
				?(ВерсияОбъекта <> "СтараяВерсия", Источник, Источник.Метаданные().ПолноеИмя()),
				?(ВерсияОбъекта <> "НоваяВерсия",  Источник.Отбор, Неопределено),
				ОписаниеОшибки,
				УзелПроверкиЗапретаЗагрузки) Тогда
			
			ИзменениеЗапрещено = Истина;
		КонецЕсли;
		
	ИначеЕсли ТипЗнч(Источник) = Тип("УдалениеОбъекта") Тогда
		
		Если ВерсияОбъекта <> "НоваяВерсия"
		   И ИзменениеЗапрещено(
				Источник.Ссылка.Метаданные().ПолноеИмя(),
				Источник.Ссылка,
				ОписаниеОшибки,
				УзелПроверкиЗапретаЗагрузки) Тогда
			
			ИзменениеЗапрещено = Истина;
		КонецЕсли;
		
	Иначе
		// Выполняется при условии:
		//     НЕ ИсточникРегистр И Источник.ЭтоНовый()
		// ИЛИ    ИсточникРегистр И НЕ Замещение
		// ИЛИ НЕ ИсточникРегистр И Удаление.
		Если ВерсияОбъекта <> "СтараяВерсия"
		   И ИзменениеЗапрещено(
				Источник,
				Неопределено,
				ОписаниеОшибки,
				УзелПроверкиЗапретаЗагрузки) Тогда
			
			ИзменениеЗапрещено = Истина;
		КонецЕсли;
	КонецЕсли;
	
	Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
		ДополнительныеПараметры.Вставить("ПроверкаЗапретаИзменения",    ПроверкаЗапретаИзменения);
		ДополнительныеПараметры.Вставить("УзелПроверкиЗапретаЗагрузки", УзелПроверкиЗапретаЗагрузки);
		ДополнительныеПараметры.Вставить("ОписаниеОшибки",              ОписаниеОшибки);
		ДополнительныеПараметры.Вставить("СообщитьОЗапрете",            СообщитьОЗапрете);
	КонецЕсли;
	
	Если ИзменениеЗапрещено Тогда
		Отказ = Истина;
	КонецЕсли;
	
	Если Не (ИзменениеЗапрещено И СообщитьОЗапрете) Тогда
		Возврат;
	КонецЕсли;
	
	ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки);
	
	ЗаписьЖурналаРегистрации(
		?(УзелПроверкиЗапретаЗагрузки <> Неопределено,
			НСтр("ru = 'Даты запрета изменения.Найдены запреты загрузки'",
			     ОбщегоНазначения.КодОсновногоЯзыка()),
			НСтр("ru = 'Даты запрета изменения.Найдены запреты изменения'",
			     ОбщегоНазначения.КодОсновногоЯзыка())),
		УровеньЖурналаРегистрации.Ошибка,
		,
		,
		ОписаниеОшибки,
		РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);
	
КонецПроцедуры

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

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

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

ПропуститьПроверкуДатЗапрета (БСП)

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

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

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

Проверка даты запрета изменения данных

ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента (БСП)

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

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

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

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