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

Неподдерживаемые конструкции

Какие конструкции разбор Spec1C не понимает и молча пропускает, почему подсветка в редакторе не означает поддержку и чем заменить такие конструкции.

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

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

Разбор Spec1C понимает ограниченный набор конструкций. Всё остальное он пропускает без ошибки и без предупреждения: текст выглядит принятым, но ни на что не влияет.

Назначение#

Страница перечисляет конструкции, которые можно встретить в примерах, в подсветке редактора или в тексте, построенном Studio из Intent, но которые текущая реализация не обрабатывает. Если вы пишете такую конструкцию, результат нужно делать вручную в BSL — см. Выбрать: Spec1C или правка BSL.

Список#

КонструкцияЧто происходитЧем заменить
compute { … }пропускается; вычисления не выполняются и в код не попадаютвычисления в модуле формы в Конфигураторе или в этапе Source
form { … } как описание формыпропускается; форма не меняетсяредактирование формы в Конфигураторе. Слово form распознаётся только внутри include list … in form … as …
screen { … }, actions { … }, bind …пропускаются—
select … intoпропускается как запрос; но слово where внутри задаёт поле периода (см. ниже)источники в data { } и fields
output … mappingпропускаетсявывод в Конфигураторе; макет — layout: maket "…" (только при target: managed)
refs, find, callsпропускаются—
template: "…"пропускается—
типы параметров кроме bool и Path (Period, Date, string, number)строка принимается, параметр в модель не попадаетреквизиты формы в Конфигураторе
параметры bool с неизвестными именамистрока принимается, параметр теряетсятолько известные имена — см. params
conf.… в пути метаданныхне распознаётся как путьпути вида Справочник.Имя — см. Ссылки на метаданные

Подсветка не означает поддержку#

Редактор Spec1C подсвечивает как ключевые слова и такие слова, которых разбор не понимает: compute, select, from, output, form, Period, Date. Пути с conf выделяются как тип. Список подсказок по Ctrl+Space предлагает слово output, которого в языке нет.

Обратное тоже верно: часть поддерживаемых слов (title, target, section, rows, filter, period, between, attributes, structure, maket, format, xlsx) не подсвечивается. Ориентируйтесь на справочник, а не на цвет в редакторе: Указатель ключевых слов.

Текст, который Studio строит из Intent#

Если вы не меняли спецификацию вручную, Studio показывает текст, построенный по модели Intent. В нём могут быть блоки compute { … }, screen { … }, расширенный view { … } с actions и bind, параметр ПериодT : Period, строка template: "…". Разбор их пропускает: правки в этих блоках не переносятся в модель, а если текст будет построен из модели заново (например, после «Ещё» → «Отменить изменения»), они пропадут. Меняйте только поддерживаемые конструкции.

Как убедиться, что конструкция пропущена#

Сообщения об ошибке не будет. Проверьте результат:

  1. «Ещё» → «Применить без сборки» — в уведомлении Spec1C → модель · источников N указаны только распознанные источники и команды.
  2. Вкладки Intent («Данные», «Вывод») показывают то, что попало в модель.
  3. В собранном файле код появляется только для конструкций из Соответствие конструкций и BSL.

Пример: текст ниже разбирается без единой ошибки и предупреждения, но в модель попадает только источник main с двумя полями — блоки compute, form, строки template:, refs, find, calls и output … mapping пропущены.

Spec1C
spec1c {
  report demo
    title:  "Пропущенные конструкции"
    target: ordinary

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

  compute {
    Итого = Цена * Количество
  }

  form {
    button Печать
  }

  template: "Шаблон"
  refs Справочник.Номенклатура
  find Ссылка
  calls Печать
  output Таблица mapping { Колонка = Код }
}

Случайные совпадения#

Разбор ищет поддерживаемые слова по всему тексту. Поэтому часть неподдерживаемой конструкции может случайно сработать:

  • where Поле … внутри select … where … задаёт поле периода, и в коде появится ГДЕ <Таблица>.Поле МЕЖДУ &ДатаНачПериода И &ДатаКонПериода;
  • layout: maket "…" и format: xlsx находятся в любом месте текста, не только внутри view { … } — см. view.
Spec1C
report demo
data {
  main = Справочник.Номенклатура
    fields: Ссылка, Дата
}
select Ссылка from main where Дата > 1 into тз

Здесь select пропущен, но поле периода Дата в модель попало.

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

  • Неподдерживаемые конструкции не вызывают ни ошибки, ни предупреждения; заметить их можно только по результату.
  • Список составлен по текущей реализации разбора; слова, которых нет ни в справочнике, ни в этом списке, тоже пропускаются.
  • Подсветка и подсказки редактора не совпадают с набором поддерживаемых слов — пункт 27 в Ограничения реализации.

См. также

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

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

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