Урок 5. Вывод: макет и Excel
Как в Spec1C указать макет печати, выгрузку в Excel и блок view — и что из этого реально появляется в коде собранного файла.
Перед чтением
- Урок 1. Каркас: spec1c и report Обучение
На этой странице
Spec1C позволяет указать имя макета печати и пожелание выгрузки в Excel. Из всех уроков этот требует самых осторожных ожиданий: оба свойства принимаются и попадают в модель, но готового вывода на экран или в файл Excel Studio не генерирует.
Цель урока#
После урока вы сможете:
- записать
layoutиformatтак, чтобы они попали в модель; - предсказать, что появится в коде при
target: ordinaryиtarget: managed; - понять, что доделывать в Конфигураторе.
Что нужно знать#
targetи его влияние на код — Урок 1. Каркас: spec1c и report.- Источники данных — Урок 2. Источники данных и поля: без источника код вывода не генерируется.
Объяснение#
Две строки вывода:
layout: maket "<ИмяМакета>"
format: xlsxlayout: maket "Имя"— имя макета внутри обработки. Имя — в двойных кавычках.format: xlsx— пожелание выгрузки в Excel, строчными буквами.
Обе строки Studio ищет по всему тексту, поэтому их можно писать где угодно, в том числе внутри декоративного блока view { … }. Тело view не разбирается как структура: слова print, export и имена после них ни на что не влияют — view.
Что происходит в коде:
| Ситуация | Код в собранном файле |
|---|---|
target: ordinary | Только запрос и сообщение с числом строк. layout и format в код не попадают |
target: managed с layout | Получение макета ПолучитьМакет("Имя"), области «Шапка» и «Строка», заполнение табличного документа |
target: managed без layout | То же с именем макета «Макет» |
format: xlsx при любом target | Кода сохранения в Excel нет |
Полный пример#
spec1c {
report items
title: "Список номенклатуры"
target: managed
data {
items = Справочник.Номенклатура
fields: Ссылка, Код, Наименование
}
view {
print ПечатьСписка
layout: maket "ПечатьСписка"
export Выгрузка
format: xlsx
}
}Справочник.Номенклатура — пример из типовой конфигурации. Объект должен существовать в вашей конфигурации; Studio в облаке его не проверяет. Макет ПечатьСписка с областями «Шапка» и «Строка» нужно создать в обработке самостоятельно.
Разбор примера#
| Строка | Принята | В модели | В коде |
|---|---|---|---|
target: managed | да | вид формы — управляемая | код для управляемой формы |
view { … } | да, как контейнер | — | — |
print ПечатьСписка | да, игнорируется | нет | нет |
layout: maket "ПечатьСписка" | да | имя макета | ПолучитьМакет("ПечатьСписка") |
export Выгрузка | да, игнорируется | нет | нет |
format: xlsx | да | признак выгрузки в Excel | нет |
Серверная часть сгенерированного кода (служебные комментарии убраны):
&НаСервере
Процедура СформироватьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|";
РезультатЗапроса = Запрос.Выполнить();
ТабДок = Новый ТабличныйДокумент;
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
Макет = ОбработкаОбъект.ПолучитьМакет("ПечатьСписка");
ОбластьШапкаМакет = Макет.ПолучитьОбласть("Шапка");
ОбластьСтрокаМакет = Макет.ПолучитьОбласть("Строка");
ТабДок.Вывести(ОбластьШапкаМакет);
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ОбластьСтрокаМакет.Параметры.Ссылка = Выборка.Ссылка;
ОбластьСтрокаМакет.Параметры.Код = Выборка.Код;
ОбластьСтрокаМакет.Параметры.Наименование = Выборка.Наименование;
ТабДок.Вывести(ОбластьСтрокаМакет);
КонецЦикла;
КонецПроцедурыТабличный документ ТабДок заполняется, но никуда не выводится.
С target: ordinary тот же текст даёт только запрос и подсчёт строк:
report items
target: ordinary
data {
items = Справочник.Номенклатура
fields: Ссылка, Код
}
layout: maket "ПечатьСписка"
format: xlsxОжидаемый результат#
После «Ещё» → «Применить без сборки» — уведомление «Spec1C → модель · источников 1». Отдельной строки про вывод в уведомлении нет.
| Уровень | Что получится |
|---|---|
| Разбор | Ошибок нет; print и export пропущены без сообщений |
| Модель | Имя макета ПечатьСписка, признак выгрузки в Excel |
| Проверка | Существование макета не проверяется |
| Код BSL | При managed — макет и табличный документ без вывода на форму; при ordinary — только запрос; кода Excel нет в обоих случаях |
| Работа в 1С | Не проверялась; для нового файла ожидаемы ошибки компиляции (managed) или отсутствия макета |
Типичные ошибки#
| Что сделали | Что произошло | Как правильно |
|---|---|---|
layout: maket ПечатьСписка без кавычек | Имя макета не распознано, без сообщения | Имя в двойных кавычках |
format: XLSX | Не распознано | xlsx строчными |
Ждёте файл Excel после format: xlsx | Кода выгрузки нет | Выгрузку пишут в модуле вручную |
Указали layout при target: ordinary | Макет в коде не используется | Это ожидаемо; вывод по макету дописывают в Конфигураторе |
Убрали layout, а имя макета в модели старое | Удаление строки не очищает модель | Укажите новое имя явно |
| Описали шаблон Excel на этапе Intent и ждёте вывод по нему | Сценарий с шаблоном Excel не подтверждён | Опирайтесь на эту страницу и layout и format |
Упражнение#
- Примените полный пример с
target: managedи соберите файл. В модуле формы найдитеПолучитьМакет("ПечатьСписка")и две подряд строки&НаКлиенте. - Замените
managedнаordinary, примените и соберите. Убедитесь, что макет из кода исчез, а запрос остался. - Удалите строку
format: xlsx, примените и соберите. Код не изменится: выгрузки в Excel не было и раньше.
Следующий урок#
Урок 7. Поиск и исправление ошибок — поиск и исправление ошибок. Остатки и обороты регистров (balance, turnovers) в облачной среде собрать нельзя, поэтому они в учебный маршрут не входят.
См. также
- layout и format Справочник
- view Справочник
- Настроить вывод Руководство
- Ограничения реализации Справочник
Сверено с продуктом: 27.10.2026