Smart1Spec Документация
Studio
СправочникИзучающий Spec1C

Структура файла и вложенность

В каком порядке писать блоки Spec1C, что может быть внутри data и params и к какому источнику относится строка fields.

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

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

Спецификация — это набор свойств, блоков и команд, записанных в свободном порядке. Вложенность в языке неглубокая: внутри params и data других блоков нет.

Назначение#

Страница объясняет, где в тексте может стоять каждая конструкция, что разрешено внутри блоков и как Studio решает, к какому источнику относится список полей. Формальная грамматика — Грамматика.

Общий вид#

Рекомендуемый порядок — от общего к частному:

Spec1C
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.

Spec1C
data {
  contracts = Справочник.КлиентскиеДоговора
    fields: Ссылка, Код          // поля contracts

  amendments = РегистрСведений.ДокументыИзменяющиеУсловияДоговора
    fields: Договор, Период      // поля amendments
}

Особые случаи:

  • fields до первой привязки не относится ни к чему и пропускается.
  • Две строки fields подряд под одной привязкой: учитывается последняя, она заменяет первую.
  • Привязка и fields на одной строке (a = Справочник.Номенклатура fields: Ссылка) не распознаются: пропадает и источник, и поля.
  • Привязки к видам РегистрБухгалтерии, Перечисление, Обработка, Отчет создают источник, но строка fields под такой привязкой относится к предыдущему источнику и заменяет его поля. Сам источник остаётся без полей.

Пример последнего случая — разбирается без ошибок, но поля попадают не туда:

Spec1C
data {
  goods = Справочник.Номенклатура
    fields: Ссылка
  entries = РегистрБухгалтерии.Хозрасчетный
    fields: Счет, Сумма
}

После применения у goods будут поля Счет, Сумма, а у entries — ни одного. Задать поля источнику этих видов сейчас нельзя. Не пишите строку fields под такой привязкой, чтобы не испортить поля предыдущего источника, и проверяйте поля на вкладке Intent «Данные».

Ограничения#

  • Только один блок params и один блок data.
  • } внутри блока завершает его.
  • fields привязывается по положению в тексте; под привязкой к РегистрБухгалтерии, Перечисление, Обработка, Отчет — к предыдущему источнику.
  • Ошибок о нарушении структуры нет: всё нераспознанное молча пропускается.
  • Полный список ограничений — Ограничения реализации.

См. также

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

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

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