Перейти к основному содержимому

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

Предложение ЗАПОЛНИТЬ позволяет использовать существующий тип в качестве типа строки результата запроса. Если подходящий тип не найден, будет выдана ошибка компиляции модуля, в котором находится литерал запроса.

Синтаксис

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

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

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

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

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

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

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

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

  • Делается попытка подобрать конструктор для позиционной формы вызова. Для этого:

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

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

Работа с «Неопределено» и «неизвестно»

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

Пример

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