К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как проверить код 1С на ошибки

Практическое руководство по проверке кода 1С на ошибки: синтаксическая проверка модулей, конфигуратор, отладчик, расширенная проверка и типовые ошибки разработчиков.

Проверка кода 1С на ошибки — обязательный этап перед переносом доработок в рабочую базу. Пропущенная синтаксическая ошибка может остановить обновление конфигурации, а логическая ошибка — привести к неверным данным в проводках и отчётах. Платформа 1С:Предприятие предоставляет несколько встроенных инструментов проверки: от быстрой синтаксической проверки модуля до расширенной проверки всей конфигурации и отладчика с пошаговым выполнением.

Проверка выполняется в конфигураторе и не требует сторонних программ. Для полноценной диагностики достаточно штатных средств: синтаксический контроль модулей, проверка конфигурации с разными наборами флагов, отладка с точками останова и замер производительности. Дополнительно можно использовать внешние инструменты статического анализа, если кодовая база большая.

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

Синтаксическая проверка модуля — первый шаг

Самый быстрый способ проверить код — синтаксический контроль открытого модуля. Откройте модуль в конфигураторе и нажмите Ctrl+F7 или выберите пункт меню «Текст — Проверить синтаксис». Платформа разберёт код и выведет список ошибок в окне сообщений с указанием строки и описания проблемы.

Двойной клик по сообщению об ошибке переносит курсор на строку с проблемой. Типичные находки на этом этапе: незакрытые конструкции «Если...КонецЕсли», пропущенные точки с запятой, неправильное количество параметров в вызове процедуры, опечатки в именах переменных при явном обращении.

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

Порядок действий
  1. 1
    Откройте модуль в конфигураторе
  2. 2
    Нажмите Ctrl+F7 для синтаксической проверки
  3. 3
    Исправьте ошибки, переходя к ним двойным кликом по сообщениям
  4. 4
    Повторите проверку до полного отсутствия сообщений
  5. 5
    Запустите расширенную проверку конфигурации для поиска межмодульных ошибок

Проверка конфигурации: базовая и расширенная

Пункт меню «Конфигурация — Проверка конфигурации» запускает комплексную проверку всех модулей и объектов. В диалоге настройки доступны флаги, определяющие глубину анализа: проверка логической целостности, поиск некорректных ссылок, проверка модулей в разных режимах (тонкий клиент, веб-клиент, сервер, внешнее соединение).

Расширенная проверка модулей — ключевой флажок для поиска скрытых ошибок. Она анализирует обращения к объектам метаданных, типам и методам, выявляя обращения к несуществующим реквизитам, несоответствие типов параметров, вызовы недоступных в данном контексте методов. Именно здесь находятся ошибки, которые синтаксическая проверка модуля пропускает.

Обязательно включайте проверку во всех режимах, в которых реально работает система. Код, корректный для толстого клиента, может быть недопустим на сервере или в веб-клиенте — например, из-за использования модальных вызовов или работы с файловой системой клиента. Платформа сообщит о таких несоответствиях, если включён соответствующий режим проверки.

Отладчик: поиск ошибок периода выполнения

Синтаксически корректный код может падать при выполнении: деление на ноль, обращение к свойству значения «Неопределено», обращение к индексу за границами массива. Такие ошибки находятся отладчиком. Включите отладку через меню «Сервис — Параметры — Запуск 1С:Предприятия» (флажок «Устанавливать режим разрешения отладки») и запустите сеанс через «Начать отладку» (F5).

Точка останова (F9) останавливает выполнение на нужной строке. Дальше доступно пошаговое выполнение: F10 — шаг через вызов процедуры, F11 — шаг с заходом внутрь, Shift+F11 — выполнить до выхода из текущей процедуры. Во время остановки можно смотреть значения переменных через табло (Shift+F9) и окно вычисления выражений.

Если ошибка уже произошла и известен её текст, используйте остановку по ошибке: меню «Отладка — Остановка по ошибке». Отладчик прервёт выполнение ровно в момент возникновения исключения, и вы увидите состояние всех переменных на этот момент — это самый быстрый способ понять причину падения.

Условные точки останова

Когда ошибка возникает в цикле на сотой итерации, вручную шагать неудобно. У точки останова можно задать условие — например, остановиться только когда переменная-счётчик больше определённого значения или когда поле объекта равно конкретному значению. Это резко сокращает время поиска.

Чаще всего ошибки периода выполнения в 1С связаны со значением «Неопределено»: функция запроса вернула пустую выборку, а код сразу обращается к полю результата. Добавляйте проверку «Если Выборка.Следующий() Тогда» или проверку на «Неопределено» перед обращением к свойствам.
ПЗ
Практическое замечание

Проверка логики на тестовых данных

Отсутствие ошибок не гарантирует правильность результата. Код может успешно выполняться, но считать неправильно: неверное условие в запросе, ошибка в формуле расчёта, неправильный отбор. Такие дефекты выявляются только проверкой результата на контрольных примерах.

Подготовьте набор тестовых ситуаций с заранее известным правильным результатом: типовой случай, граничные значения (нулевые суммы, пустые табличные части), заведомо некорректные данные. Прогоните код на каждом случае и сравните результат с ожидаемым. Расхождение — признак логической ошибки.

Все проверки выполняйте на копии базы, а не в рабочей. Отладка и тестирование в продуктивной базе рискованны: транзакция может завершиться частично, тестовые документы попадут в отчёты, а остановка по точке останова заблокирует работу других пользователей при монопольных операциях.

Типичные ошибки в коде 1С

Большая часть дефектов в прикладном коде 1С относится к нескольким повторяющимся категориям. Знание этого списка помогает проверять код целенаправленно, а не просто ждать сообщений платформы.

Типичные ошибки
01
Обращение к результату запроса без проверки на пустоту — падение с ошибкой при обращении к полю
02
Запрос внутри цикла — резкое падение производительности на больших данных
03
Игнорирование разделителя «&» и параметров виртуальных таблиц — неправильные или медленные выборки
04
Изменение объекта без записи или запись без проверки — потеря данных или неявные ошибки
05
Использование клиентских методов в серверном коде — ошибка при вызове в другом контексте
06
Сравнение дат и чисел без учёта пустых значений — ложные срабатывания условий

Отдельно проверяйте обработчики событий, которые вызываются платформой автоматически: «ПередЗаписью», «ПриЗаписи», «ОбработкаПроведения». Ошибка в таком обработчике проявляется при каждой записи объекта и может заблокировать работу пользователей с документами или справочниками целиком.

Дополнительные инструменты проверки

Для больших конфигураций ручной проверки недостаточно. Существуют внешние инструменты статического анализа кода 1С, которые проверяют код по наборам правил: поиск неиспользуемых переменных, потенциально опасных конструкций, нарушений стандартов разработки. Они подключаются к процессу разработки и работают автоматически.

Встроенный замер производительности (меню «Отладка — Замер производительности») показывает, какие строки кода выполнялись дольше всего и сколько раз вызывались. Это не поиск ошибок напрямую, но способ найти проблемные места: запрос в цикле или лишние обращения к базе видны в замере сразу.

Журнал регистрации полезен при анализе ошибок, которые уже произошли у пользователей. Отфильтруйте события по уровню «Ошибка» и нужному пользователю — в тексте события будет сообщение об ошибке с контекстом, по которому можно восстановить ситуацию и воспроизвести её под отладчиком.

Маршрут решения

Как выбрать действие

Ошибка видна сразу при открытии модуля или сохраненииИспользуйте синтаксическую проверку Ctrl+F7
Код сохраняется, но падает при выполненииЗапустите отладку с остановкой по ошибке
Код работает, но результат неверныйПроверяйте логику на тестовых данных с известным результатом
Ошибка возникает у пользователей, но не воспроизводитсяИзучите журнал регистрации и воспроизведите сценарий на копии базы
Нужно проверить всю конфигурацию перед обновлениемЗапустите расширенную проверку конфигурации со всеми режимами

Как убедиться, что проверка полная

Проверка считается завершённой, когда выполнены все уровни контроля: модуль проходит синтаксическую проверку, конфигурация проходит расширенную проверку без ошибок во всех используемых режимах, код протестирован на контрольных примерах, а сценарии с ошибочными данными обрабатываются корректно — с понятными сообщениями, а не падением.

Контрольные точки

Как проверить результат

Синтаксическая проверка модуля
Норма

Нет сообщений об ошибках

Тревожный признак

Сообщения с указанием строк и описанием проблем

Расширенная проверка конфигурации
Норма

Пустой список ошибок во всех включённых режимах

Тревожный признак

Ошибки обращений к метаданным или недоступным методам

Выполнение на тестовых данных
Норма

Результат совпадает с ожидаемым на всех контрольных примерах

Тревожный признак

Расхождения на граничных или типовых случаях

Обработка некорректных данных
Норма

Понятное сообщение пользователю, транзакция отменена

Тревожный признак

Падение с системной ошибкой или частичная запись данных

Полезная практика — вести список найденных ошибок и способов их обнаружения. Со временем он превращается в чек-лист для вашей конфигурации: какие места проверять в первую очередь, какие ошибки типичны именно для ваших доработок. Это сокращает время проверки при каждом следующем изменении.

Итог

Что важно запомнить

Проверка кода 1С строится по уровням: синтаксическая проверка модуля, расширенная проверка конфигурации, отладка ошибок выполнения, тестирование логики на контрольных данных. Все работы — только на копии базы.

Частые вопросы

Чем отличается синтаксическая проверка модуля от проверки конфигурации?

Синтаксическая проверка (Ctrl+F7) анализирует только открытый модуль и находит ошибки грамматики языка. Проверка конфигурации анализирует всю систему целиком, включая связи между объектами: обращения к реквизитам, вызовы процедур общих модулей, соответствие типов.

Почему код проходит проверку, но падает у пользователя?

Проверка конфигурации статична и не учитывает реальные данные. Падение обычно связано с конкретными значениями: пустой результат запроса, деление на ноль, особенности прав доступа пользователя. Воспроизведите сценарий на копии базы с теми же данными и отладкой.

Как найти ошибку, которая возникает только иногда?

Используйте условные точки останова и остановку по ошибке. Изучите журнал регистрации, чтобы понять контекст: какой пользователь, какие данные, какое действие. Нерегулярные ошибки часто связаны с конкретными данными или конкурентным доступом.

Можно ли отлаживать код на сервере 1С?

Да, но сервер должен быть запущен в режиме отладки. В клиент-серверном варианте отладка серверного кода требует соответствующей настройки сервера и прав. Без этого отладчик подключается только к клиентским процедурам.

Что проверять в первую очередь перед обновлением рабочей базы?

Запустите расширенную проверку конфигурации во всех используемых режимах, прогоните ключевые сценарии (проведение документов, формирование отчётов) на копии рабочей базы и убедитесь, что обновление проходит без ошибок именно на копии реальных данных.

Нужны ли сторонние программы для проверки кода 1С?

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