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