TempDB.Size

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

Функция возвращает количество записей, входящих в указанных фильтр.

Синтаксис

TempDB.Size(<Стандартные фильтры>...):<Количество записей (INT)>

Аргументы

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

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

Возвращает количество записей, удовлетворяющих заданному фильтру. Если фильтр пуст, функция возвращает общее количество записей таблицы.

Примеры

//Пример показывает рабочий цикл с объектами из временной таблицы, используя сборщик объектов для уменьшения расхода памяти
//MainTab -- визуальная таблица, в которую будут копироваться результаты обработки временной таблицы БД

//Создание сборщика объектов
ObjC:=ObjectCollector.Create();

MainTab.Lock();
Try
  //Очистка визуальной таблицы
  MainTab.ClearLines();

  //Создание и загрузка сложной временной таблицы БД, детали загрузки не имеют особого значения для нашего примера
  аТемп:=TempDB.Create("зДок:DB,зЗад:DB,зВып:DB,зДата:DATE,зНомерСтроки:NUMBER.10,Номенклатура:DB,Смена:DB,Работники:STRING.200,Количество:NUMBER.15.5");
  аТемп.LoadFrom("Doc.РегистрацияВыпускаПродукции.Содержание","@HEADER->зДок,@HEADER.DocDate->зДата,@HEADER.ВыпускПродукции->зВып,@HEADER.ВыпускПродукции..Doc.ВыпускПродукции.ДокОснование->зЗад,"+
    "@LINE->зНомерСтроки,Материал->Номенклатура,КоличествоОпераций->Количество,Работники->Работники,Смена->Смена",
    "ТипЗаписи=1","not isEmpty(@HEADER.ВыпускПродукции)","IsType(@HEADER.ВыпускПродукции,Doc.ВыпускПродукции)");

  Всего:=аТемп.Size();
  aNum:=0;
  аТемп.Select("зВып+,зДата+,зДок+,зНомерСтроки+");
  While аТемп.Next() Do
    aNum:=aNum+1;
    If aNum%20=0 Then
      Form.StatusText("Обработано строк: "+aNum+" из "+Всего);
    EndIf;
    зНом:=ObjC.Get(аТемп.Номенклатура);
    зЗад:=ObjC.Get(аТемп.зЗад);
    зВып:=ObjC.Get(аТемп.зВып);
    зДок:=ObjC.Get(аТемп.зДок);
    MainTab.AddLine("Документ,Номенклатура,Ед,Количество,Смена,зДок,НомСтр,зВып,зЗад,Работники,Индекс",зЗад.DocNum+" от "+зЗад.DocDate,зНом,ObjC.Get(зНом.базЕдиница),аТемп.Количество,
      ObjC.Get(аТемп.Смена),зДок,аТемп.зНомерСтроки,зВып,зЗад,ПолучитьСписокРаботников(Trim(аТемп.Работники),ТРаботники),зДок.DocNum+"@"+зДок.DocDate+"@"+аТемп.зНомерСтроки);
  EndDo;
  MassLoadObjects(MainTab);
Finally
  MainTab.Unlock();
EndTry;
Form.MainTab.SetFocus();