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

Библиотека примеров

Семь примеров спецификаций Spec1C с задачей, текстом, тем, что попадает в модель и в код, и честным итогом проверки — от минимального до исправления ошибки.

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

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

Каждый пример можно вставить в редактор Spec1C целиком. Для каждого указано, что попадает в модель, какой код появится в собранном файле, что проверено живой сборкой и чего ожидать в 1С.

Назначение#

Библиотека — готовые образцы для старта и для сравнения со своей спецификацией. Примеры используют объекты одной конкретной конфигурации (Справочник.КлиентскиеДоговора, РегистрСведений.ДокументыИзменяющиеУсловияДоговора). В вашей базе их, скорее всего, нет: замените пути и поля на свои, иначе запрос не выполнится в 1С. Studio имена объектов не проверяет.

Как читать итоги проверки#

Что провереноКак
Разборавтоматически при сборке документации: пример разбирается без ошибок, а утверждения о модели (число источников, вид соединения и т. п.) выполняются
Сборкаживая сборка в локальной Studio с облачной сборкой: «Применить без сборки» → «Собрать .epf» → «Скачать .epf», файл распакован, модуль формы прочитан
Работа в 1Сне проверялась ни для одного примера; приведено ожидание по тексту кода

Пример 1. Минимальная спецификация#

Задача: обработка с одним справочником и двумя полями.

Spec1C
spec1c {
  report blank
    title:  "BlankPhase4"
    target: ordinary
    section: 0

  data {
    contracts = Справочник.КлиентскиеДоговора
      fields: Ссылка, Код
  }
}
  • Модель: один источник contracts с полями Ссылка, Код; вид формы — обычная. Уведомление «Spec1C → модель · источников 1».
  • Код: вариант обычной формы — процедура Сформировать(Кнопка) с запросом из двух полей, циклом подсчёта и сообщением с числом строк. Макета и вывода на экран нет.
  • Проверено: живая сборка прошла, файл скачан, в модуле формы между маркерами зоны — именно этот запрос (фрагмент — Соответствие конструкций и BSL). «Проверить модель Spec1C» дала одно замечание о незагруженной конфигурации — оно не мешает сборке.
  • В 1С: не проверялось. Ожидаемо при наличии справочника в вашей конфигурации кнопка формы выполнит запрос и покажет сообщение с числом строк.

Пример 2. Параметры#

Задача: те же данные плюс флаги выгрузки.

Spec1C
spec1c {
  report demo
    title:  "Демо с параметрами"
    target: managed
    section: 0

  params {
    ТолькоДействующиеНаКонец  : bool = true
    ВыгружатьXLSX             : bool = false
    КаталогВыгрузки           : Path = ""
  }

  data {
    main = Справочник.КлиентскиеДоговора
      fields: Ссылка, Код, ДатаДоговора
  }
}
  • Модель: три параметра сохраняются: «только действующие» — да, выгрузка в Excel — нет, каталог выгрузки — пустая строка. Один источник main с тремя полями.
  • Код: параметры в код не попадают. Из-за target: managed генерируется вариант управляемой формы (по коду генератора).
  • Проверено: только разбор; живой сборкой этот пример не проверялся.
  • В 1С: не проверялось. Для нового файла с обычной формой вариант managed ожидаемо не скомпилируется (повторённая директива &НаКлиенте). Чтобы получить работающий черновик, замените target: managed на target: ordinary.

Пример 3. Источники, соединение и период#

Задача: договоры со сведениями из регистра изменений условий и отбором по дате договора.

Spec1C
spec1c {
  report r1
    title:  "Раздел 1 Договоры"
    target: managed
    section: 1

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

    amendments = РегистрСведений.ДокументыИзменяющиеУсловияДоговора
      fields: Договор, Период, АвторЗаписи, ДатаДокумента

    rows = contracts
      |> left_join amendments on amendments.Договор == contracts.Ссылка

    where ДатаДоговора between ПериодT
  }
}
  • Модель: два источника, левое соединение по полям Договор и Ссылка, поле периода ДатаДоговора. На вкладке Intent → «Данные» видна связь «Договор = Ссылка · left_join». Строка rows сохраняется, но ни на что не влияет; из between ПериодT запоминается только имя поля.
  • Код: запрос из восьми полей с ЛЕВОЕ СОЕДИНЕНИЕ и условием ГДЕ КлиентскиеДоговора.ДатаДоговора МЕЖДУ &ДатаНачПериода И &ДатаКонПериода. При target: managed — вариант управляемой формы с макетом "Макет".
  • Проверено: живая сборка прошла (вариант managed); перед сборкой загруженного файла Studio запросила подтверждение. Контрольная сборка того же текста с target: ordinary дала вариант обычной формы с тем же запросом — section: 1 на вид кода не повлиял.
  • В 1С: не проверялось. Ожидаемы ошибки: реквизитов ДатаНачПериода и ДатаКонПериода в новом файле нет, макета нет, директива &НаКлиенте повторена. Для черновика используйте target: ordinary и добавьте реквизиты периода в Конфигураторе.

Пример 4. Вывод: макет и Excel#

Задача: указать макет печати и признак выгрузки в Excel.

Spec1C
spec1c {
  report r1
    title:  "Печать"
    target: managed
    section: 1

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

  view {
    print УчетныйЛист
      layout: maket "м_Раздел_1_Договоры"
    export ExcelУчетный
      format: xlsx
  }
}
  • Модель: один источник, имя макета м_Раздел_1_Договоры, признак Excel. Слова print и export внутри view ни на что не влияют.
  • Код: вариант управляемой формы с ПолучитьМакет("м_Раздел_1_Договоры") и выводом областей «Шапка» и «Строка» в табличный документ. Кода сохранения в Excel нет.
  • Проверено: живая сборка прошла; в модуле формы — ПолучитьМакет("м_Раздел_1_Договоры"), кода Excel нет. В собранном коде оказалось и условие периода по ДатаДоговора — это остаток примера 3, собранного перед этим в том же файле: сам пример 4 фильтра не задаёт.
  • В 1С: не проверялось. Макета с таким именем в новом файле нет — ожидаема ошибка при формировании; кроме того, действуют ограничения варианта managed из примера 3.

Пример 5. Просмотр метаданных и остатки#

Задача: показать в инспекторе реквизиты справочника и получить остатки регистра накопления в таблицу значений.

Spec1C
spec1c {
  report ostatki
    title:  "Остатки по договорам"
    target: ordinary

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

  show attributes Справочник.КлиентскиеДоговора

  balance РегистрНакопления.Активы
    at epf.ДатаКонПериода
    by Договор, Портфель
    into epf.тзОстатки
}
  • Модель: источник, команда просмотра метаданных, запрос остатков с двумя измерениями. Уведомление после «Применить без сборки» содержит «· inspect 1 · queries 1 · 3.5 ошибок 1».
  • Код: в облачной среде не появляется.
  • Проверено: спецификация с show и balance вживую остановила сборку сообщением «Сборка остановлена: 3.5: нет пути conf — нельзя проверить by по Index»: проверка измерений требует конфигурацию, которую в облачной среде загрузить нельзя. Инспектор без конфигурации показывает ошибку.
  • В 1С: нечего проверять. Пример показывает запись команд языка; собрать его в облачной среде нельзя. Подробнее — balance и Сообщения об ошибках и предупреждения.

Пример 6. Исправление пустой спецификации#

Было:

Spec1C
spec1c {
}

Такой же пустой каркас Studio подставляет в спецификацию нового файла. «Применить без сборки» показывает «Spec1C пуст — заполните Intent / Данные или введите спецификацию»; «Собрать .epf» после правки текста — «Сначала исправьте ошибки в Spec1C» (проверено вживую). Если в каркасе есть только комментарии, сообщение будет «Spec1C: пустой Spec1C».

Стало:

Spec1C
spec1c {
  report blank
    title:  "ПослеИсправления"
    target: ordinary
    section: 0

  data {
    main = Справочник.КлиентскиеДоговора
      fields: Ссылка, Код
  }
}
  • Модель и код: как в примере 1 — один источник, вариант обычной формы с запросом из двух полей.
  • Проверено: разбор; код по построению совпадает с живой сборкой примера 1 (тот же текст, отличаются только заголовок и имя источника).
  • В 1С: не проверялось; ожидание — как в примере 1.

Пример 7. Изменение существующей спецификации#

Задача: в проекте, где уже сохранён пример 6, поменять заголовок и добавить поле.

Spec1C
spec1c {
  report blank
    title:  "Договоры с датой"
    target: ordinary

  data {
    main = Справочник.КлиентскиеДоговора
      fields: Ссылка, Код, ДатаДоговора
  }
}
  1. Откройте проект и этап Spec1C — спецификация хранится в проекте и подставляется при открытии.
  2. Измените title и строку fields.
  3. «Ещё» → «Применить без сборки» — появится уведомление «Spec1C → модель · источников 1».
  4. Нажмите «Собрать .epf», затем «Скачать .epf». В запросе появится третье поле.

Заменять строки безопасно. Удалять блоки — нет: например, удалённое условие where останется в модели и в следующей сборке. Логику, которой нет в языке, дописывайте в BSL на этапе Source — см. Выбрать: Spec1C или правка BSL.

Сводка проверок#

ПримерРазборЖивая сборкаВариант кода1С
1. Минимальнаядадаобычная формане проверялось
2. Параметрыданетуправляемая форма (по коду)не проверялось
3. Соединение и периоддада (и контроль с ordinary)управляемая формане проверялось
4. Выводдадауправляемая формане проверялось
5. Метаданные и остаткидасборка остановлена——
6. Исправление ошибкиошибка «пустой Spec1C» → данет (совпадает с примером 1)обычная формане проверялось
7. Изменениеданетобычная формане проверялось

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

  • Работа собранных файлов в 1С для учебных примеров не проверялась. Успешная сборка означает только, что файл собран; проверьте его по шагам Проверить результат в 1С.
  • Пути объектов в примерах взяты из конкретной конфигурации и не проверяются Studio.
  • Примеры с target: managed для нового файла дают код, который ожидаемо не скомпилируется; рабочий черновик — с target: ordinary.
  • Остатки и обороты (пример 5) в облачной среде собрать нельзя.
  • Загрузить файл .spec1c в Studio нельзя — текст примера вставляется в редактор.

Все ограничения языка — Ограничения реализации.

См. также

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

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

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