Предложение ЗАПОЛНИТЬ

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

Предложение имеет следующий синтаксис:

[ЗАПОЛНИТЬ имя-типа]

Использование существующих типов

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

Выбор конструктора выполняется в следующем порядке:

  • Сначала пытается подобрать конструктор для именованной формы вызова. Для этого должны выполняться следующие условия:
    • для каждой колонки должен быть параметр с именем, равным псевдониму колонки;
    • все лишние параметры должны быть необязательными и иметь значения по умолчанию;
    • типы параметров должны совпадать или наследоваться от типов соответствующих колонок запроса.

    Если конструктор не найден, выполняется следующий пункт.

  • Делается попытка подобрать конструктор для позиционной формы вызова. Для этого:
    • в конструкторе должно быть не меньше параметров, чем колонок в запросе;
    • все лишние параметры должны быть необязательными и иметь значения по умолчанию;
    • типы параметров должны совпадать или наследоваться от типов соответствующих колонок запроса.
  • Если подходящий конструктор не найден, выдается ошибка.
Примечание: Работа с «Неопределено» и «неизвестно»

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

Пример использования существующей структуры в качестве типа строки результата запроса:
// Объявление структуры
структура КоличествоТоваров
    знч Товар: Товары.Ссылка
    знч Количество: Число
;
// ...
// Запрос для заполнения структуры данными 
знч Запрос = Запрос{
    ВЫБРАТЬ
       Товар КАК Товар,
       СУММА(Количество) КАК Количество
    ЗАПОЛНИТЬ КоличествоТоваров
    ИЗ
        Продажи
    СГРУППИРОВАТЬ ПО
        Товар
}

Порождение именованных типов

Если в результате выполнения запроса порождается новый структурный тип, для него генерируется конструктор со следующими характеристиками:

  • Для каждого поля создается одноименный параметр, имеющий тот же состав типов. Значения по умолчанию для параметров отсутствуют.
  • При вызове конструктора допускается только именованная форма передачи параметров.