Запросы
Запросы - ключевая составляющая будущей печатной формы. Именно запросы определяют данные, которые в дальнейшем могут быть использованы.

Вид закладки “Запросы”
Форма закладки “Запросы” разделена на две части:
- в левой части расположены список запросов и параметры устанавливаемые в запросы
- в правой части расположены текст запроса и список полей, которые будут получены из запросов
Порядок работы
Заголовок раздела «Порядок работы»Первый запрос писать не приходится. Если на закладке Описание указан объект метаданных, запросы строятся сами — в тот момент, когда вы уходите с «Описания» на любую другую закладку. Программа разбирает объект и создаёт запросы: отдельно шапку, отдельно каждую табличную часть; заодно по ним создаются наборы.
Автозаполнение срабатывает, только когда заполнять действительно нечего — запросов или наборов у макета ещё нет. Уже сделанную работу оно не перезаписывает.
Команда «Заполнить» в командной панели списка запросов делает то же самое по требованию. Она нужна, когда список запросов надо обновить: например, запрос удалили по ошибке или в объекте метаданных появилась новая табличная часть. Если запросы уже есть, программа спросит, заменить их или дополнить.
Дальше работа идёт так:
- Добавьте запрос, если нужных данных в сгенерированных нет, и дайте ему понятное имя — под этим именем он будет виден на закладке Наборы.
- Напишите текст запроса — прямо в поле или через конструктор запросов; проверить результат можно консолью запросов, не выходя из макета.
- Проверьте область ошибок и рекомендаций под текстом (см. Ошибки и рекомендации).
- Заполните параметры, если в запросе они есть: кнопка «Обновить» над таблицей параметров вычитывает их из текстов запросов.
- Обновите поля запроса — из результата запроса читается состав колонок, без этого поля не из чего будет собрать набор.
- Переходите на закладку Наборы — там данные запроса превращаются в то, что можно подставить в макет. Наборы подхватывают изменения запросов сами, когда вы уходите с этой закладки.
Возвращаться к запросам по мере отрисовки макета — нормальный ход: состав нужных полей обычно уточняется, когда макет уже виден.
Список запросов
Заголовок раздела «Список запросов»При подготовке данных для печатной формы как правило требуется получить информацию из различных источников: реквизитов шапки, табличных частей, движений документов, остатков или оборотов по регистрам. При этом анализ пакетного запроса (когда в одном запросе будут получены сразу все необходимые данные), достаточно трудоемкий процесс.
Интерфейс конструктора предусматривает возможность разделить сбор данных на отдельные запросы и дать каждому запросу имя. Запрос не обязательно должен возвращать готовые данные (в виде таблицы). В результате выполнения запроса можно получить временную таблицу, которая будет использована в следующих запросах.
Например: в печатной форме “Перемещение ТМЦ на МОЛ” необходимо напротив каждой позиции материалов (которые были перемещены), показать текущий остаток материалов за материально-ответственным лицом. Чтобы получить данные по остаткам, необходимо выполнить запрос:
ВЫБРАТЬ РАЗЛИЧНЫЕ _ДемоПеремещениеТоваровТовары.Номенклатура КАК Номенклатура, _ДемоПеремещениеТоваровТовары.Ссылка.МестоХраненияПриемник КАК МОЛПОМЕСТИТЬ ВТ_ТоварыИЗ Документ._ДемоПеремещениеТоваров.Товары КАК _ДемоПеремещениеТоваровТоварыГДЕ _ДемоПеремещениеТоваровТовары.Ссылка В(&МассивОбъектов);
////////////////////////////////////////////////////////////////////////////////ВЫБРАТЬ Т.Номенклатура КАК Номенклатура, Т.МестоХранения КАК МОЛ, Т.КоличествоОстаток КАК ОстатокПОМЕСТИТЬ ВТ_ОстаткиИЗ РегистрНакопления._ДемоОстаткиТоваровВМестахХранения.Остатки( , (Номенклатура, МестоХранения) В (ВЫБРАТЬ Т.Номенклатура, Т.МОЛ ИЗ ВТ_Товары КАК Т)) КАК Т;
УНИЧТОЖИТЬ ВТ_ТоварыРассмотрим подробнее данный запрос:
- сначала выбираем все различные сочетания Номенклатура + МОЛ из документов, которые выбрали для печати (
&МассивОбъектов). Результат помещаем вВТ_Товары - затем выбираем остатки из регистра
_ДемоОстаткиТоваровВМестахХранения(без указания даты, то есть на текущий момент), по условию что Номенклатура + МестоХранения находятся в таблицаВТ_Товары. Результат помещаем вВТ_Остатки - уничтожаем временную таблицу
ВТ_Товары. Ее дальнейшее использование не планируется. Если нам понадобится эта ВТ далее, то следует ее создать также, отдельной строкой перед данным запросом
Таким образом, в результате выполнения данного запроса мы получим временную таблицу ВТ_Остатки с данными по текущим остаткам Номенклатура + МестоХранения. В дальнейшем мы можем данную временную таблицу использовать в запросе к табличной части Товары документов перемещения.
ВЫБРАТЬ Товары.Ссылка КАК Ссылка, Товары.НомерСтроки КАК НомерСтроки, Товары.Номенклатура КАК Номенклатура, Товары.Количество КАК Количество, ЕСТЬNULL(ВТ_Остатки.Остаток, 0) КАК ОстатокИЗ Документ._ДемоПеремещениеТоваров.Товары КАК Товары ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки ПО (Товары.Номенклатура = ВТ_Остатки.Номенклатура) И (Товары.Ссылка.МестоХраненияПриемник = ВТ_Остатки.МОЛ)ГДЕ Товары.Ссылка В(&МассивОбъектов)Рассмотрим колонки таблицы запросов
| Колонка | Описание |
|---|---|
![]() | Признак “Это общий запрос”. Данный запрос не содержит ключевого поля “Ссылка” |
| Запрос | Имя запроса для идентификации на закладке Наборы |
| Тип результата | Тип результата получаемых данных (Временная таблица, Таблица значений) |
| Врем. таблица | Имя временной таблицы запроса (только для типа Временная таблица) |
Общий запрос
Заголовок раздела «Общий запрос»Подробнее остановимся на признаке “Это общий запрос”. Как упоминалось ранее если не установлен признак “Это реестр” (см. Режим реестра на закладке «Описание») в результате 1 печатная форма будет сформирована на 1 объект исходных данных (ссылку). Однако, не все запросы возможно (или целесообразно) собирать в привязке к ссылке источника печатной формы. В вышеуказанном примере остатки номенклатуры по МОЛ в принципе не привязаны ни к одной ссылке документа источника (Перемещение). При этом, во избежании ошибок, конструктор контролирует наличие ключевого поля “Ссылка” и отбора по ключевому полю. При наличии ошибок выводится соответствующее предупреждение. Признак “Это общий запрос” создан специально, чтобы программа понимала, что данный запрос может не содержать поле “Ссылка” и его данные являются “общими”.
Параметры запросов
Заголовок раздела «Параметры запросов»Под табличной частью со списком запросов располагается табличная часть для установки параметров, которые были использованы в запросе. Для заполнения списка, необходимо чтобы параметры были объявлены в запросах, а также необходимо нажать кнопку “Обновить”. Список параметров общий для всех запросов.
Рассмотрим колонки таблицы параметров
| Колонка | Описание |
|---|---|
| Имя параметра | Имя параметра как оно задано в тексте запроса |
![]() | Значение параметра задано в виде программного алгоритма |
![]() | Значение параметра задано в виде списка значений |
| Значение | Представление установленного значения параметра (или алгоритма) |
Значением параметра может быть произвольное значение простого типа (число, дата, строка, булево), значение ссылочного типа (справочники, документы и т.д.), а также список данных значений. Но в некоторых случаях значение необходимо вычислять. Например, необходимо подставлять в запрос текущую дату. В таком случае, необходимо переключить значение на тип “Программный алгоритм” (колонка 2) и задать алгоритм вычисления значения. Например:
Результат = ТекущаяДатаСеанса();Результат вычисления всегда должен быть присвоен переменной Результат. Более подробное описание представлено в форме редактирования алгоритма.
Параметр &МассивОбъектов
Заголовок раздела «Параметр &МассивОбъектов»Формирование печатных форм происходит для определенного списка объектов, выбранных пользователем (например документов, элементов справочника и т.п.). Пользователь может формировать печатную форму для 1 объекта или сразу для нескольких. Разработку печатных форм, рекомендуется с учетом того, что ссылок будет более одной.
Все выбранные ссылки будут переданы в виде массива в предопределенный параметр &МассивОбъектов. Данный параметр не отбражается в макете конструктора. Однако при переходе в консоль он появится и необходимо будет указать значения для отбора при выполнении запросов.
Текст запроса
Заголовок раздела «Текст запроса»Справа от списка запросов располагается текст запроса соответствующий текущей строка табличной части “Запросы”. При изменении активной строки текст запроса переключается. Под полем редактирования текста запроса могут находится информационные поля с описанием ошибок и рекомендаций по текущему запросу.

Поле редактирования текста запроса
Над полем редактирования текста запроса располагаются кнопки перехода к вспомогательным инструментам:
| Кнопка | Действие |
|---|---|
| Конструктор | Открывает конструктор запроса — платформенный или из расширения Infostart Toolkit, если оно подключено |
| Консоль запросов | Открывает консоль запросов: запрос можно выполнить и посмотреть результат, не выходя из макета |
| Синтакс-помощник | Открывает справку платформы на языке запросов. CTRL+F1 показывает статью по слову под курсором |
Само поле текста запроса — это встроенный редактор кода: подсветка синтаксиса, подсказки по таблицам и полям с учётом структуры запроса, сворачивание блоков. Открывать что-то отдельным окном для этого не нужно. Исключение — веб-клиент: там редактор недоступен, и текст правится в обычном поле ввода.
Для редактирования текста запросов рекомендуется использовать конструктор запросов и другие инструменты. Это снизит вероятность ошибок и позволит выполнять разработку в более комфортных условиях.
Ошибки и рекомендации
Заголовок раздела «Ошибки и рекомендации»Текст запроса разбирается по мере редактирования, и результат разбора выводится под полем двумя областями:
- Ошибки — конструкции, из-за которых запрос не выполнится. Пока они есть, макет не заблокировать.
- Рекомендации — замечания, которые выполнению не мешают: отсутствие поля
Ссылкаили отбора по&МассивОбъектовтам, где они ожидаются, и подобное. Если такой запрос задуман общим — включите признак «Это общий запрос», и замечание уйдёт.
Поля запроса
Заголовок раздела «Поля запроса»Под текстом запроса располагается информация о полях, которые будут получены в результате выполнения запроса (во временную таблицу или таблицу значений). В таблице отмечены поля, которые имеют простой тип и рекомендованы для использования в печатной форме (первая колонка).
По двойному клику на колонке “Тип данных” можно открыть отдельное окно с деревом типов данных входящих в поле. Это может быть полезно, если количество типов достаточно большое (например поля регистров или субконто).


