Smart1Spec Документация
Studio
СправочникИзучающий Spec1C

report

Заголовок спецификации report — идентификатор, title, target и section; как target выбирает вид генерируемого кода.

Перед чтением

На этой странице

Конструкция report открывает описание отчёта или обработки: задаёт идентификатор, заголовок, вид формы для генерируемого кода и номер раздела.

Назначение#

Из всех свойств report на собранный файл реально влияет только target: он определяет, какой код будет сгенерирован в модуль формы — для обычной или для управляемой формы. title попадает в модель и в комментарий в начале сгенерированного кода. Сам report <имя> нужен прежде всего для того, чтобы спецификация без источников данных считалась непустой.

Синтаксис#

Spec1C
report <идентификатор>
  title:   "<заголовок>"
  target:  ordinary | managed
  section: <число>

Свойства пишут на отдельных строках после report. Порядок свойств и отступы не важны.

Элементы#

ЭлементОбязателенПо умолчаниюЧто означает
report <идентификатор>нет*—имя отчёта; латиница или кириллица, цифры, _
title: "…"нетимя файла (для нового файла)заголовок; только в двойных кавычках
target: ordinary / target: managedнетзначение, уже записанное в модели; у нового файла — ordinaryвид генерируемого кода
section: Nнетзначение в моделиномер раздела; целое число без знака

\* Без report спецификация допустима, если в ней есть источник в data { } или команда show, include list, balance, turnovers.

Пример#

Spec1C
spec1c {
  report contracts
    title:   "Список договоров"
    target:  ordinary
    section: 0

  data {
    contracts = Справочник.КлиентскиеДоговора
      fields: Ссылка, Код
  }
}

Спецификация с одним заголовком без источников разбирается, но даёт предупреждение «нет блока data { }»:

Spec1C
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 — процедура для обычной формы: запрос, подсчёт строк и сообщение с их числом. Макет, табличный документ и вывод на экран не генерируются.

BSL
Процедура Сформировать(Кнопка)
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	КлиентскиеДоговора.Ссылка КАК Ссылка,
	|	КлиентскиеДоговора.Код КАК Код
	|ИЗ
	|	Справочник.КлиентскиеДоговора КАК КлиентскиеДоговора
	|";
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	н = 0;
	Пока Выборка.Следующий() Цикл
		н = н + 1;
	КонецЦикла;
	Сообщить("… строк " + Строка(н));
КонецПроцедуры

target: managed — клиентская и серверная процедуры управляемой формы, получение макета, области «Шапка» и «Строка», заполнение табличного документа:

BSL
&НаКлиенте
&НаКлиенте
Процедура Сформировать(Команда)
	СформироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СформироватьНаСервере()
	// … текст запроса …
	ТабДок = Новый ТабличныйДокумент;
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	Макет = ОбработкаОбъект.ПолучитьМакет("Макет");
	ОбластьШапкаМакет = Макет.ПолучитьОбласть("Шапка");
	ОбластьСтрокаМакет = Макет.ПолучитьОбласть("Строка");
	// … вывод строк в ТабДок …
КонецПроцедуры

Директива &НаКлиенте в сгенерированном коде стоит дважды подряд, а готовый табличный документ на форму не выводится.

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 не влияет на код облачной сборки.

Полный список — Ограничения реализации.

Связанные конструкции#

См. также

Сверено с продуктом: 27.10.2026

Нашли неточность? Напишите на [email protected] и укажите адрес страницы.

Smart1Spec · документация описывает текущую версию сервиса.