TempDB.Unload

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

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

Синтаксис

TempDB.Unload(<Объект в который происходит копирование>,<Наименования столбцов для копирования (STRING)>,<Стандартные фильтры>...)

Аргументы

  • <Объект в который происходит копирование> - (возможен аргумент-переменная (ByRef)) Объект данных, в который будет произведена выгрузка записей временной таблицы базы данных. На данный момент принимаются объекты:
    • Список значений. Во втором аргументе необходимо указать наименование одного столбца таблицы, данные из которого будут добавлены с список значений.
    • Таблица значений. Если второй аргумент не задан, будут загружены все столбцы временной таблицы, иначе будут загружены столбцы, наименования которых перечислены во втором аргументе через запятые. При указании на наименования столбцов, имеется возможность использовать специальное имя @ID, это имя позволяет получить также цифровой идентификатор записи временной таблицы (каждая запись временной таблицы пронумерована). Если загружаемые столбцы отсутствовали в заполняемой таблице значений, они будут созданы.
  • <Наименования столбцов для копирования (STRING)> - (необязательный аргумент) Аргумент перечисляет наименования столбцов таблицы для загрузки, разделенные запятыми. См. описание предыдущего аргумента.
  • <Стандартные фильтры> - (необязательный аргумент) Стандартные фильтры отбора записей временной таблицы описаны в статье Стандартные фильтры. Важное отличие от фильтров функций объектов базы данных заключается в том, что стандартные фильтры всегда работают в сложном (расширенном) режиме, при этом отсутствует требование, что первая строка фильтра должна начинаться на знак ~. Выражения фильтров содержат весь возможный набор функций и операторов языка запросов (см. Временная таблица базы данных, Объект запрос базы данных), при указании наименование также применимы префиксы (типа :), как это описано в статье по временной таблице базы данных.

Примеры

//Пример создает таблицу аТемп, и заполняет ее резервами документа ЗаказНаПроизводство, при этом в ней также заполнено поле документа ВыпускПродукции. 
//  Документ ВыпускПродукции подчинен документу ЗаказНаПроизводство. Выборка документов происходит за период с НачДата по КонДата.
//Таблица номенклатуры из резервов с выпусками и заданиями
аТемп:=TempDB.Create("зДок:DB,зЗад:DB,зН:DB:I,Количество:NUMBER.15.5");
//Заказы на производство
аТемп.LoadFrom("Stor.Резервы","@LINK->зЗад,Номенклатура->зН,?(@EXPENSE=1,-Количество,Количество)->Количество",
  "(BegOfDay(@DATE)>=НачДата)And(BegOfDay(@DATE)<=КонДата)","IsType(@LINK,Doc.ЗаказНаПроизводство)");
//Заполняем зДок (подчиненный документ -- ВыпускПродукции)
вТемп:=TempDB.Create("зДок2:DB,зЗад:DB");
//Выбираются только те документы выпусков, основания которых (ЗаказНаПроизводство) находятся в таблице аТемп
вТемп.LoadFrom("Doc.ВыпускПродукции","@ELEMENT->зДок2,@ELEMENT.ДокОснование->зЗад","@ELEMENT.ДокОснование IN аТемп.зЗад");
//Заполним столбец зДок оригинальной таблицы, объединение происходит по условию ":зЗад=зЗад".
аТемп.Update(вТемп,":зЗад=зЗад,зДок2->зДок");
//Выгрузим созданную таблицы в новую таблицу значений
aTab:=Tab.Create();
аТемп.CopyTo(aTab);
//В дальнейшем таблицу aTab можно, к примеру, вывести на экран.