Естественный язык, Spec1C и BSL
Чем отличаются описание задачи словами, спецификация Spec1C и код BSL, что даёт Spec1C на практике и чего он не обещает.
Перед чтением
- Язык Spec1C: обзор Обзор
На этой странице
Одну и ту же задачу в Smart1Spec Studio можно описать тремя способами: словами, на языке Spec1C и кодом BSL. Эта страница объясняет, чем они отличаются и где каждый из них уместен.
Коротко#
- Естественный язык — свободное описание задачи для человека. Studio не выполняет его как инструкцию.
- Spec1C — короткий текст с жёсткой структурой: откуда брать данные, как их соединять, по какому полю отбирать период, как назвать макет. Studio разбирает этот текст, проверяет то, что умеет проверить, и по нему генерирует часть кода.
- BSL — код модулей 1С. Его выполняет платформа 1С, а не Studio.
Spec1C описывает только ограниченный набор элементов отчёта или обработки. Всё остальное по-прежнему пишется на BSL.
Три уровня описания#
| Уровень | Где в Studio | Кто читает | Что с ним происходит |
|---|---|---|---|
| Естественный язык | этап Intent, вкладка «Конструктор» | человек | хранится в проекте, Studio его не исполняет |
| Spec1C | этап Spec1C | Studio | разбор, модель, проверки, генерация кода при сборке |
| BSL | этап Source и собранный файл | платформа 1С | выполняется в 1С после скачивания файла |
Пример одной задачи на трёх уровнях. Словами: «Покажи договоры клиентов с кодом и датой договора за выбранный период».
На Spec1C:
spec1c {
report contracts
title: "Договоры клиентов"
target: ordinary
data {
contracts = Справочник.КлиентскиеДоговора
fields: Ссылка, Код, ДатаДоговора
where ДатаДоговора between ПериодT
}
}В BSL после сборки (фрагмент модуля формы из живой сборки, служебные комментарии убраны):
Процедура Сформировать(Кнопка)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КлиентскиеДоговора.Ссылка КАК Ссылка,
| КлиентскиеДоговора.Код КАК Код,
| КлиентскиеДоговора.ДатаДоговора КАК ДатаДоговора
|ИЗ
| Справочник.КлиентскиеДоговора КАК КлиентскиеДоговора
|ГДЕ
| КлиентскиеДоговора.ДатаДоговора МЕЖДУ &ДатаНачПериода И &ДатаКонПериода
|";
Запрос.УстановитьПараметр("ДатаНачПериода", ДатаНачПериода);
Запрос.УстановитьПараметр("ДатаКонПериода", ДатаКонПериода);
РезультатЗапроса = Запрос.Выполнить();
// ... подсчёт строк и сообщение с их числом
КонецПроцедурыСлова «за выбранный период» в Spec1C превратились в одно поле периода, а в BSL — в условие МЕЖДУ и два параметра запроса. Реквизитов ДатаНачПериода и ДатаКонПериода в новом файле нет: их нужно добавить на форму в Конфигураторе.
Что даёт Spec1C на практике#
- Структура вместо свободного текста. Блоки
report,params,dataи отдельные команды задают, что именно нужно, без двусмысленностей естественного языка. - Предсказуемый результат. Разбор и генерация работают по фиксированным правилам и не используют модель ИИ: один и тот же текст разбирается одинаково. Учтите одну особенность: удалённые из текста блоки не всегда удаляются из модели — см. Модель спецификации.
- Проверки до сборки. Ошибки разбора показываются при применении спецификации; «Проверить модель Spec1C» сообщает о замечаниях к модели. Подробнее — Уровни диагностики.
- Подсказки в редакторе. Ctrl+Space предлагает ключевые слова и имена реквизитов обработки.
- Хранение в проекте. Текст спецификации сохраняется вместе с проектом и восстанавливается при повторном открытии; его можно сохранить в файл командой «Скачать Spec1C».
- Генерация запроса. При сборке Studio пишет по спецификации текст запроса в модуль формы собранного файла. Как это устроено — Генерация BSL и зоны генерации.
Чего Spec1C не обещает#
- Не заменяет BSL. Проведение, обработчики событий формы, обмен, сложные расчёты на Spec1C не описываются.
- Не восстанавливает существующую обработку. Если вы загрузили свой файл
.epfили.erf, спецификация описывает не его форму и код, а только то, что вы зададите в ней сами. - Не выполняется в 1С. Файл
.spec1c— описание для Studio; платформа 1С его не открывает и не запускает. - Не проверяет конфигурацию в облачной среде. Имена справочников, регистров и полей не сверяются: опечатка обнаружится только в 1С.
- Не гарантирует, что код работает в 1С. Успешная сборка означает, что файл собран. Компиляцию модуля и работу запроса проверяет только 1С.
- Не даёт готовый отчёт на экране. Для нового файла сгенерированный код — черновик запроса, который нужно доработать в Конфигураторе.
Полный список того, что текущая версия не делает, — Ограничения реализации; что из конструкций языка на каком уровне поддерживается — Матрица поддержки конструкций.
Когда что выбирать#
| Задача | Удобнее |
|---|---|
| Объяснить коллеге, что нужно получить | естественный язык (Intent) |
| Описать источники данных, соединение, поле периода, имя макета | Spec1C |
| Поправить текст сообщения, условие, процедуру в готовом модуле | BSL на этапе Source |
| Логика, которой нет в языке | BSL |
Подробный разбор выбора — Выбрать: Spec1C или правка BSL.
Что из этого следует#
- Начинайте со Spec1C, когда задача сводится к выборке данных из объектов конфигурации; всё остальное дописывайте на BSL.
- Не ожидайте от Spec1C больше, чем есть в справочнике: конструкция, которой нет в Матрица поддержки конструкций, ни на что не влияет, даже если редактор её подсвечивает.
- После сборки проверяйте результат в 1С: только там видно, компилируется ли модуль и работает ли запрос.
- Как Studio проходит путь от текста до файла, описано в Как Studio обрабатывает спецификацию.
См. также
- Выбрать: Spec1C или правка BSL Руководство
- Как Studio обрабатывает спецификацию Понятие
- Генерация BSL и зоны генерации Понятие
- Матрица поддержки конструкций Справочник
- Ограничения реализации Справочник
Сверено с продуктом: 27.10.2026