Difference between revisions of "DB.Contains"

From SunFlurry wiki
Jump to: navigation, search
1>Admin
m (1 revision imported)
 
(No difference)

Latest revision as of 11:29, 25 April 2023

  Contains (Проверка на вхождение в папку)
Объект:Объект базы данных
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Сервер и БД
Исключения:Не подходящий объект, ошибка сервера, невозможно превратить в число
Визуальность:Нет

Функция проверяет, входит ли указанный элемент в папку справочника, представленную текущим объектом, либо, совпадают ли проверяемые объекты. Текущий объект может не быть папкой справочника, тогда функция проверяет, совпадают ли оба объекта. Объект может быть как элементом справочника, так и документом. Функция аналогична по действию функции Contains, когда в список для проверки входит только текущий объект.

Синтаксис

DB.Contains(<Элемент для проверки (DB)>,<Режим функции (INT)>=0):<Проверяемый элемент входит в структуру папок текущего (INT)>

Аргументы

  • <Элемент для проверки (DB)> - Задает объект, который проверяется на равенство или вхождение в папку, представленную текущим объектом.
  • <Режим функции (INT)> - Режим поиска элементов, возможны следующие значения:
    • 0 (по умолчанию) -- при первом вызове функция создает сортированный буфер, в котором содержатся внутренние коды всех элементов, входящих в папку исходного элемента. Последущие вызовы уже не будут вызывать обращения к базе данных и будут проходить очень быстро. Если элементов, вошедших в запрос, очень много, первый возов может занять продолжительное время. Особенно это может стать проблемой, если во включаемых элементах присутствует большое количество папок, и СУБД не имеет возможности использования временных функций (к примеру, SQLite).
    • 1 -- при первом вызове функция создает сортированный буфер, в котором содержатся код самого исходного элемента и внутренние коды всех папок справочника, входящих в папку элемента. В этом режиме для проверки вхождения элемента в буфер требуется как код самого элемента, так и код папки, в которой он находится, что может создать дополнительный вызов к базе данных, если проверямый элемент не был заполнен. Плюсом такого подхода является сильное ускорение длительного первого вызова, если во включаемых элементах присутствует большое количество папок, и СУБД не имеет возможности использования временных функций (к примеру, SQLite). Первый вызов в этом режиме может работать несколько дольше вызова в режиме 0, если в папку попадает малая часть справочника с небольшим количеством подпапок, однако, сам справочник содержит очень много папок.

Возвращаемое значение

Возвращает 1, если объект входит является подмножеством текущего, 0 в ином случае

Примеры

//а -- элемент справочника-папка, в которую входит элемент b
a:=DB("Ref.Номенклатура","Code","000000003661");
//Элемент, родительской папкой которого является объект с кодом "000000003661"
b:=DB("Ref.Номенклатура","Code","000000003669");
//Выводит "Да"
Message(?(a.Contains(b),"Да","Нет"));