Библиотека примеров
Семь примеров спецификаций Spec1C с задачей, текстом, тем, что попадает в модель и в код, и честным итогом проверки — от минимального до исправления ошибки.
Перед чтением
- Быстрый старт Обучение
На этой странице
- Назначение
- Как читать итоги проверки
- Пример 1. Минимальная спецификация
- Пример 2. Параметры
- Пример 3. Источники, соединение и период
- Пример 4. Вывод: макет и Excel
- Пример 5. Просмотр метаданных и остатки
- Пример 6. Исправление пустой спецификации
- Пример 7. Изменение существующей спецификации
- Сводка проверок
- Ограничения
Каждый пример можно вставить в редактор Spec1C целиком. Для каждого указано, что попадает в модель, какой код появится в собранном файле, что проверено живой сборкой и чего ожидать в 1С.
Назначение#
Библиотека — готовые образцы для старта и для сравнения со своей спецификацией. Примеры используют объекты одной конкретной конфигурации (Справочник.КлиентскиеДоговора, РегистрСведений.ДокументыИзменяющиеУсловияДоговора). В вашей базе их, скорее всего, нет: замените пути и поля на свои, иначе запрос не выполнится в 1С. Studio имена объектов не проверяет.
Как читать итоги проверки#
| Что проверено | Как |
|---|---|
| Разбор | автоматически при сборке документации: пример разбирается без ошибок, а утверждения о модели (число источников, вид соединения и т. п.) выполняются |
| Сборка | живая сборка в локальной Studio с облачной сборкой: «Применить без сборки» → «Собрать .epf» → «Скачать .epf», файл распакован, модуль формы прочитан |
| Работа в 1С | не проверялась ни для одного примера; приведено ожидание по тексту кода |
Пример 1. Минимальная спецификация#
Задача: обработка с одним справочником и двумя полями.
spec1c {
report blank
title: "BlankPhase4"
target: ordinary
section: 0
data {
contracts = Справочник.КлиентскиеДоговора
fields: Ссылка, Код
}
}- Модель: один источник
contractsс полямиСсылка,Код; вид формы — обычная. Уведомление «Spec1C → модель · источников 1». - Код: вариант обычной формы — процедура
Сформировать(Кнопка)с запросом из двух полей, циклом подсчёта и сообщением с числом строк. Макета и вывода на экран нет. - Проверено: живая сборка прошла, файл скачан, в модуле формы между маркерами зоны — именно этот запрос (фрагмент — Соответствие конструкций и BSL). «Проверить модель Spec1C» дала одно замечание о незагруженной конфигурации — оно не мешает сборке.
- В 1С: не проверялось. Ожидаемо при наличии справочника в вашей конфигурации кнопка формы выполнит запрос и покажет сообщение с числом строк.
Пример 2. Параметры#
Задача: те же данные плюс флаги выгрузки.
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 {
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 {
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 {
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 {
}Такой же пустой каркас Studio подставляет в спецификацию нового файла. «Применить без сборки» показывает «Spec1C пуст — заполните Intent / Данные или введите спецификацию»; «Собрать .epf» после правки текста — «Сначала исправьте ошибки в Spec1C» (проверено вживую). Если в каркасе есть только комментарии, сообщение будет «Spec1C: пустой Spec1C».
Стало:
spec1c {
report blank
title: "ПослеИсправления"
target: ordinary
section: 0
data {
main = Справочник.КлиентскиеДоговора
fields: Ссылка, Код
}
}- Модель и код: как в примере 1 — один источник, вариант обычной формы с запросом из двух полей.
- Проверено: разбор; код по построению совпадает с живой сборкой примера 1 (тот же текст, отличаются только заголовок и имя источника).
- В 1С: не проверялось; ожидание — как в примере 1.
Пример 7. Изменение существующей спецификации#
Задача: в проекте, где уже сохранён пример 6, поменять заголовок и добавить поле.
spec1c {
report blank
title: "Договоры с датой"
target: ordinary
data {
main = Справочник.КлиентскиеДоговора
fields: Ссылка, Код, ДатаДоговора
}
}- Откройте проект и этап Spec1C — спецификация хранится в проекте и подставляется при открытии.
- Измените
titleи строкуfields. - «Ещё» → «Применить без сборки» — появится уведомление «Spec1C → модель · источников 1».
- Нажмите «Собрать .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 нельзя — текст примера вставляется в редактор.
Все ограничения языка — Ограничения реализации.
См. также
- Прочитать готовую спецификацию Руководство
- Создать спецификацию с нуля Руководство
- Соответствие конструкций и BSL Справочник
- Матрица поддержки конструкций Справочник
- Сообщения об ошибках и предупреждения Справочник
Сверено с продуктом: 27.10.2026