Неподдерживаемые конструкции
Какие конструкции разбор 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: "…". Разбор их пропускает: правки в этих блоках не переносятся в модель, а если текст будет построен из модели заново (например, после «Ещё» → «Отменить изменения»), они пропадут. Меняйте только поддерживаемые конструкции.
Как убедиться, что конструкция пропущена#
Сообщения об ошибке не будет. Проверьте результат:
- «Ещё» → «Применить без сборки» — в уведомлении
Spec1C → модель · источников Nуказаны только распознанные источники и команды. - Вкладки Intent («Данные», «Вывод») показывают то, что попало в модель.
- В собранном файле код появляется только для конструкций из Соответствие конструкций и BSL.
Пример: текст ниже разбирается без единой ошибки и предупреждения, но в модель попадает только источник main с двумя полями — блоки compute, form, строки template:, refs, find, calls и output … mapping пропущены.
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.
report demo
data {
main = Справочник.Номенклатура
fields: Ссылка, Дата
}
select Ссылка from main where Дата > 1 into тзЗдесь select пропущен, но поле периода Дата в модель попало.
Ограничения#
- Неподдерживаемые конструкции не вызывают ни ошибки, ни предупреждения; заметить их можно только по результату.
- Список составлен по текущей реализации разбора; слова, которых нет ни в справочнике, ни в этом списке, тоже пропускаются.
- Подсветка и подсказки редактора не совпадают с набором поддерживаемых слов — пункт 27 в Ограничения реализации.
См. также
- Ограничения реализации Справочник
- Матрица поддержки конструкций Справочник
- view Справочник
- Выбрать: Spec1C или правка BSL Руководство
Сверено с продуктом: 27.10.2026