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

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

Как найти строку с ошибкой в 1С

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

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

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

Чтение сообщения об ошибке: где спрятан номер строки

Типовое сообщение об ошибке в 1С содержит ссылку на место возникновения в фигурных скобках, например: {ОбщийМодуль.РасчетЦен.Модуль(145)}: Деление на значение типа Число равное нулю невозможно. Здесь «ОбщийМодуль.РасчетЦен.Модуль» — это общий модуль «РасчетЦен», а 145 — точный номер строки, где выполнение прервалось.

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

Если ошибка возникла при проведении документа или записи элемента, в сообщении может быть указан сам объект. Сначала откройте его и проверьте заполнение полей — иногда «строкой с ошибкой» оказывается не код, а некорректные данные, которые код не смог обработать.

Как открыть нужную строку в конфигураторе

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

Когда сообщение скопировано из пользовательского режима, откройте конфигуратор и найдите указанный модуль в дереве конфигурации: общие модули — в ветке «Общие → Общие модули», модули документов и справочников — в соответствующих объектах. Затем используйте сочетание Ctrl+G и введите номер строки — курсор встанет точно на неё.

Учтите важный нюанс: номер строки в сообщении соответствует той версии модуля, которая была загружена в момент ошибки. Если после этого конфигурация обновлялась, строка могла «съехать». В таком случае ищите по тексту ошибки или по имени метода через глобальный поиск (Ctrl+Shift+F).

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

Поиск ошибки через журнал регистрации

Журнал регистрации — основной инструмент, когда ошибка произошла у другого пользователя или в фоновом задании, и «живого» сообщения уже нет. Откройте его из режима 1С:Предприятие («Администрирование → Обслуживание → Журнал регистрации») или из конфигуратора («Администрирование → Журнал регистрации»).

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

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

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

Отладчик — самый точный способ, когда ошибку можно воспроизвести. Включите отладку в конфигураторе («Отладка → Начать отладку») и установите флажок «Остановка по ошибке» через меню «Отладка → Остановка по ошибке». После этого выполните в режиме предприятия действие, которое приводит к сбою: выполнение прервётся точно на проблемной строке, и конфигуратор покажет её подсветкой.

В момент остановки доступны три ключевых инструмента. Табло (Shift+F9) показывает текущие значения переменных — сразу видно, какая переменная пуста или содержит не тот тип. Стек вызовов («Отладка → Стек вызовов») показывает цепочку вызовов, приведшую к строке. Окно «Вычислить выражение» (Alt+F9) позволяет проверить произвольные выражения на текущих данных.

Для ошибок в фоновых заданиях и на сервере включите в настройках отладки пункт «Автоматическое подключение» с отметкой «Фоновые задания» и при необходимости «HTTP-сервисы, веб-сервисы». Без этого отладчик не остановится в серверном коде, и вы будете искать причину вслепую.

Когда номера строки нет: технологический журнал и внешние обработки

Некоторые ошибки не содержат ссылки на строку: падения платформы, ошибки СУБД, таймауты запросов, проблемы COM-соединений. В таких случаях помогает технологический журнал — текстовый лог платформы, который включается через файл настроек logcfg.xml в каталоге конфигурации сервера или в каталоге технологического журнала клиента. В нём фиксируются события EXCP (исключения) с контекстом, запросы к СУБД и длительные операции.

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

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

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

Как выбрать способ поиска

В сообщении есть фрагмент вида {Модуль(123)}Откройте модуль в конфигураторе и перейдите по Ctrl+G к строке 123
Ошибка у другого пользователя или в фоновом заданииОткройте журнал регистрации с отбором по уровню «Ошибка» и времени
Ошибку можно воспроизвести самостоятельноВключите отладку и «Остановку по ошибке», повторите действие
Ошибка без номера строки, падение или таймаутВключите технологический журнал и анализируйте события EXCP

Частые ошибки при поиске строки и как их избежать

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

Вторая типичная ошибка — исправлять строку, не поняв причину. Например, при «Делении на ноль» добавляют проверку делителя, но реальная проблема — в том, что регистр не вернул данных из-за отсутствия записей. Всегда смотрите значения переменных в отладчике или логику получения данных, а не только саму строку.

Третья ошибка — игнорировать стек вызовов. Строка в общем модуле может быть корректной для одних вызовов и ошибочной для других. Без анализа стека легко «починить» один сценарий и сломать три других.

Типичные ошибки
01
Поиск строки в устаревшей версии модуля — номер не совпадает, исправляется не то место
02
Исправление симптома вместо причины — ошибка возвращается на других данных
03
Игнорирование стека вызовов — теряется контекст, откуда пришли некорректные данные
04
Отладка без автоподключения к фоновым заданиям — отладчик не останавливается, поиск идёт вслепую

Проверка результата после исправления

После правки кода обновите конфигурацию базы данных (F7) и повторите исходное действие на тех же данных, где ошибка воспроизводилась. Успешное выполнение — первый, но не единственный признак результата.

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

FAQ: частые вопросы о поиске строки с ошибкой

Что означает запись вида {МодульОбъекта(250)} в сообщении?

Это ссылка на место ошибки: модуль объекта (документа, справочника или обработки) и строка 250 в нём. В конфигураторе откройте соответствующий объект, его модуль объекта и перейдите к строке через Ctrl+G.

Почему номер строки в сообщении не совпадает с тем, что я вижу в модуле?

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

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

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

Можно ли найти строку ошибки без доступа к конфигуратору?

Частично. Журнал регистрации доступен из режима 1С:Предприятие при наличии прав администратора и показывает модуль и строку. Но открыть и исправить код без конфигуратора нельзя — потребуется разработчик или администратор с соответствующим доступом.

Ошибка возникает периодически и не воспроизводится. Что делать?

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

Что делать, если ошибка указывает на строку в стандартном модуле конфигурации?

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

Итог

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

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