Структура файла и вложенность
В каком порядке писать блоки Spec1C, что может быть внутри data и params и к какому источнику относится строка fields.
Перед чтением
- Грамматика Справочник
На этой странице
Спецификация — это набор свойств, блоков и команд, записанных в свободном порядке. Вложенность в языке неглубокая: внутри params и data других блоков нет.
Назначение#
Страница объясняет, где в тексте может стоять каждая конструкция, что разрешено внутри блоков и как Studio решает, к какому источнику относится список полей. Формальная грамматика — Грамматика.
Общий вид#
Рекомендуемый порядок — от общего к частному:
spec1c {
// 1. Заголовок
report contracts
title: "Договоры клиентов"
target: ordinary
// 2. Параметры
params {
ТолькоДействующиеНаКонец : bool = true
}
// 3. Данные
data {
contracts = Справочник.КлиентскиеДоговора
fields: Ссылка, Код, ДатаДоговора
amendments = РегистрСведений.ДокументыИзменяющиеУсловияДоговора
fields: Договор, Период
rows = contracts
|> left_join amendments on amendments.Договор == contracts.Ссылка
where ДатаДоговора between ПериодT
}
// 4. Вывод
layout: maket "Макет"
// 5. Команды
show attributes Справочник.КлиентскиеДоговора
}Порядок на результат не влияет: разбор ищет каждую конструкцию по всему тексту. Рекомендуемый порядок совпадает с тем, как текст строит сама Studio, и его проще читать.
Уровни вложенности#
| Уровень | Что здесь пишут |
|---|---|
Корень spec1c { … } (необязателен) | всё остальное |
| Верхний уровень | report, title, target, section, блоки params, data, view, layout, format, команды show, include list, balance, turnovers |
Внутри params { } | объявления параметров, по одному на строке |
Внутри data { } | привязки источников, fields, соединения |>, rows, where или filter period on |
Внутри view { } | любой текст; учитываются только layout и format |
Свойства title, target, section обычно пишут с отступом под report, но отступ ни на что не влияет: они могут стоять в любом месте текста.
Блоки params и data#
- Блок плоский: внутри нет вложенных блоков.
- Блок заканчивается на первой
}. Фигурная скобка внутри строки или внутри/* … */завершит блок досрочно, и всё после неё будет потеряно. - Учитывается только первый блок
paramsи первый блокdata. Второй блокdataс другими источниками молча пропускается — объединяйте все источники в одном блоке.
Команды вне data#
show, include list, balance, turnovers, layout, format пишутся на верхнем уровне. Разбор находит их в любом месте текста, но внутри data или params такие строки затрудняют чтение и могут оказаться после досрочно закрытого блока.
where и filter period on принято писать внутри data. Если внутри data их нет, Studio ищет их во всём тексте.
К какому источнику относится fields#
Строка fields: относится к последней привязке источника выше неё в блоке data.
data {
contracts = Справочник.КлиентскиеДоговора
fields: Ссылка, Код // поля contracts
amendments = РегистрСведений.ДокументыИзменяющиеУсловияДоговора
fields: Договор, Период // поля amendments
}Особые случаи:
fieldsдо первой привязки не относится ни к чему и пропускается.- Две строки
fieldsподряд под одной привязкой: учитывается последняя, она заменяет первую. - Привязка и
fieldsна одной строке (a = Справочник.Номенклатура fields: Ссылка) не распознаются: пропадает и источник, и поля. - Привязки к видам
РегистрБухгалтерии,Перечисление,Обработка,Отчетсоздают источник, но строкаfieldsпод такой привязкой относится к предыдущему источнику и заменяет его поля. Сам источник остаётся без полей.
Пример последнего случая — разбирается без ошибок, но поля попадают не туда:
data {
goods = Справочник.Номенклатура
fields: Ссылка
entries = РегистрБухгалтерии.Хозрасчетный
fields: Счет, Сумма
}После применения у goods будут поля Счет, Сумма, а у entries — ни одного. Задать поля источнику этих видов сейчас нельзя. Не пишите строку fields под такой привязкой, чтобы не испортить поля предыдущего источника, и проверяйте поля на вкладке Intent «Данные».
Ограничения#
- Только один блок
paramsи один блокdata. }внутри блока завершает его.fieldsпривязывается по положению в тексте; под привязкой кРегистрБухгалтерии,Перечисление,Обработка,Отчет— к предыдущему источнику.- Ошибок о нарушении структуры нет: всё нераспознанное молча пропускается.
- Полный список ограничений — Ограничения реализации.
См. также
- data Справочник
- fields Справочник
- spec1c (корень) Справочник
- Грамматика Справочник
- Лексическая структура Справочник
Сверено с продуктом: 27.10.2026