DB.IsPartOf

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

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

Синтаксис

DB.IsPartOf(<Список объектов с папками (LIST)>,<Режим функции (INT)>=0):<Объект принадлежит множеству объектов из списка (INT)>

Аргументы

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

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

Возвращает 1, если объект входит в список, 0 если не входит

Примеры

//Список содержит два объекта базы данных, один из которых является папкой.
a:=List.Create(DB("Ref.Номенклатура","Code","000000003661"),DB("Ref.Номенклатура","Code","000000007561"));
//Переменная содержит объект, родительской папкой которого является объект с кодом "000000003661"
b:=DB("Ref.Номенклатура","Code","000000003669");
//Выводит "Да"
Message(?(b.IsPartOf(a),"Да","Нет"));