4. Конструкторы
#41

Готовишься к экзамену?

Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.

Перейти в бота

Что можно сделать с помощью «Конструктора запросов» в 1С (в Конфигураторе/редакторе модулей), если нужно подготовить или поправить запрос на языке запросов?

Собрать с нуля текст нового запроса с помощью визуального мастера (выбор таблиц, полей, условий) и вставить получившийся текст в модуль.
Неправильно: Конструктор запросов действительно умеет сформировать текст нового запроса - это одна из его основных задач. Но правильный ответ в вопросе подразумевает полный перечень возможностей конструктора, поэтому один этот пункт считается неполным.
Сгенерировать готовый программный фрагмент: создание объекта «Запрос», присвоение текста, выполнение и получение результата.
Неправильно: Обычный «Конструктор запросов» формирует только текст запроса и не создает «обвязку» на встроенном языке (создание объекта Запрос и обработка результата). Для генерации кода существует другой инструмент - «Конструктор запроса с обработкой результата», а не стандартный конструктор.
Открыть в конструкторе уже написанный запрос и отредактировать его (изменить поля, отборы, группировки) с последующей генерацией обновленного текста.
Неправильно: Конструктор действительно может редактировать существующий запрос: он подхватывает текст, если курсор установлен внутри строки запроса и текст корректно распознается. Но этот пункт не охватывает возможность формирования нового запроса, поэтому сам по себе он неполный.
Верны варианты 1 и 3: конструктор позволяет сформировать текст нового запроса и редактировать текст уже имеющегося запроса.
Правильно: Стандартный конструктор запросов работает именно с текстом запроса: он помогает создать его с нуля и удобно править существующий текст. При этом он не предназначен для генерации программного кода выполнения запроса - это задача отдельного конструктора с обработкой результата.
Верны все варианты (1, 2 и 3).
Неправильно: Пункты 1 и 3 относятся к реальным возможностям конструктора запросов, а пункт 2 - к другому инструменту, который дополнительно формирует код выполнения и обработки результата. Поэтому утверждение «верны все варианты» неверно.

Пояснение

Конструктор запросов в 1С - это визуальный инструмент для создания и редактирования ТЕКСТА запроса на языке запросов 1С. Он полезен, когда нужно быстро собрать выборку из регистров/справочников/документов, не набирая синтаксис вручную. Что он умеет: 1) Сформировать новый текст запроса. - Вы выбираете источники данных (таблицы/виртуальные таблицы регистров), поля, условия отбора, сортировки, группировки. - По нажатию «ОК/Сформировать» конструктор генерирует текст запроса, который вставляется в модуль. 2) Отредактировать уже существующий запрос. - Чтобы конструктор «подхватил» существующий текст, обычно нужно установить курсор внутрь текстовой строки запроса (внутри кавычек или многострочного литерала) и вызвать «Конструктор запроса». - Важно: если текст запроса содержит ошибки синтаксиса или курсор стоит не в тексте запроса, конструктор может не распознать его и предложит создать новый. Чего стандартный конструктор НЕ делает: - Он не генерирует программную «обвязку» (Новый Запрос, УстановитьПараметр, Выполнить, обход выборки и т.п.). Если нужен автокод, используют другой инструмент - «Конструктор запроса с обработкой результата», который помимо текста запроса формирует пример кода выполнения и вывода результата. Практический мини-пример применения: - Вам нужно вывести список контрагентов с суммой оборотов за период. В конструкторе выбираете регистр/таблицу, поля и группировку, получаете корректный текст запроса. - Потом, если требуется добавить отбор по организации или периоду, проще снова открыть конструктор на этом тексте и внести изменения визуально, чем править вручную большой запрос. Совет: - После генерации текста используйте форматирование запроса (если доступно в редакторе) - так проще читать запрос и быстрее находить ошибки в полях и условиях.