Smart1Spec Документация
Studio
ОбучениеИзучающий Spec1CАналитик

Урок 5. Вывод: макет и Excel

Как в Spec1C указать макет печати, выгрузку в Excel и блок view — и что из этого реально появляется в коде собранного файла.

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

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

Spec1C позволяет указать имя макета печати и пожелание выгрузки в Excel. Из всех уроков этот требует самых осторожных ожиданий: оба свойства принимаются и попадают в модель, но готового вывода на экран или в файл Excel Studio не генерирует.

Цель урока#

После урока вы сможете:

  • записать layout и format так, чтобы они попали в модель;
  • предсказать, что появится в коде при target: ordinary и target: managed;
  • понять, что доделывать в Конфигураторе.

Что нужно знать#

Объяснение#

Две строки вывода:

Spec1C
layout: maket "<ИмяМакета>"
format: xlsx
  • layout: 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
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нет

Серверная часть сгенерированного кода (служебные комментарии убраны):

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

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

Табличный документ ТабДок заполняется, но никуда не выводится.

С target: ordinary тот же текст даёт только запрос и подсчёт строк:

Spec1C
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

Упражнение#

  1. Примените полный пример с target: managed и соберите файл. В модуле формы найдите ПолучитьМакет("ПечатьСписка") и две подряд строки &НаКлиенте.
  2. Замените managed на ordinary, примените и соберите. Убедитесь, что макет из кода исчез, а запрос остался.
  3. Удалите строку format: xlsx, примените и соберите. Код не изменится: выгрузки в Excel не было и раньше.

Следующий урок#

Урок 7. Поиск и исправление ошибок — поиск и исправление ошибок. Остатки и обороты регистров (balance, turnovers) в облачной среде собрать нельзя, поэтому они в учебный маршрут не входят.

См. также

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

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

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