Функция проверяет уникальность элемента базы в разрезе реквизитов
// Проверяет уникальность элемента базы.
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/89
//
// Параметры:
// Элемент - ЛюбаяСсылка, СправочникОбъект, ДокументОбъект, ПланВидовРасчетаОбъект, ПланОбменаОбъект, ПланВидовХарактеристикОбъект, ЗадачаОбъект, БизнесПроцессОбъект - Ссылка или ссылочный объект
// РеквизитУникальности - Строка - Реквизит уникальности
// ДополнительныеОтборы - Строка - Дополнительные отборы
//
// Возвращаемое значение:
// Булево - элемент уникален
//
// Пример:
// Если НЕ ЭлементБазыУникален(Ссылка, "Наименование", "НЕ ПометкаУдаления") Тогда
// ВызватьИсключение "Элемент с таким наименованием уже существует!";
// КонецЕсли;
//
Функция ЭлементБазыУникален(Знач Элемент, Знач РеквизитУникальности = "Наименование", Знач ДополнительныеОтборы = "") Экспорт
МетаданныеЭлемента = Элемент.Метаданные();
ЭтоСсылка = МетаданныеЭлемента.СтандартныеРеквизиты.Ссылка.Тип.СодержитТип(ТипЗнч(Элемент));
ТребуемыеРеквизиты = "Ссылка," + РеквизитУникальности;
Если ЭтоСсылка Тогда
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Элемент, "Ссылка," + РеквизитУникальности);
Иначе
ЗначенияРеквизитов = Новый Структура(ТребуемыеРеквизиты);
ЗаполнитьЗначенияСвойств(ЗначенияРеквизитов, Элемент);
КонецЕсли;
ТекстЗапроса = "ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ %1 ГДЕ %2 = &%2 И Ссылка <> &Ссылка";
ТекстЗапроса = СтрШаблон(ТекстЗапроса, Элемент.Метаданные().ПолноеИмя(), РеквизитУникальности);
Если ЗначениеЗаполнено(ДополнительныеОтборы) Тогда
ТекстЗапроса = СтрШаблон("%1 И %2", ТекстЗапроса, ДополнительныеОтборы);
КонецЕсли;
Запрос = Новый Запрос(ТекстЗапроса);
Для Каждого КлючИЗначение Из ЗначенияРеквизитов Цикл
Запрос.УстановитьПараметр(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
Возврат Запрос.Выполнить().Пустой();
КонецФункции
ОбработчикВыбораЭлементовБазыКорреспондентаНачалоВыбора (БСП)
ОбработчикВыбораЭлементовБазыКорреспондентаПодбор (БСП)
ОбработчикВыбораЭлементовБазыКорреспондентаОбработкаВыбора (БСП)
ДобавитьЭлементКомпоновки (БСП)