Difference between revisions of "TempDB.Select"
m (1 revision imported) |
1>Admin (→Аргументы) |
||
| Line 22: | Line 22: | ||
==== Аргументы ==== | ==== Аргументы ==== | ||
* <code>''<Наименования столбцов сортировки с направлением сортировки (STRING)>''</code> - {{Optional}} Задает наименования столбцов для последовательности сортировки через запятую. Формат задания столбца: <code><Наименование столбца>{+,-}</code>, если оба знака направления ''+'' или ''-'' опущены, будет использована сортировка по неубыванию (''+''). Вне зависимости от наличия или отсутствия указания на столбцы сортировки при выборке, система всегда использует последнюю сортировку по уникальному индексу записи '''@ID'''. | * <code>''<Наименования столбцов сортировки с направлением сортировки (STRING)>''</code> - {{Optional}} Задает наименования столбцов для последовательности сортировки через запятую. Формат задания столбца: <code><Наименование столбца>{+,-}</code>, если оба знака направления ''+'' или ''-'' опущены, будет использована сортировка по неубыванию (''+''). Вне зависимости от наличия или отсутствия указания на столбцы сортировки при выборке, система всегда использует последнюю сортировку по уникальному индексу записи '''@ID'''. | ||
| − | * <code>''<Стандартные фильтры>''</code> - {{Optional}} Стандартные фильтры отбора записей текущей таблицы данных описаны в статье [[Стандартные фильтры]]. Важное отличие от фильтров функций объектов базы данных заключается в том, стандартные фильтры всегда работают в сложном (расширенном) режиме, при этом отсутствует требование, что первая строка фильтра должна начинаться на знак '''~'''. Выражения фильтров содержат весь возможный набор функций и операторов языка запросов (см. [[Временная таблица базы данных]], [[Объект запрос базы данных]]), при указании наименование также применимы префиксы (типа ''':'''), как это описано в [[Временная таблица базы данных#Формулы при вычислении полей записей временной таблицы базы данных|статье по временной таблице базы данных]]. Записи таблицы, не входящие в фильтр, будут пропущены при изменении. | + | * <code>''<Стандартные фильтры>''</code> - {{Optional}} Стандартные фильтры отбора записей текущей таблицы данных описаны в статье [[Стандартные фильтры]]. Важное отличие от фильтров функций объектов базы данных заключается в том, что стандартные фильтры всегда работают в сложном (расширенном) режиме, при этом отсутствует требование, что первая строка фильтра должна начинаться на знак '''~'''. Выражения фильтров содержат весь возможный набор функций и операторов языка запросов (см. [[Временная таблица базы данных]], [[Объект запрос базы данных]]), при указании наименование также применимы префиксы (типа ''':'''), как это описано в [[Временная таблица базы данных#Формулы при вычислении полей записей временной таблицы базы данных|статье по временной таблице базы данных]]. Записи таблицы, не входящие в фильтр, будут пропущены при изменении. |
==== Возвращаемое значение ==== | ==== Возвращаемое значение ==== | ||
Revision as of 09:23, 23 April 2021
| Select (Выборка из временных таблиц) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Функция открывает выборку записей из временной таблицы базы данных. К выборке применяется заданный фильтр, записи сортируются в соответствии с заданным направлением сортировки. Для продолжения выборки применяют функцию Next. При сортировке объектов базы данных нужно учитывать, что сортировка на сервере осуществляется только по внутреннему коду базы данных, а не по реквизиту сортировки объекта. Чтобы осуществить сортировку по требуемому реквизиту сортировки (к примеру, по наименованию или по дате документа), необходимо добавить столбец в таблицу и заполнить его значением требуемого реквизита и осуществлять сортировку по новому столбцу. Пример: в столбце Ном хранятся элементы справочника Номенклатура, по реквизиту Name которых нужно осуществлять сортировку при выборке записей таблицы. Добавим и заполним столбец Name в таблице, чтобы осуществлять сортировку по нему aTemp.AddColumns("Name->Ref.Номенклатура.Name");aTemp.Update("Ref.Номенклатура:Ном","Name->Name");aTemp.Select("Name");....
Синтаксис
TempDB.Select(<Наименования столбцов сортировки с направлением сортировки (STRING)>,<Стандартные фильтры>...):<Найдена по крайней мере одна запись (INT)>
Аргументы
<Наименования столбцов сортировки с направлением сортировки (STRING)>- (необязательный аргумент) Задает наименования столбцов для последовательности сортировки через запятую. Формат задания столбца:<Наименование столбца>{+,-}, если оба знака направления + или - опущены, будет использована сортировка по неубыванию (+). Вне зависимости от наличия или отсутствия указания на столбцы сортировки при выборке, система всегда использует последнюю сортировку по уникальному индексу записи @ID.<Стандартные фильтры>- (необязательный аргумент) Стандартные фильтры отбора записей текущей таблицы данных описаны в статье Стандартные фильтры. Важное отличие от фильтров функций объектов базы данных заключается в том, что стандартные фильтры всегда работают в сложном (расширенном) режиме, при этом отсутствует требование, что первая строка фильтра должна начинаться на знак ~. Выражения фильтров содержат весь возможный набор функций и операторов языка запросов (см. Временная таблица базы данных, Объект запрос базы данных), при указании наименование также применимы префиксы (типа :), как это описано в статье по временной таблице базы данных. Записи таблицы, не входящие в фильтр, будут пропущены при изменении.
Возвращаемое значение
Возвращает 1, если в выборке есть по крайней мере одна запись, иначе возвращает 0.
Примеры
//Пример показывает рабочий цикл с объектами из временной таблицы, используя сборщик объектов для уменьшения расхода памяти
//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();