Руководство разработчика

Функция БД_ВЫБОР

Для организации с помощью внутреннего языка Инфо-Бухгалтера возможности работы со всевозможными справочниками и просмотра DBF-файлов, используется встроенная функция БД_ВЫБОР.

Функция БД_ВЫБОР позволяет просматривать и выбирать записи DBF-файла с помощью таблицы в диалоговом окне. При нажатии на кнопку ОК функция возвращает номер выбранной записи, а при нажатии на Отмена возвращает 0.

Обращение к функции может осуществляться как для безымянной базы данных, определенной в Инфо-Бухгалтере по умолчанию, так и по имени объекта База данных или База данных с поддержкой SQL. Вы можете задать свой заголовок окна выбора. Если он отсутствует, то используется заголовок "Выбор из базы данных". Может использоваться список полей, которые будут показаны. При его отсутствии показываются все поля. Для каждого поля можно указать название, под которым оно будет выводиться в таблице выбора. Функция отображает не более 100 первых записей.

ФУНКЦИЯ ТИП_ЧИСЛО: БД_ВЫБОР [ (
    [<объектная переменная>]
    [, <заголовок>]
    [
        [,<имя поля 1> [:<название 1> [:<длина 1>] ] ] 
        [, ...]
      или
        СТОЛБЦЫ(имя_набора)
    ] 
    [,<номер>]
    [; имя_доп_парам_1 = знач_доп_парам_1 [; имя_доп_парам_2 = знач_доп_парам_2 [; ... ]]]
)]

Параметры

<объектная переменная>
Идентификатор объекта База данных или База данных с SQL.
<заголовок>
Заголовок окна выбора.
<имя поля n>
Имя n-го DBF-поля.
<название n>
Название n-го поля в таблице (заголовок столбца).
<длина n>
Длина n-го поля в таблице (ширина столбца). Отрицательное значение позволяет не отображать данное поле и не проверять его наличие в таблице.
имя_набора
Имя глобального набора столбцов, который может формироваться во время выполнения. См. функцию БД_ДОБАВИТЬ_СТОЛБЕЦ.
<номер>
Номер записи, на которую устанавливается курсор в таблице при запуске функции (по умолчанию 1).
имя_доп_парам_n
Имя n-го дополнительного параметра.
Внимание! Из соображений синтаксической однозначности дополнительные параметры отделяются от остальных параметров и между собой точкой с запятой, а не запятой.
Поддерживаются следующие параметры:
  • сообщение – текстовое сообщение, которое отображается над таблицей (строка);
  • справка – ссылка на файл справки или команда Инфо-Навигатора (строка);
  • кол_строк – количество видимых строк от 5 до 50, по умолчанию 15 (число).
знач_доп_парам_n
Значение n-го дополнительного параметра (выражение соответвтующего имени параметра типа).

Поддерживается два способа определения списка столбцов (полей). Первый способ – это явное перечисление описаний столбцов в параметрах функции БД_ВЫБОР. Этот способ простой и наглядный, но имеет тот недостаток, что список полей должен быть известен заранее. Второй способ использует глобальные именованные наборы столбцов, которые могут формироваться динамически во время выполнения. Для применения второго способа используется ключевое слово СТОЛБЦЫ, внутри скобок которого указывается имя необходимого набора столбцов.

Для работы с глобальными именованными наборами столбцов есть следующие функции:


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

Номер выбранной записи. При выходе из функции осуществляется сброс текущей записи. При нажатии на кнопку Отмена возвращает 0. Более точно определить была нажата кнопка ОК или Отмена позволяет вызоыв функции АТРИБУТ("результат_диалога").

Пример использования

Пусть имеется файл People.dbf, в котором содержатся фамилии, адреса, телефоны сотрудников. Соответствующие поля пусть называются FIO, ADDR, TEL.

Сначала покажем, как можно воспользоваться функцией БД_ВЫБОР простейшим образом:

БД_ОТКРЫТЬ ("People")   // открываем базу данных People.dbf
ном=БД_ВЫБОР            // в переменную ном заносится
ЕСЛИ ном > 0 ТО         // номер выбранной записи
БД_ПЕРЕЙТИ (ном)        // теперь эту запись можно
// ...                  // считать и т.д.
КОНЕЦ_ЕСЛИ
БД_ЗАКРЫТЬ

Сделаем то же самое, но с применением объекта База данных с поддержкой SQL:

База=SQL_ОТКРЫТЬ ("People.dbf")  // открываем базу People.dbf
ном=БД_ВЫБОР (База)              // выбираем из БД запись
ЕСЛИ ном > 0 ТО
    База.ПЕРЕЙТИ (ном)
КОНЕЦ_ЕСЛИ
База.ЗАКРЫТЬ

Окно выбора будет выглядеть так:

Назовем теперь окно "Курсы валют" и спрячем столбцы KOMENT и KOEF, а столбцы DATA, VALUTA и KURS назовем соответственно "Дата", "Валюта" и "Курс".

БД_ВЫБОР (База, "Курсы валют",
    ["DATA":"Дата","VALUTA":"Валюта","KURS":"Курс"])

При указании списка полей будут показываться только поля, указанные в нем. В результате будем иметь такое окно:

Для использования окна выбора из базы данных при заполнении входных полей бланка был введен новый тип входного поля. Фактически это поле ввода является обычным полем ввода строки, но с возможностью подстановки этой строки в соответствии со значением какого-либо поля в базе данных. Вне зависимости от типа поля, результат выбора подставляется в строковом виде.

В заголовке окна выбора из базы данных при подстановке во входное поле будет находиться имя строковой переменной, а столбцы таблицы будут содержать все поля DBF-файла и называться в соответствии с именами полей.


См. также: