Ошибка 1С: Ошибка компиляции модуля (Compilation error) — Решение
- Блокировка запуска сеанса «1С:Предприятие» в режиме тонкого, толстого или веб-клиента.
- Всплывающее окно:
Ошибка компиляции модуля (ИмяКонтейнера / ИмяМодуля). - В окне сообщений конфигуратора выводится список синтаксических ошибок с указанием строк кода.
1. Причины возникновения ошибок компиляции
Модули 1С компилируются в байт-код виртуальной машины при старте сеанса или первом обращении к модулю. Компиляция завершается аварийно в следующих случаях:
- Синтаксические ошибки (незакрытые конструкции
Если,Цикл,Попытка, отсутствиеКонецЕсли,КонецЦикла); - Незакрытые строковые кавычки (
") или пропущенные точки с запятой (;); - Использование клиентских методов в серверных модулях (и наоборот);
- Ошибки в директивах компиляции (
&НаСервере,&НаКлиенте) и препроцессора (#Если).
2. Пошаговый алгоритм локализации и исправления
Шаг 1: Запуск полной синтаксической проверки
В меню Конфигуратора откройте: Конфигурация → Проверка конфигурации...
- Установите флаги: Синтаксический контроль модулей, Проверка логической целостности, Попытка компиляции во всех режимах (Тонкий клиент, Сервер, Внешнее соединение);
- Нажмите Выполнить.
Шаг 2: Исправление парных конструкций языка
// ПРИМЕР СБОЯ: Незакрытая скобка или пропущенный КонецЕсли
Если Флаг = Истина Тогда
ВыполнитьДействие();
// Забыт КонецЕсли! Компилятор упадет на последней строке модуля
// ПРАВИЛЬНО:
Если Флаг = Истина Тогда
ВыполнитьДействие();
КонецЕсли;Шаг 3: Проверка кавычек в длинных запросах
При переносе строк текста запроса каждая новая строка должна начинаться с вертикальной черты |:
// ПРАВИЛЬНО:
ТекстЗапроса =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";Шаг 4: Проверка контекстных директив
Если серверный общий модуль не скомпилирован для клиента, прямой вызов из клиентского кода без декоратора &НаСервере вызовет ошибку компиляции формы.
Частые вопросы (FAQ)
Как быстро перейти к строке с ошибкой компиляции?
В нижнем окне 'Служебные сообщения' дважды щелкните левой кнопкой мыши по тексту ошибки. Конфигуратор автоматически откроет модуль и установит курсор на сбойную строку.
Почему в толстом клиенте модуль компилируется, а в тонком клиенте падает?
В толстом клиенте доступны многие устаревшие синхронные методы (например, Предупреждение, Вопрос) и типы метаданных. В тонком клиенте они вызывают ошибку компиляции, требуя асинхронных аналогов (ПоказатьПредупреждение).
Что делать, если ошибка компиляции возникает в заблокированном типовом модуле?
Снимите конфигурацию с поддержки с сохранением поддержки или создайте Расширение конфигурации, переопределив ошибочный метод через аннотацию &Вместо или &ИзменениеИКонтроль.
Влияют ли комментарии на компиляцию?
Комментарии, начинающиеся с '//', игнорируются компилятором. Однако незакрытая многострочная строка (с кавычками) может случайно захватить комментарий в тело строки.