Модель спецификации
Какие элементы Studio получает из текста Spec1C, как они накладываются на модель отчёта при применении и что из них используется при генерации кода.
Перед чтением
- Модель отчёта Понятие
На этой странице
Модель спецификации — результат разбора текста: набор элементов, которые Studio нашла в Spec1C. При применении эти элементы накладываются на модель отчёта проекта (Модель отчёта). Ниже — какие элементы бывают и по каким правилам они меняют модель отчёта.
Назначение#
Страница отвечает на вопросы: что именно Studio «поняла» из текста, что из этого сохранится в проекте и что потом используется при сборке. Это нужно, чтобы предсказывать результат применения и объяснять расхождения между текстом и кодом.
Элементы модели#
| Элемент | Из какой конструкции | Как меняет модель отчёта при применении | Используется при генерации кода |
|---|---|---|---|
| Идентификатор отчёта | report <id> | записывается, только если у модели ещё нет идентификатора | нет |
| Заголовок | title: "…" | заменяет, если задан | только в служебном комментарии |
| Вид формы | target: ordinary|managed | заменяет, если задан | да — выбирает вариант кода |
| Номер раздела | section: N | заменяет, если задан | нет (в облачной сборке) |
| Параметры | известные имена в params | заменяет каждый заданный параметр | нет |
| Источники и их поля | привязки в data, fields | заменяют список целиком, если в тексте есть хотя бы один источник | да — таблицы и поля запроса |
| Соединения | строки |> | заменяют список целиком, если в тексте есть хотя бы одно | да — всегда как левое соединение |
Строка rows | rows = … | в модель отчёта не переносится | нет |
| Поле периода | where, filter period on | заменяет, если найдено | да — условие МЕЖДУ |
| Просмотр метаданных | show | заменяет список, если есть хотя бы одна команда | нет |
| Списки на форме | include list | заменяют список, если есть хотя бы одна команда | нет |
| Запросы к регистрам | balance, turnovers | заменяют список, если есть хотя бы одна команда | да, но в облачной среде сборка останавливается на проверке |
| Имя макета | layout: maket "…" | заменяет, если задано | только при target: managed |
| Выгрузка в Excel | format: xlsx | включает, если есть; выключить из текста нельзя | нет |
| Предупреждения | — | не сохраняются, показываются в уведомлении | — |
| Ошибки | — | при любой ошибке модель не меняется | — |
Правила наложения#
- Ошибка — ничего не меняется. Если разбор вернул хотя бы одну ошибку, применение отменяется целиком.
- Предупреждение — не помеха. «нет блока data { }» не мешает применению.
- Только то, что есть в тексте. Отсутствующая в тексте конструкция не сбрасывает соответствующий элемент модели. Удалённый
whereоставляет прежнее поле периода, удалённыйtarget— прежний вид формы, удалённый блокdata— прежние источники. - Списки заменяются целиком. Если в тексте есть хотя бы один источник, список источников модели заменяется списком из текста. Удалить один источник из нескольких можно: просто оставьте в тексте остальные. Удалить последний — нельзя. Так же устроены соединения: если убрать из текста единственное соединение, оно останется в модели и попадёт в запрос.
- Включённую выгрузку в Excel из текста не выключить.
format: xlsxтолько включает признак; чтобы выключить, снимите флажок «Сохранить в Excel (.xlsx)» на вкладке Intent «Вывод».
Пример: что останется после замены текста#
Сначала применяется спецификация с полем периода:
report contracts
data {
contracts = Справочник.КлиентскиеДоговора
fields: Ссылка, Код, ДатаДоговора
where ДатаДоговора between ПериодT
}Затем — спецификация без where:
report contracts
data {
contracts = Справочник.КлиентскиеДоговора
fields: Ссылка, Код
}Вторая спецификация сама по себе поля периода не содержит, но после её применения модель сохранит ДатаДоговора, и сборка сгенерирует условие ГДЕ … ДатаДоговора МЕЖДУ …. Именно так произошло в живой сборке. Чтобы избавиться от поля периода, создайте новый файл и примените вторую спецификацию в нём.
Как увидеть модель#
- Уведомление после «Применить без сборки»: «Spec1C → модель · источников N», плюс «· N предупр.», «· inspect N», «· include list N», «· queries N», «· 3.5 ошибок N». Число источников — из модели отчёта после наложения.
- Вкладка Intent «Данные»: источники, поля, соединения.
- Вкладка Intent «Вывод»: имя макета и флажок «Сохранить в Excel (.xlsx)».
- «Ещё» → «Проверить модель Spec1C»: строка «Форма ordinary: …» или «Форма managed: …» показывает вид формы в модели.
Ограничения#
- Модель накапливается: удалить элемент, убрав его из текста, нельзя (кроме удаления части списка, когда в тексте остаётся хотя бы один элемент).
rowsи каталог выгрузки на код не влияют.- Параметры и номер раздела хранятся, но генерацией не используются.
- Как элементы модели превращаются в код — Соответствие конструкций и BSL; полный список ограничений — Ограничения реализации.
См. также
- Соответствие конструкций и BSL Справочник
- Модель отчёта Понятие
- Разрешение имён Справочник
- Матрица поддержки конструкций Справочник
- Применить спецификацию без сборки Руководство
Сверено с продуктом: 27.10.2026