DB.Copy

From SunFlurry wiki
Revision as of 17:18, 18 September 2019 by Admin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  Copy (Создание копии объекта)
Объект:Объект базы данных
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Визуальность:Нет

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

Синтаксис

DB.Copy():<Незагруженная копия объекта (DB)>

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

Возвращает новый незагруженный объект БД, имеющий такое же позиционирование, как и текущий, если объект не был позиционирован (выбран), функция также возвратит не выбранный объект.

Примеры

//Пример показывает цикл обработки таблицы с документами ВозвратОтПокупателя после выполнения запроса
ТЗ:="зДата:=BegOfDay(Doc.ВозвратОтПокупателя.DocDate);Condition((зДата>=НачДата)And(зДата<=КонДата));
  |Док:=Doc.ВозвратОтПокупателя;
  |зКО:=Doc.ВозвратОтПокупателя.КодОперации;
  |Condition(зКО IN СпКО);
  |зИд:=Doc.ВозвратОтПокупателя.УникальныйИдентификатор;
  |зИд2:=Doc.ВозвратОтПокупателя.УникальныйИдентификатор2;
  |Condition(зИд2<>тИд);
  |Group Док;"; 
З:=Query.Create();
З.Execute(ТЗ,0);
aTab:=З.ResultTable;

aTab.Select();
While aTab.Next() Do
  //Получаем копию документа запроса, чтобы не загружать документы, которые хранятся в таблице запроса
  зДок:=aTab.Док.Copy();

  If (зДок.Status()<2)Or((зДок.РезультатДоставки<>1)and(зДок.РезультатДоставки<>2)) Then
    //Пропускаем необработанные документы
    Continue;
  EndIf;

  ...
EndDo;