Difference between revisions of "DB.Copy"
m (1 revision imported) |
|
(No difference)
|
Latest revision as of 07:43, 7 February 2021
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;