Smart1Spec Документация
Studio
Понятие

Естественный язык, Spec1C и BSL

Чем отличаются описание задачи словами, спецификация Spec1C и код BSL, что даёт Spec1C на практике и чего он не обещает.

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

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

Одну и ту же задачу в Smart1Spec Studio можно описать тремя способами: словами, на языке Spec1C и кодом BSL. Эта страница объясняет, чем они отличаются и где каждый из них уместен.

Коротко#

  • Естественный язык — свободное описание задачи для человека. Studio не выполняет его как инструкцию.
  • Spec1C — короткий текст с жёсткой структурой: откуда брать данные, как их соединять, по какому полю отбирать период, как назвать макет. Studio разбирает этот текст, проверяет то, что умеет проверить, и по нему генерирует часть кода.
  • BSL — код модулей 1С. Его выполняет платформа 1С, а не Studio.

Spec1C описывает только ограниченный набор элементов отчёта или обработки. Всё остальное по-прежнему пишется на BSL.

Три уровня описания#

УровеньГде в StudioКто читаетЧто с ним происходит
Естественный языкэтап Intent, вкладка «Конструктор»человекхранится в проекте, Studio его не исполняет
Spec1Cэтап Spec1CStudioразбор, модель, проверки, генерация кода при сборке
BSLэтап Source и собранный файлплатформа 1Свыполняется в 1С после скачивания файла

Пример одной задачи на трёх уровнях. Словами: «Покажи договоры клиентов с кодом и датой договора за выбранный период».

На Spec1C:

Spec1C
spec1c {
  report contracts
    title:  "Договоры клиентов"
    target: ordinary

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

    where ДатаДоговора between ПериодT
  }
}

В BSL после сборки (фрагмент модуля формы из живой сборки, служебные комментарии убраны):

BSL
Процедура Сформировать(Кнопка)
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	КлиентскиеДоговора.Ссылка КАК Ссылка,
	|	КлиентскиеДоговора.Код КАК Код,
	|	КлиентскиеДоговора.ДатаДоговора КАК ДатаДоговора
	|ИЗ
	|	Справочник.КлиентскиеДоговора КАК КлиентскиеДоговора
	|ГДЕ
	|	КлиентскиеДоговора.ДатаДоговора МЕЖДУ &ДатаНачПериода И &ДатаКонПериода
	|";
	Запрос.УстановитьПараметр("ДатаНачПериода", ДатаНачПериода);
	Запрос.УстановитьПараметр("ДатаКонПериода", ДатаКонПериода);
	РезультатЗапроса = Запрос.Выполнить();
	// ... подсчёт строк и сообщение с их числом
КонецПроцедуры

Слова «за выбранный период» в Spec1C превратились в одно поле периода, а в BSL — в условие МЕЖДУ и два параметра запроса. Реквизитов ДатаНачПериода и ДатаКонПериода в новом файле нет: их нужно добавить на форму в Конфигураторе.

Что даёт Spec1C на практике#

  1. Структура вместо свободного текста. Блоки report, params, data и отдельные команды задают, что именно нужно, без двусмысленностей естественного языка.
  2. Предсказуемый результат. Разбор и генерация работают по фиксированным правилам и не используют модель ИИ: один и тот же текст разбирается одинаково. Учтите одну особенность: удалённые из текста блоки не всегда удаляются из модели — см. Модель спецификации.
  3. Проверки до сборки. Ошибки разбора показываются при применении спецификации; «Проверить модель Spec1C» сообщает о замечаниях к модели. Подробнее — Уровни диагностики.
  4. Подсказки в редакторе. Ctrl+Space предлагает ключевые слова и имена реквизитов обработки.
  5. Хранение в проекте. Текст спецификации сохраняется вместе с проектом и восстанавливается при повторном открытии; его можно сохранить в файл командой «Скачать Spec1C».
  6. Генерация запроса. При сборке 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 обрабатывает спецификацию.

См. также

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

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

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