Smart1Spec Документация
Studio
ОбучениеИзучающий Spec1C

Урок 7. Поиск и исправление ошибок

Как найти ошибку в спецификации Spec1C — сообщения разбора, замечания проверки модели, остановка сборки и строки, которые Studio пропускает без сообщения.

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

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

Ошибки в спецификации бывают трёх видов: те, о которых Studio сообщает сразу; те, о которых она сообщает при проверке или сборке; и те, которые она пропускает молча. Третьи опаснее всего — в этом уроке вы научитесь их находить.

Цель урока#

После урока вы сможете:

  • прочитать сообщение после «Применить без сборки» и понять, применился ли текст;
  • отличить ошибку, которая блокирует сборку, от замечания, которое ей не мешает;
  • найти строки, которые разбор пропустил без сообщения.

Что нужно знать#

Объяснение#

Где появляются сообщения#

КогдаСообщениеЧто значитБлокирует
«Применить без сборки», пустой текст или spec1c { }«Spec1C пуст — заполните Intent / Данные или введите спецификацию»Нечего применятьприменение
«Применить без сборки», ошибка разбора«Spec1C: пустой Spec1C» или «Spec1C: не найден report и источники data»Текст не принят, модель не измениласьприменение и сборку
«Применить без сборки», успех«Spec1C → модель · источников N» и, если есть, «· N предупр.»Текст принят—
«Собрать .epf» при неприменённой ошибке«Сначала исправьте ошибки в Spec1C»Сборка не началасьсборку
«Проверить модель Spec1C»«Замечаний: N», строки «✗ …» в журналеЗамечания к моделинет
«Собрать .epf» с balance/turnovers«Сборка остановлена: 3.5: нет пути conf — нельзя проверить by по Index»Измерения нельзя проверить без конфигурациисборку

Пояснения:

  • «нет блока data { }» — предупреждение, а не ошибка. Оно увеличивает счётчик «предупр.» в уведомлении.
  • Число источников в уведомлении — это источники модели, а не текста. Если новый текст не содержит ни одного распознанного источника, в модели остаются прежние, и число не меняется. Сверяйтесь с вкладкой Intent → «Данные».
  • «Проверить модель Spec1C» проверяет уже применённую модель, а не текст в редакторе. Сначала примените текст. Замечание «✗ Конфигурация не загружена — загрузите Conf в навигаторе (нужна для источников / запросов)» в облачной среде появляется всегда, когда есть источники, и сборке не мешает. Замечание «✗ У первого источника нет полей» — повод добавить fields:. Подробнее — Проверить модель.
  • Имена объектов и полей конфигурации в облаке не проверяются никогда. Опечатка в Справочник.Контрагенты проявится только в 1С при выполнении запроса.

Что Studio пропускает без сообщения#

СтрокаЧто происходит
Кириллический идентификатор источника договоры = …Источник не распознан
Источник и fields: в одной строке; fields: выше источникаИсточник или поля потеряны
Не закрыта } у data или у корняБлок data потерян, остаётся только предупреждение
on A.x = B.y вместо ==Соединение не распознано
target: Managed, format: XLSX, layout: maket Имя без кавычекЗначение не распознано
Неизвестное имя или тип в params, bool = даПараметр потерян
// внутри строки в кавычкахКонец строки считается комментарием, значение обрывается
compute, form { }, select … into, output … mapping, template:Не поддерживаются и пропускаются, даже если редактор их подсвечивает — Неподдерживаемые конструкции

Удаление строк не очищает модель#

Если убрать из текста источники, соединения, поле периода, имя макета или вид формы, в модели остаются прежние значения. Чтобы изменить значение, укажите новое явно. Чтобы убрать отбор по периоду или запросы balance/turnovers, начните с нового файла (Создать новую обработку или отчёт).

Полный пример#

Спецификация с четырьмя ошибками. Studio примет её без единого сообщения об ошибке:

Spec1C
spec1c {
  report sales
    title:  "Реализации и контрагенты"
    target: Ordinary

  data {
    реализации = Документ.РеализацияТоваровУслуг
      fields: Ссылка, Номер, Дата, Контрагент

    partners = Справочник.Контрагенты
      fields: ИНН

    |> left_join partners on partners.Ссылка = реализации.Контрагент
  }

  compute {
    Итого = Сумма
  }
}

Исправленный вариант:

Spec1C
spec1c {
  report sales
    title:  "Реализации и контрагенты"
    target: ordinary

  data {
    sales = Документ.РеализацияТоваровУслуг
      fields: Ссылка, Номер, Дата, Контрагент

    partners = Справочник.Контрагенты
      fields: ИНН

    |> left_join partners on partners.Ссылка == sales.Контрагент
  }
}

Имена объектов и полей — из типовой конфигурации; в вашей конфигурации они должны существовать, Studio в облаке их не проверяет.

Разбор примера#

ОшибкаПоследствиеИсправление
target: OrdinaryВид формы не распознан; в модели остаётся прежнийordinary строчными
реализации = …Источник документа не распознан, его поля потеряны. В модели один источник — partnersЛатинский идентификатор sales
= в условии соединенияСоединение не распознано==
compute { … }Блок пропущен без сообщенияЛогику расчёта дописывают в модуле BSL

С ошибочным вариантом сборка пройдёт, но запрос будет построен только по справочнику контрагентов. Именно поэтому после каждого применения сверяйте число источников и вкладку «Данные».

Два текста, которые разбор отклоняет с ошибкой:

Spec1C
spec1c {
  // здесь пока ничего нет
}
Spec1C
params {
  ВыгружатьXLSX : bool = true
}

Первый даст уведомление «Spec1C: пустой Spec1C» (комментарий вырезается, текст пуст). Второй — «Spec1C: не найден report и источники data»: в нём нет ни report, ни распознанного источника.

Ожидаемый результат#

УровеньОшибочный вариантИсправленный вариант
РазборБез ошибок и предупрежденийБез ошибок и предупреждений
МодельОдин источник, соединения нетДва источника, одно соединение, ordinary
ПроверкаТолько замечание о конфигурацииТолько замечание о конфигурации
Код BSLЗапрос только к Справочник.КонтрагентыЗапрос с ЛЕВОЕ СОЕДИНЕНИЕ
Работа в 1СНе проверяласьНе проверялась

Типичные ошибки#

Ошибка поискаКак правильно
Считать, что раз нет уведомления «Spec1C: …», текст применился полностьюСверять число источников и вкладку «Данные»
Запускать «Проверить модель Spec1C» до примененияСначала «Применить без сборки»
Принимать замечание о конфигурации за ошибкуВ облаке оно есть всегда и сборке не мешает
Удалять строку, чтобы «сбросить» значениеУказывать новое значение явно или начинать с нового файла
Считать успешную сборку проверкой в 1СОткрыть файл в 1С — Проверить результат в 1С

Все тексты сообщений — Сообщения об ошибках и предупреждения, уровни диагностики — Уровни диагностики, ограничения — Ограничения реализации.

Упражнение#

  1. Вставьте ошибочный вариант в редактор и примените. Запишите, что показало уведомление.
  2. Исправляйте ошибки по одной, применяя текст после каждой правки. Следите, как меняются число источников и вкладка «Данные».
  3. Удалите закрывающую скобку } блока data и примените. Найдите в уведомлении «· 1 предупр.». Верните скобку.

Следующий урок#

Уроки закончены. Дальше — практика: Создать спецификацию с нуля для своей спецификации с нуля и Библиотека примеров с готовыми примерами.

См. также

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

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

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