1С 8.3 Элемент базы уникален - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Элемент базы уникален

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

   МетаданныеЭлемента = Элемент.Метаданные();
   ЭтоСсылка = МетаданныеЭлемента.СтандартныеРеквизиты.Ссылка = ТипЗнч(Элемент);

   ТребуемыеРеквизиты = "Ссылка," + РеквизитУникальности;
   Если ЭтоСсылка Тогда
       ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Элемент, "Ссылка," + РеквизитУникальности);
   Иначе
       ЗначенияРеквизитов = Новый Структура(ТребуемыеРеквизиты);
       ЗаполнитьЗначенияСвойств(ЗначенияРеквизитов, Элемент);
   КонецЕсли;

   ТекстЗапроса = "ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ %1 ГДЕ %2 = &%2 И Ссылка <> &Ссылка"
   ТекстЗапроса = СтрШаблон(ТекстЗапроса, Элемент.Метаданные().ПолноеИмя(), РеквизитУникальности);
   Если ЗначениеЗаполнено(ДополнительныеОтборы) Тогда
       ТекстЗапроса = СтрШаблон("%1 И %2", ТекстЗапроса, ДополнительныеОтборы);
   КонецЕсли;

   Запрос = Новый Запрос(ТекстЗапроса);
   Для Каждого КлючИЗначение Из ЗначенияРеквизитов Цикл
       Запрос.УстановитьПараметр(КлючИЗначение.Ключ, КлючИЗначение.Значение);
   КонецЦикла;

   Возврат Запрос.Выполнить().Пустой();

КонецФункции

// MIT License
//
// Copyright (c) 2024 SeiOkami
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:

// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 02.08.2024
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому