DB.LoadEx

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

Функция производит поиск и загрузку указанного количества объектов из базы данных в список значений. Объекты идентифицируется с помощью фильтров. Полнота загрузки объектов, попавших в список, будет определяться режимом загрузки. При поиске объектов используется порядок сортировки, заданный функцией UseOrder и ограничение, заданное функцией UseBorders. Функцию удобно использовать совместно с функцией MassLoadObjects. Функцию удобно использовать вместо Select или SelectEx для небольшого объема данных, так как загрузка происходит быстрее, однако, нужно понимать, что если объем данных большой, функция может явиться причиной переполнения памяти системы, тогда как функция Select создает выборку, которая гарантированно не переполнит память. Для функции LoadEx в отличие от функции Load в режимах частичной загрузки и позиционирования, однако, потребуется очень большой объем данных, чтобы переполнить память, так как в этих режимах функция не загружает объекты полностью, поэтому, на каждый объект списка выделяется гораздо меньшее количество памяти, чем, если бы они были загруженными. Особенно эта разница заметна для объектов с большим количеством реквизитов.

Синтаксис

DB.LoadEx(<Максимальное количество объектов (INT)>=0,<Режим загрузки (INT)>=0,<Доп. реквизиты при загрузке заголовков (STRING)>="",<Стандарные фильтры>...):<Найденные объекты (LIST)>

Аргументы

  • <Максимальное количество объектов (INT)> - (необязательный аргумент) Задает максимальное количество объектов для поиска (т.е., будут получено только указанное количество объектов, попавших под фильтр, остальные будут игнорированы). По умолчанию 0 -- не ограничивать количество объектов.
  • <Режим загрузки (INT)> - (необязательный аргумент) Определяет способ (полноту) загрузки найденных объектов (см. Объект базы данных). Аргумент может принимать следующие значения:
    • 0 (по умолчанию) -- производится полная загрузка найденных объектов.
    • 1 -- производится загрузка объектов в режиме только заголовка.
    • 2 -- производится загрузка объектов в режиме частичной загрузки. Третий аргумент используется, как список реквизитов для загрузки.
    • 3 -- найденные объекты будут позиционированы, но не будут загружены.
  • <Доп. реквизиты при загрузке заголовков (STRING)> - (необязательный аргумент) Список наименований дополнительных реквизитов при загрузке объектов в режиме частичной загрузки (2).
  • <Стандартные фильтры поиска> - (необязательный аргумент) Стандартные фильтры позиционирования описаны в статье Стандартные фильтры.

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

Возвращается список, заполненный найденными объектами. Если ни одного объекта не найдено, будет возвращен пустой список.

Примеры

//Получение и вывод в реестр документов ПоступлениеПрочее, загруженных с помощью LoadEx, чтобы обеспечить скромное потребление памяти

//Подготовка электронной таблицы Т
...

aEl:=Doc.ПоступлениеПрочее;
//Использовать правила сортировки визуальной таблицы
aEl.UseOrder(Form.MainTab.SortString);
//Загрузка документов с учетом визуальных фильтров
aList:=aEl.LoadEx(0,3,,"@USECONTROLFILTERS,<>@Status,КодОперации,->Контрагент,->ЮрЛицо,Обработан",Form.MainTab,1,оКО,Form.оК.Value,Form.оЮЛ.Value,0);

For i:=1 To aList.Size() Do
  //Получение следующего документа, убедимся, что используется копия, иначе загруженный документ останется в памяти, пока aList не будет удален,
  //  что полностью нивелирует преимущество использования LoadEx, так как в конце цикла список будет содержать только загруженные документы
  Д:=aList.Get(i).Copy();
  //Переменные таблицы для вывода
  пДата:=Str(Д.DocDate);
  пДокПеч:=Д;
  пКлиент:=Д.Контрагент;
  пДоговор:=Д.Договор;
  пКоммент:=Д.Комментарий;
  пСумма:=FormatNumber(Д.СуммаВзаиморасчетов,1,"'",2);
  пСтатус:=?(Д.Обработан=0,"Не погашен","ОК");
  //Вывод строки в таблицу Т
  Т.CopyByX("v2",1);
EndDo;
//Вывести созданную таблицу на экран
Т.Show("Реестр");