Урок 7. Поиск и исправление ошибок
Как найти ошибку в спецификации Spec1C — сообщения разбора, замечания проверки модели, остановка сборки и строки, которые Studio пропускает без сообщения.
Перед чтением
- Урок 1. Каркас: spec1c и report Обучение
На этой странице
Ошибки в спецификации бывают трёх видов: те, о которых Studio сообщает сразу; те, о которых она сообщает при проверке или сборке; и те, которые она пропускает молча. Третьи опаснее всего — в этом уроке вы научитесь их находить.
Цель урока#
После урока вы сможете:
- прочитать сообщение после «Применить без сборки» и понять, применился ли текст;
- отличить ошибку, которая блокирует сборку, от замечания, которое ей не мешает;
- найти строки, которые разбор пропустил без сообщения.
Что нужно знать#
- Как применять текст и собирать файл — Быстрый старт.
- Конструкции из уроков Урок 1. Каркас: spec1c и report–Урок 5. Вывод: макет и Excel.
- Ошибок в самом редакторе (подчёркиваний) нет: 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 {
report sales
title: "Реализации и контрагенты"
target: Ordinary
data {
реализации = Документ.РеализацияТоваровУслуг
fields: Ссылка, Номер, Дата, Контрагент
partners = Справочник.Контрагенты
fields: ИНН
|> left_join partners on partners.Ссылка = реализации.Контрагент
}
compute {
Итого = Сумма
}
}Исправленный вариант:
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 {
// здесь пока ничего нет
}params {
ВыгружатьXLSX : bool = true
}Первый даст уведомление «Spec1C: пустой Spec1C» (комментарий вырезается, текст пуст). Второй — «Spec1C: не найден report и источники data»: в нём нет ни report, ни распознанного источника.
Ожидаемый результат#
| Уровень | Ошибочный вариант | Исправленный вариант |
|---|---|---|
| Разбор | Без ошибок и предупреждений | Без ошибок и предупреждений |
| Модель | Один источник, соединения нет | Два источника, одно соединение, ordinary |
| Проверка | Только замечание о конфигурации | Только замечание о конфигурации |
| Код BSL | Запрос только к Справочник.Контрагенты | Запрос с ЛЕВОЕ СОЕДИНЕНИЕ |
| Работа в 1С | Не проверялась | Не проверялась |
Типичные ошибки#
| Ошибка поиска | Как правильно |
|---|---|
| Считать, что раз нет уведомления «Spec1C: …», текст применился полностью | Сверять число источников и вкладку «Данные» |
| Запускать «Проверить модель Spec1C» до применения | Сначала «Применить без сборки» |
| Принимать замечание о конфигурации за ошибку | В облаке оно есть всегда и сборке не мешает |
| Удалять строку, чтобы «сбросить» значение | Указывать новое значение явно или начинать с нового файла |
| Считать успешную сборку проверкой в 1С | Открыть файл в 1С — Проверить результат в 1С |
Все тексты сообщений — Сообщения об ошибках и предупреждения, уровни диагностики — Уровни диагностики, ограничения — Ограничения реализации.
Упражнение#
- Вставьте ошибочный вариант в редактор и примените. Запишите, что показало уведомление.
- Исправляйте ошибки по одной, применяя текст после каждой правки. Следите, как меняются число источников и вкладка «Данные».
- Удалите закрывающую скобку
}блокаdataи примените. Найдите в уведомлении «· 1 предупр.». Верните скобку.
Следующий урок#
Уроки закончены. Дальше — практика: Создать спецификацию с нуля для своей спецификации с нуля и Библиотека примеров с готовыми примерами.
См. также
- Сообщения об ошибках и предупреждения Справочник
- Уровни диагностики Понятие
- Неподдерживаемые конструкции Справочник
- Проверить модель Руководство
- Ограничения реализации Справочник
Сверено с продуктом: 27.10.2026