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

Урок 1. Каркас: spec1c и report

Корень spec1c, заголовок report с title, target и section, комментарии — что из этого принимает разбор, что попадает в модель и что меняется в коде.

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

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

В этом уроке вы разберёте «шапку» любой спецификации: корень spec1c { … }, команду report и её свойства. Отдельно — какое из свойств реально меняет сгенерированный код.

Цель урока#

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

  • написать каркас спецификации с комментариями;
  • выбрать target и понимать, какой код он даёт для нового файла;
  • отличать свойства, которые только сохраняются в модели, от тех, что меняют код.

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

  • Вы прошли Быстрый старт и умеете применять текст через «Ещё» → «Применить без сборки».
  • В проекте открыта новая обработка, созданная кнопкой «Создать с нуля». Её форма — обычная: управляемую форму при создании выбрать нельзя.

Объяснение#

Корень spec1c { … } необязателен. Если текст обёрнут в него, Studio снимает обёртку и разбирает содержимое; без обёртки текст разбирается так же. Подробнее — spec1c (корень).

Комментарии начинаются с // и действуют до конца строки. Studio вырезает их до разбора.

Команда report <идентификатор> называет спецификацию. Идентификатор может быть латиницей или кириллицей. Он записывается в модель, только если в модели идентификатора ещё нет. На имя собранного файла он не влияет: файл называется так же, как обработка.

У report три свойства, каждое — имя: значение:

СвойствоЗначенияЧто происходит
titleстрока в кавычкахЗаголовок сохраняется в модели. В сгенерированном коде он виден только в служебном комментарии
targetordinary или managed, строчными буквамиОпределяет, какой код будет сгенерирован (см. ниже)
sectionцелое числоСохраняется в модели. При облачной сборке на код не влияет

Порядок свойств не важен: Studio ищет их по всему тексту спецификации.

Что меняет target#

  • target: ordinary — генерируется процедура Сформировать(Кнопка): запрос, подсчёт строк и сообщение с их числом. Макет, табличный документ и вывод на экран не генерируются.
  • target: managed — генерируется код для управляемой формы: клиентская процедура Сформировать(Команда), серверная СформироватьНаСервере(), получение макета и табличный документ. Но форма нового файла обычная, директива &НаКлиенте выводится дважды подряд, а табличный документ на форму не выводится. Скорее всего, такой модуль в 1С не скомпилируется (в 1С не проверялось).

Для нового файла выбирайте target: ordinary — это предсказуемый черновик запроса.

Полный пример#

Spec1C
// Каркас учебной спецификации
spec1c {
  report items                      // идентификатор спецификации
    title:   "Список номенклатуры"  // заголовок, попадёт в модель
    target:  ordinary               // обычная форма: запрос и число строк
    section: 0                      // номер раздела, на облачную сборку не влияет

  data {
    items = Справочник.Номенклатура
      fields: Ссылка, Код, Наименование
  }
}

Справочник.Номенклатура — пример из типовой конфигурации. Имена объектов и полей должны существовать в вашей конфигурации; Studio в облаке их не проверяет. Блок data разбирается в следующем уроке, здесь он нужен, чтобы сборка сгенерировала код.

Разбор примера#

СтрокаСмысл
// Каркас…Комментарий, вырезается до разбора
spec1c { … }Необязательная обёртка
report itemsИдентификатор items
title: "Список номенклатуры"Заголовок в модели
target: ordinaryКод для обычной формы
section: 0Число в модели, код не меняет
data { … }Источник данных — следующий урок

Тот же каркас с target: managed тоже принимается без ошибок, но даёт другой код:

Spec1C
report items
  title:  "Список номенклатуры"
  target: managed

data {
  items = Справочник.Номенклатура
    fields: Ссылка, Код
}

Начало сгенерированного кода из живой сборки (служебные комментарии убраны) — обратите внимание на повторённую директиву:

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

&НаСервере
Процедура СформироватьНаСервере()

Ожидаемый результат#

После «Ещё» → «Применить без сборки» — уведомление «Spec1C → модель · источников 1». После сборки:

УровеньЧто получится
РазборОшибок и предупреждений нет
МодельИдентификатор (если его ещё не было), заголовок, вид формы ordinary, раздел 0, один источник
ПроверкаСвойства report не проверяются
Код BSLПроцедура Сформировать(Кнопка) с запросом и сообщением о числе строк; заголовок — только в комментарии
Работа в 1СНе проверялась

Типичные ошибки#

Что видноПричинаЧто сделать
Код сгенерирован не для той формыtarget: Managed или target: обычная — значение не распознано и молча пропущеноПишите ordinary или managed строчными латинскими буквами
Удалили строку target, а вид кода прежнийУдаление свойства не сбрасывает значение в модели: остаётся последнее применённоеНе удаляйте target, а указывайте нужное значение явно. То же относится к title и section
Заголовок не изменился в моделиВ заголовке есть // (например, адрес сайта): всё после // считается комментарием, строка заголовка обрывается и не распознаётсяНе используйте // внутри строк
После применения «· 1 предупр.»В тексте нет блока data { } — это предупреждение, а не ошибкаДобавьте источник данных (Урок 2. Источники данных и поля) или оставьте как есть, если код генерировать не нужно
Поменяли идентификатор после report, а в модели старыйИдентификатор записывается, только если его в модели ещё не былоНа сборку это не влияет; оставьте как есть
section: первый не попал в модельsection принимает только числоУкажите целое число

Полный список сообщений — Сообщения об ошибках и предупреждения.

Упражнение#

  1. Примените полный пример урока и соберите файл. Найдите в модуле формы процедуру Сформировать(Кнопка).
  2. Удалите из текста весь блок data { … } и снова примените. В уведомлении появится «· 1 предупр.», а число источников останется 1: старый источник остался в модели. Верните блок на место.
  3. Поменяйте section: 0 на section: 5, примените и соберите. Сравните модуль формы с первой сборкой: процедура Сформировать не изменится.

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

Урок 2. Источники данных и поля — блок data, источники и поля.

См. также

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

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

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