Difference between revisions of "DB.FindEx"
m (1 revision imported) |
|
(No difference)
|
Latest revision as of 07:43, 7 February 2021
FindEx (Поиск и позиционирование объекта) | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Функция производит поиск и позиционирование на объект текущего вида. Объект идентифицируется с помощью фильтров. Если объект найден, произойдет позиционирование текущего объекта, и полнота загрузки объекта будет определена режимом загрузки, если не найден, текущий объект не будет изменен, если в базе данных найдено более одного объекта, будет позиционирован первый из найденных. При поиске объектов используется порядок сортировки, заданный функцией UseOrder и ограничение, заданное функцией UseBorders. Функцию удобно использовать совместно со сборщиком объектов.
Синтаксис
DB.FindEx(<Режим загрузки (INT)>=0,<Доп. реквизиты при загрузке заголовков (STRING)>="",<Стандарные фильтры>...):<Объект был найден (INT)>
Аргументы
<Режим загрузки (INT)>
- (необязательный аргумент) Определяет способ (полноту) загрузки найденного объекта (см. Объект базы данных). Аргумент может принимать следующие значения:- 0 (по умолчанию) -- производится полная загрузка найденного объекта.
- 1 -- производится загрузка объекта в режиме только заголовка.
- 2 -- производится загрузка объекта в режиме частичной загрузки. Второй аргумент используется, как список реквизитов для загрузки.
- 3 -- найденный объект будет позиционирован, но не будет загружен
<Доп. реквизиты при загрузке заголовков (STRING)>
- (необязательный аргумент) Список наименований дополнительных реквизитов при загрузке объекта в режиме частичной загрузки (2).<Стандартные фильтры>
- (необязательный аргумент) Стандартные фильтры позиционирования описаны в статье Стандартные фильтры.
Возвращаемое значение
Возвращается 1, если объект был найден, иначе возвращает 0 и состояние объекта не будет изменено.
Примеры
//Подготовка списка элементов справочника Номенклатура, которая будет использоваться в запросе, где нет необходимости в загруженных объектах //Ссылки на элементы располагаются в текстовом файле, объекты находятся по реквизиту Code Сп:=List.Create(); For i:=1 To Т.Size() Do Form.StatusText("Подготовка "+i+" из "+Т.Size()); Стр:=Т.GetLine(i); If Trim(Стр)="" Then Continue; EndIf; аТМЦ:=Ref.тмцНоменклатура; //Загрузка происходит гораздо быстрее, так как нет необходимости в загрузке объекта If аТМЦ.FindEx(3,,"Code",Стр)=0 Then Message("Не найдена номенклатура с кодом "+Стр+"!","!"); Exit; EndIf; If Сп.Find(аТМЦ)=0 Then Сп.Add(аТМЦ); EndIf; EndDo; ... //Далее можно использовать Сп в запросе //Пример демонстрирует кусок кода из цикла, где происходит поиск и загрузка элементов справочника СортаХарактеристики по реквизиту Code //Совместно с FindEx работает объект ObjC, являющийся Сборщиком объектов //Конструкция позволяет пропускать уже загруженные ранее элементы СортаХарактеристики, что ускоряет загрузку, когда цикл оперирует большим количеством одинаковых элементов СортаХарактеристики //Вместо сборщика объектов можно также использовать сортированный список с наименованиями -- значениями реквизита Code While ... Do //Подготовка кода поиска СтрЗнач ... aEl:=Ref.СортаХарактеристики; If not aEl.FindEx(3,,"Code",СтрЗнач) Then Message("Ошибка при поиске кода "+СтрЗнач+"!"); Break; EndIf; aEl:=ObjC.Get(aEl); //aEl -- загруженный объект, который можно использовать в дальнейшем ... EndDo;