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