Разработка и Конфигурация · 10 мин
Как найти ошибки в коде 1С: пошаговое руководство
Практические способы найти ошибки в коде 1С: отладчик, точки останова, журнал регистрации, проверка конфигурации и анализ типичных сбоев в работе.
Ошибка в коде 1С редко появляется «сама по себе»: почти всегда за ней стоит конкретное условие — изменение данных, обновление конфигурации, особенность настроек пользователя или ошибка в алгоритме. Поэтому поиск начинается не с чтения всего кода подряд, а с локализации проблемы: где именно возникает сбой, при каких действиях и у каких пользователей.
Платформа 1С:Предприятие предоставляет для этого полноценный инструментарий: встроенный отладчик, журнал регистрации, механизм проверки конфигурации, замеры производительности и технологический журнал. Грамотное сочетание этих средств позволяет найти причину большинства ошибок без привлечения сторонних программ.
Важно разделять два типа проблем. Ошибки времени выполнения проявляются сообщениями об ошибке при работе пользователя. Логические ошибки не выдают сообщений, но программа считает или проводит документы неправильно. Для каждого типа есть своя методика поиска.
Воспроизведите ошибку и соберите исходные данные
Первый шаг — добиться стабильного воспроизведения ошибки. Запишите точную последовательность действий: какой документ открывается, какие поля заполняются, какая кнопка нажимается. Если ошибка возникает только у одного пользователя, проверьте его права, настройки интерфейса и подключенные расширения — часто причина именно в этом.
Сохраните полный текст сообщения об ошибке. В нём обычно указаны имя модуля, номер строки и описание проблемы, например «Поле объекта не обнаружено» или «Деление на ноль». Это самая ценная подсказка: по имени модуля и строке вы сразу откроете нужное место в конфигураторе.
Уточните, когда проблема появилась. Если сбой начался после обновления конфигурации, установки расширения или загрузки данных — круг поиска резко сужается. Сопоставьте дату появления ошибки с записями в журнале регистрации о событиях обновления и изменениях.
Проверяйте общие модули и алгоритмы проведения
Сравните роли и список расширений с другими пользователями
Проверьте расширения и доработки на новом релизе
Ищите конкретный документ или элемент справочника, на котором падает код
Используйте отладчик конфигуратора
Отладчик — основной инструмент поиска ошибок в коде 1С. Откройте конфигуратор, перейдите в меню «Отладка» и убедитесь, что отладка разрешена. В клиент-серверном режиме на сервере должен быть включён режим отладки (параметр запуска сервера с ключом -debug), иначе серверный код отлаживаться не будет.
Установите точку останова (клавиша F9) на строке, где предположительно возникает ошибка, и запустите отладку (F5). Когда выполнение дойдёт до точки, программа остановится, и вы сможете пошагово двигаться по коду: F11 — шаг с заходом в процедуры, F10 — шаг без захода, Shift+F11 — выход из текущей процедуры.
Во время остановки изучайте значения переменных: наведите курсор на переменную или добавьте её в табло (Ctrl+Shift+W). Часто ошибка видна сразу: переменная имеет значение Неопределено, запрос вернул пустую выборку, а код пытается обратиться к полю результата.
Условные точки останова
Если ошибка возникает в цикле на сотой итерации, вручную шагать долго. Установите условную точку останова: правый клик по точке — условие, например СтрокаТЧ.Номенклатура = Неопределено. Выполнение остановится только при выполнении условия, что экономит значительное время.
- 1Включите отладку в конфигураторе и запустите сеанс под отладкой
- 2Воспроизведите ошибку и дождитесь остановки на точке останова
- 3Пошагово пройдите код, наблюдая за значениями переменных в табло
- 4Найдите строку, где значение становится неожиданным или возникает исключение
- 5Исправьте причину, а не симптом: проверьте, откуда пришло некорректное значение
- 6Повторите сценарий и убедитесь, что ошибка устранена, а смежные функции работают
Анализируйте журнал регистрации
Журнал регистрации фиксирует ошибки, возникающие в фоновых заданиях, при обменах, обновлении и работе пользователей. Откройте его через меню «Администрирование» — «Журнал регистрации» в режиме предприятия или через конфигуратор. Настройте отбор по уровню «Ошибка» и нужному периоду.
Для ошибок фоновых заданий журнал регистрации — зачастую единственный источник информации, потому что пользователь такие ошибки не видит. В событии будет указан текст исключения и контекст: имя регламентного задания, время, пользователь, от имени которого выполнялся код.
Дополнительно в собственном коде полезно записывать диагностическую информацию через ЗаписьЖурналаРегистрации() в блоке «Попытка...Исключение». Это позволяет накапливать статистику сбоев и находить закономерности, не держа отладку включённой постоянно.
Выполните проверку конфигурации
Встроенная проверка конфигурации выявляет синтаксические ошибки, обращения к несуществующим объектам и устаревшие конструкции ещё до запуска. В конфигураторе откройте «Конфигурация» — «Проверка конфигурации», включите режимы «Проверка логической целостности» и «Поиск некорректных ссылок».
Особое внимание уделите проверке модулей: она находит обращения к удалённым реквизитам, несоответствие числа параметров при вызове процедур и опечатки в именах методов. Такие ошибки часто возникают после доработок, когда переименовали реквизит, но не исправили все обращения к нему.
Для поиска всех мест использования объекта используйте «Поиск ссылок на объект» (правый клик по объекту метаданных). Перед переименованием или удалением процедуры всегда проверяйте, откуда она вызывается, — это предотвращает появление новых ошибок.
Разберитесь с типичными видами ошибок
Большинство ошибок в коде 1С относится к нескольким повторяющимся категориям. Знание этих категорий позволяет сразу проверять характерные места, а не читать модуль целиком.
| Текст ошибки | Вероятная причина | Что проверить |
|---|---|---|
| Поле объекта не обнаружено | Обращение к несуществующему реквизиту или опечатка | Состав реквизитов объекта, тип значения переменной |
| Значение не является значением объектного типа | В переменной Неопределено или примитивный тип вместо объекта | Результат функции, вернувшей значение; пустая ссылка |
| Деление на ноль | Знаменатель равен нулю при расчёте | Проверка знаменателя перед делением |
| Индекс находится за границами массива | Обращение к несуществующему элементу | Размер массива/таблицы значений, логика цикла |
| Ошибка при выполнении запроса | Синтаксис запроса, несуществующее поле в запросе | Текст запроса в консоли запросов, имена полей |
| Конфликт блокировок | Одновременное изменение одних данных разными сеансами | Технологический журнал, управляемые блокировки |
Логические ошибки без сообщений
Если программа работает, но считает неправильно, отладчик остаётся главным инструментом: пройдите расчёт пошагово и сверяйте промежуточные значения с ожидаемыми. Удобно временно выводить значения через Сообщить() в ключевых точках алгоритма, но не забудьте удалить такие строки после поиска.
Используйте технологический журнал и замеры
Когда ошибка связана с производительностью, блокировками или взаимодействием с СУБД, включают технологический журнал — детальный лог событий платформы. Он настраивается файлом logcfg.xml в каталоге сервера и позволяет увидеть тексты запросов к базе данных, длительные операции и взаимоблокировки.
Для поиска медленных участков кода используйте замер производительности (меню «Отладка» — «Замер производительности»). Отчёт покажет, какие строки и процедуры заняли больше всего времени. Часто «зависание» оказывается запросом в цикле, который выполняется тысячи раз вместо одного.
Технологический журнал генерирует большой объём данных и нагружает диск, поэтому включайте его на ограниченное время с фильтрами по событиям, а после анализа отключайте.
Проверьте результат исправления
После исправления недостаточно убедиться, что сообщение об ошибке пропало. Повторите исходный сценарий полностью и проверьте результат: документ провёлся, суммы сошлись, отчёт сформировался корректно. Затем проверьте смежные сценарии — исправление не должно сломать соседнюю функциональность.
Если ошибка была в расчётном алгоритме, сверьте итоговые цифры с эталонными данными или ручным расчётом. Для массовых операций проверьте обработку на небольшой выборке, прежде чем запускать на всех данных.
Что важно запомнить
Поиск ошибки в 1С — это последовательность: воспроизведение, чтение текста ошибки, отладка с точками останова, анализ журнала регистрации и проверка результата. Работайте на копии базы, исправляйте причину, а не симптом, и проверяйте смежные сценарии после исправления.
Частые вопросы
Что делать, если ошибка возникает только в фоновом задании и отладчик её не ловит?
Включите в конфигураторе отладку фоновых заданий: «Отладка» — «Подключение» и выберите нужный сеанс фонового задания. Дополнительно добавьте в код запись в журнал регистрации с подробным описанием исключения через ИнформацияОбОшибке(), чтобы видеть контекст даже без подключения отладчика.
Как найти, какое расширение вызывает ошибку?
Отключите все расширения и воспроизведите сценарий. Если ошибка исчезла, включайте расширения по одному, пока сбой не вернётся. В тексте ошибки часто видно имя модуля расширения — оно содержит префикс расширения.
Ошибка «Поле объекта не обнаружено» — с чего начать?
Определите тип переменной в момент ошибки через табло отладчика. Чаще всего переменная содержит Неопределено, строку или объект другого типа, чем ожидалось. Проверьте функцию, которая вернула это значение, и условия, при которых она может вернуть пустой результат.
Можно ли искать ошибки без конфигуратора?
Частично: журнал регистрации доступен в режиме предприятия, а тексты ошибок дают модуль и строку. Но для пошагового анализа кода и просмотра значений переменных конфигуратор с отладкой необходим.
Ошибка не воспроизводится на тестовой базе — что проверить?
Сравните данные: часто проблема привязана к конкретному документу или элементу справочника. Также проверьте версию платформы, список расширений, права пользователя и настройки базы — любое отличие может быть причиной.
Как понять, что проблема не в коде, а в данных?
Если код корректно работает на одних документах и падает на других, сравните проблемный объект с нормальным: незаполненные реквизиты, битые ссылки, нестандартные значения. Проверку битых ссылок выполняет обработка «Поиск и удаление дублей» и тестирование и исправление информационной базы.