В процессе разработки в платформе «1С:Предприятие 8» можно столкнуться с неприятной ситуацией: встроенный синтаксический анализатор при нажатии клавиш Ctrl + F7 сообщает, что «Синтаксических ошибок не обнаружено», даже если в тексте модуля написан заведомо неработающий код или абракадабра. Разберем причинно-следственные связи этого явления и выясним, какие параметры системы отвечают за работу синтаксического контроля.
Проанализируем работу настроек самой среды разработки. В платформах 1С синтаксическая проверка выполняется строго для выбранных контекстов компиляции (клиентских или серверных). Настройки синтаксического контроля привязываются к каждой конкретной информационной базе в списке.
Если код пишется для работы в обычном приложении или режиме толстого клиента, а в параметрах среды включена проверка только для тонкого клиента и сервера, синтаксический анализатор просто пропустит блоки кода, не относящиеся к выбранным контекстам.
Перейдем в настройки среды разработки и проверим параметры:
Рассмотрим ситуацию, когда в окне Сервис — Параметры — Модули — Проверка отсутствуют необходимые пункты режимов запуска (например, обычное приложение). Это свидетельствует о том, что режим запуска отключен на уровне самой конфигурации.
Если в свойствах корневого элемента метаданных (дерево конфигурации) запрещено использование обычного приложения или конкретных видов клиентов, платформа скрывает их из настроек синтаксической проверки. Чтобы исправить эту ситуацию, выполним следующие шаги:
Посмотрим на особенности проверки условной компиляции. Если проверяемый код размещен внутри блоков препроцессора, синтаксический контроль может его проигнорировать, если данный контекст выключен в параметрах.
Рассмотрим пример кода:
#Если Сервер Тогда
// Если проверка сервера выключена, ошибки внутри блока не покажутся
НесуществующаяПеременная = 100;
#КонецЕсли
Если синтаксический контроль настроен только на Тонкий клиент, встроенная проверка пропустит ошибку внутри блока #Если Сервер. Для быстрой диагностики кода рекомендуется на время вынести фрагмент из-под инструкций препроцессора или временно включить все флаги проверки контекстов.
В редких случаях кэш временных файлов Конфигуратора может повреждаться, из-за чего модуль синтаксического контроля перестает реагировать на изменения текста. Для устранения кэш-сбоев выполним очистку:
%LOCALAPPDATA%\1C\1Cv8 и %APPDATA%\1C\1Cv8.Для гарантированного выявления ошибок во всей базе вместо локальной проверки одного модуля (Ctrl + F7) вызовем глобальную проверку. Нажмем в меню Конфигурация — Проверка конфигурации.... В открывшемся диалоге установим флаги контроля синтаксиса, вызова процедур и логической целостности для всех существующих контекстов (Сервер, Тонкий клиент, Толстый клиент, Внешнее соединение).