Difference between revisions of "DB.Select"
(Created page with "{{infobox function |name=Select |object=Объект базы данных |caption=Выборка объектов |type=1 |status=2 |db=2 |exception=Ошибка в фи...") |
m (1 revision imported) |
(No difference)
| |
Latest revision as of 07:43, 7 February 2021
| Select (Выборка объектов) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Функция инициирует выборку по таблице текущего объекта с учетом указанных фильтров, и возвращает 1, если в выборке есть объекты. Для получения следующего объекта выборки необходимо использовать функцию Next, новый объект помещается в текущий, все изменения в текущем объекте будут утеряны. Выборку можно осуществлять только для объектов типа справочник, документ, журнал. Полученный объект будет загружен. Выборка происходит по порядку сортировки, заданному функцией UseOrder и использует ограничение, заданное функцией UseBorders. При загрузке объекта, работают правила, заданные функцией UseOption. Функция не загружает все объекты, соответствующие фильтру в память сразу, а получает их порциями с сервера, таким образом не затрачивая большое количество памяти даже для объектов, имеющих большие количество реквизитов. Если необходимо еще больше ускорить загрузку и уменьшить потребность в памяти для циклов, для которых не важны реквизиты объекта, или важны только некоторые реквизиты, можно использовать функцию SelectEx.
Синтаксис
DB.Select(<Стандарные фильтры>...):<В выборке есть по крайней мере один элемент (INT)>
Аргументы
<Стандартные фильтры>- (необязательный аргумент) Стандартные фильтры позиционирования описаны в статье Стандартные фильтры.
Возвращаемое значение
Возвращается 1, если в выборке присутствует по крайней мере один объект, иначе возвращает 0.
Примеры
//Пример производит выборку по подчиненному справочнику ЛицензииКонтрагентов, чтобы найти самую свежую лицензию из диапазона дат НачДата..КонДата.
аДата:=0;
аЭл:=Ref.ЛицензииКонтрагентов;
//Выбрать не удаленные элементы подчиненные элементу зК
аЭл.Select("@Parent,@Status",зК,0);
аРез:=0;
While аЭл.Next() Do
If (аЭл.ТипЛицензии<>Enum.ТипыЛицензий.АлкогольнаяРозничная)And(аЭл.ТипЛицензии<>Enum.ТипыЛицензий.АлкогольнаяОптовая) Then
Continue;
EndIf;
If (аЭл.ДатаВыдачиЛицензии<=КонДата)And(аЭл.ДатаНачалаДействияЛицензии<=КонДата)And(аЭл.ДатаОкончанияДействияЛицензии>=НачДата) Then
If _Or(аДата=0,аДата<аЭл.ДатаОкончанияДействияЛицензии) Then
аДата:=аЭл.ДатаОкончанияДействияЛицензии;
//ВАЖНО: результат должен быть копией текущего объекта аЭл,
// так как иначе он будет изменен в момент, когда текущий объект аЭл будет загружен заново при выполнении аЭл.Next()
аРез:=аЭл.Copy();
EndIf;
EndIf;
EndDo;