report
Заголовок спецификации report — идентификатор, title, target и section; как target выбирает вид генерируемого кода.
Перед чтением
- spec1c (корень) Справочник
На этой странице
Конструкция report открывает описание отчёта или обработки: задаёт идентификатор, заголовок, вид формы для генерируемого кода и номер раздела.
Назначение#
Из всех свойств report на собранный файл реально влияет только target: он определяет, какой код будет сгенерирован в модуль формы — для обычной или для управляемой формы. title попадает в модель и в комментарий в начале сгенерированного кода. Сам report <имя> нужен прежде всего для того, чтобы спецификация без источников данных считалась непустой.
Синтаксис#
report <идентификатор>
title: "<заголовок>"
target: ordinary | managed
section: <число>Свойства пишут на отдельных строках после report. Порядок свойств и отступы не важны.
Элементы#
| Элемент | Обязателен | По умолчанию | Что означает |
|---|---|---|---|
report <идентификатор> | нет* | — | имя отчёта; латиница или кириллица, цифры, _ |
title: "…" | нет | имя файла (для нового файла) | заголовок; только в двойных кавычках |
target: ordinary / target: managed | нет | значение, уже записанное в модели; у нового файла — ordinary | вид генерируемого кода |
section: N | нет | значение в модели | номер раздела; целое число без знака |
\* Без report спецификация допустима, если в ней есть источник в data { } или команда show, include list, balance, turnovers.
Пример#
spec1c {
report contracts
title: "Список договоров"
target: ordinary
section: 0
data {
contracts = Справочник.КлиентскиеДоговора
fields: Ссылка, Код
}
}Спецификация с одним заголовком без источников разбирается, но даёт предупреждение «нет блока data { }»:
report draft
title: "Черновик"
target: managedЧто принимает разбор#
reportищется по всему тексту; берётся первое вхождение. Второйreportигнорируется.title:— только с двойными кавычками.title: 'X'иtitle = "X"молча пропускаются.target:— толькоordinaryилиmanagedстрочными буквами.target: Managed,target: webмолча пропускаются, ошибки нет.section:— только цифры.section: -1пропускается.- Свойства не привязаны к строке
report:title:доreportтоже будет найден. //внутри кавычек обрезает строку как комментарий:title: "a // b"теряет заголовок.
Что попадает в модель#
titleиsectionзаменяют значения в модели.targetзаписывается в модель, если указан. Если строкуtarget:удалить, в модели остаётся прежнее значение — вид кода не вернётся кordinaryсам.- Идентификатор записывается в модель, только если у неё ещё нет идентификатора. У файлов, созданных или открытых в Studio, идентификатор уже есть, поэтому изменение имени после
reportничего не меняет в модели (по исходному коду Studio).
Что проверяется#
Значения title, target, section не проверяются: неверное значение пропускается без сообщения. Проверьте результат на этапе Intent или по уведомлению после «Применить без сборки». Если нет ни report, ни источников и команд, разбор выдаёт ошибку «не найден report и источники data».
Что генерируется в BSL#
Вид кода выбирает target (проверено живыми сборками контрольных пар с одинаковыми данными):
target: ordinary — процедура для обычной формы: запрос, подсчёт строк и сообщение с их числом. Макет, табличный документ и вывод на экран не генерируются.
Процедура Сформировать(Кнопка)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КлиентскиеДоговора.Ссылка КАК Ссылка,
| КлиентскиеДоговора.Код КАК Код
|ИЗ
| Справочник.КлиентскиеДоговора КАК КлиентскиеДоговора
|";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
н = 0;
Пока Выборка.Следующий() Цикл
н = н + 1;
КонецЦикла;
Сообщить("… строк " + Строка(н));
КонецПроцедурыtarget: managed — клиентская и серверная процедуры управляемой формы, получение макета, области «Шапка» и «Строка», заполнение табличного документа:
&НаКлиенте
&НаКлиенте
Процедура Сформировать(Команда)
СформироватьНаСервере();
КонецПроцедуры
&НаСервере
Процедура СформироватьНаСервере()
// … текст запроса …
ТабДок = Новый ТабличныйДокумент;
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
Макет = ОбработкаОбъект.ПолучитьМакет("Макет");
ОбластьШапкаМакет = Макет.ПолучитьОбласть("Шапка");
ОбластьСтрокаМакет = Макет.ПолучитьОбласть("Строка");
// … вывод строк в ТабДок …
КонецПроцедурыДиректива &НаКлиенте в сгенерированном коде стоит дважды подряд, а готовый табличный документ на форму не выводится.
title попадает только в служебный комментарий в начале сгенерированного кода (строка // Отчёт: <заголовок>). section на код облачной сборки не влияет: со section: 1 и target: ordinary сгенерирован тот же код, что и без раздела (живая сборка).
Код записывается в зону модуля формы между маркерами // >>> SPEC1C_EMIT_BLANK_BEGIN и // <<< SPEC1C_EMIT_BLANK_END и попадает только в собранный файл.
Работа в 1С#
В 1С сгенерированный код не запускался. Форма нового файла из Studio — обычная, поэтому код для target: managed к ней не подходит, а повторённая директива &НаКлиенте ожидаемо не пройдёт проверку модуля в 1С. Для нового файла используйте target: ordinary: результат — сообщение с числом строк запроса; вывод на экран дорабатывайте в Конфигураторе. Как проверить файл — Проверить результат в 1С.
Ограничения#
- Неверные значения
title,target,sectionпропускаются без сообщения. - Удаление строки
target:не сбрасывает вид кода. - Изменение идентификатора после
reportне меняет модель файла. target: managedдля нового файла даёт код управляемой формы для обычной формы.sectionне влияет на код облачной сборки.
Полный список — Ограничения реализации.
Связанные конструкции#
- spec1c (корень) — корень спецификации.
- data — источники данных, по которым строится запрос.
- layout и format — макет и формат вывода; макет используется только при
target: managed. - Соответствие конструкций и BSL — соответствие конструкций и кода BSL.
См. также
- spec1c (корень) Справочник
- data Справочник
- layout и format Справочник
- Соответствие конструкций и BSL Справочник
- Ограничения реализации Справочник
Сверено с продуктом: 27.10.2026