ИзменениеЗапрещено (БСП)

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

Изменение запрещено. Проверяет, запрещено ли изменение данных при интерактивном редактировании пользователем

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

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

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

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

ИзменениеЗапрещено (БСП)

ЗапрещеноОтображениеНебезопасногоСодержимогоВПисьмах (БСП)

ЗагрузкаЗапрещена (БСП)

ОповещениеОбИзменении (БСП)

ПриИзмененииРасписания (БСП)

Отслеживание изменений отбора

ЭтоАдресатЗапретаИзменения (БСП)

ОповещенияОбИзмененияхНеИспользуются (БСП)

ПриИзмененииДанныхАутентификации (БСП)

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