Урок 1. Каркас: spec1c и report
Корень spec1c, заголовок report с title, target и section, комментарии — что из этого принимает разбор, что попадает в модель и что меняется в коде.
Перед чтением
- Быстрый старт Обучение
На этой странице
В этом уроке вы разберёте «шапку» любой спецификации: корень spec1c { … }, команду report и её свойства. Отдельно — какое из свойств реально меняет сгенерированный код.
Цель урока#
После урока вы сможете:
- написать каркас спецификации с комментариями;
- выбрать
targetи понимать, какой код он даёт для нового файла; - отличать свойства, которые только сохраняются в модели, от тех, что меняют код.
Что нужно знать#
- Вы прошли Быстрый старт и умеете применять текст через «Ещё» → «Применить без сборки».
- В проекте открыта новая обработка, созданная кнопкой «Создать с нуля». Её форма — обычная: управляемую форму при создании выбрать нельзя.
Объяснение#
Корень spec1c { … } необязателен. Если текст обёрнут в него, Studio снимает обёртку и разбирает содержимое; без обёртки текст разбирается так же. Подробнее — spec1c (корень).
Комментарии начинаются с // и действуют до конца строки. Studio вырезает их до разбора.
Команда report <идентификатор> называет спецификацию. Идентификатор может быть латиницей или кириллицей. Он записывается в модель, только если в модели идентификатора ещё нет. На имя собранного файла он не влияет: файл называется так же, как обработка.
У report три свойства, каждое — имя: значение:
| Свойство | Значения | Что происходит |
|---|---|---|
title | строка в кавычках | Заголовок сохраняется в модели. В сгенерированном коде он виден только в служебном комментарии |
target | ordinary или managed, строчными буквами | Определяет, какой код будет сгенерирован (см. ниже) |
section | целое число | Сохраняется в модели. При облачной сборке на код не влияет |
Порядок свойств не важен: Studio ищет их по всему тексту спецификации.
Что меняет target#
target: ordinary— генерируется процедураСформировать(Кнопка): запрос, подсчёт строк и сообщение с их числом. Макет, табличный документ и вывод на экран не генерируются.target: managed— генерируется код для управляемой формы: клиентская процедураСформировать(Команда), сервернаяСформироватьНаСервере(), получение макета и табличный документ. Но форма нового файла обычная, директива&НаКлиентевыводится дважды подряд, а табличный документ на форму не выводится. Скорее всего, такой модуль в 1С не скомпилируется (в 1С не проверялось).
Для нового файла выбирайте target: ordinary — это предсказуемый черновик запроса.
Полный пример#
// Каркас учебной спецификации
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 тоже принимается без ошибок, но даёт другой код:
report items
title: "Список номенклатуры"
target: managed
data {
items = Справочник.Номенклатура
fields: Ссылка, Код
}Начало сгенерированного кода из живой сборки (служебные комментарии убраны) — обратите внимание на повторённую директиву:
&НаКлиенте
&НаКлиенте
Процедура Сформировать(Команда)
СформироватьНаСервере();
КонецПроцедуры
&НаСервере
Процедура СформироватьНаСервере()Ожидаемый результат#
После «Ещё» → «Применить без сборки» — уведомление «Spec1C → модель · источников 1». После сборки:
| Уровень | Что получится |
|---|---|
| Разбор | Ошибок и предупреждений нет |
| Модель | Идентификатор (если его ещё не было), заголовок, вид формы ordinary, раздел 0, один источник |
| Проверка | Свойства report не проверяются |
| Код BSL | Процедура Сформировать(Кнопка) с запросом и сообщением о числе строк; заголовок — только в комментарии |
| Работа в 1С | Не проверялась |
Типичные ошибки#
| Что видно | Причина | Что сделать |
|---|---|---|
| Код сгенерирован не для той формы | target: Managed или target: обычная — значение не распознано и молча пропущено | Пишите ordinary или managed строчными латинскими буквами |
Удалили строку target, а вид кода прежний | Удаление свойства не сбрасывает значение в модели: остаётся последнее применённое | Не удаляйте target, а указывайте нужное значение явно. То же относится к title и section |
| Заголовок не изменился в модели | В заголовке есть // (например, адрес сайта): всё после // считается комментарием, строка заголовка обрывается и не распознаётся | Не используйте // внутри строк |
| После применения «· 1 предупр.» | В тексте нет блока data { } — это предупреждение, а не ошибка | Добавьте источник данных (Урок 2. Источники данных и поля) или оставьте как есть, если код генерировать не нужно |
Поменяли идентификатор после report, а в модели старый | Идентификатор записывается, только если его в модели ещё не было | На сборку это не влияет; оставьте как есть |
section: первый не попал в модель | section принимает только число | Укажите целое число |
Полный список сообщений — Сообщения об ошибках и предупреждения.
Упражнение#
- Примените полный пример урока и соберите файл. Найдите в модуле формы процедуру
Сформировать(Кнопка). - Удалите из текста весь блок
data { … }и снова примените. В уведомлении появится «· 1 предупр.», а число источников останется 1: старый источник остался в модели. Верните блок на место. - Поменяйте
section: 0наsection: 5, примените и соберите. Сравните модуль формы с первой сборкой: процедураСформироватьне изменится.
Следующий урок#
Урок 2. Источники данных и поля — блок data, источники и поля.
См. также
- spec1c (корень) Справочник
- report Справочник
- Лексическая структура Справочник
- Соответствие конструкций и BSL Справочник
Сверено с продуктом: 27.10.2026