Где искать полное описание сбоя в 1С 8.3 и как его сохранить

· 10 мин

Содержание

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

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

Что входит в полный текст ошибки и зачем он нужен

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

📌 Что должно быть в полном описании:

  • 🧩 описание — сама фраза ошибки, например Поле объекта не обнаружено (Склад);
  • 📄 модуль — где сработало исключение: Документ.РеализацияТоваровУслуг.МодульОбъекта;
  • 🔢 номер строки и исходная строка кода;
  • 🔗 причина — вложенная ошибка, если одно исключение вызвало другое;
  • 🖥️ контекст: пользователь, время, имя компьютера, версия платформы и конфигурации, клиент или сервер.

Версию платформы и конфигурации берите из окна Справка → О программе (в «Такси» — значок «i» или главное меню). Без неё специалист не поймёт, исправлена ли ошибка в новом релизе.

Скриншот — плохой носитель. Длинный стек вызовов в окно не помещается, а текст с картинки не найти поиском. Копируйте текст.

Как посмотреть подробности сбоя прямо в окне сообщения

Это самый быстрый способ, и с него стоит начинать всегда.

Раскрыть подробное описание

  1. Когда появилось окно с ошибкой, не закрывайте его сразу.
  2. Нажмите кнопку или ссылку «Подробно» (в разных версиях платформы она выглядит как кнопка внизу окна или как ссылка под текстом).
  3. Окно развернётся: появятся модуль, номер строки и стек вызовов.
  4. Выделите текст мышью и нажмите Ctrl+C, затем вставьте в письмо или заявку.

Если окно закрылось, повторите действие, которое вызвало сбой. Большинство ошибок воспроизводятся стабильно.

Сформировать отчёт об ошибке

В актуальных версиях платформы 8.3 в окне ошибки есть команда формирования отчёта об ошибке. Она собирает в один архив:

  • 🧾 полный текст и стек вызовов;
  • 🖥️ сведения о платформе, конфигурации, ОС;
  • 🖼️ снимок экрана (если разрешено настройками);
  • 📦 дополнительные сведения о базе.

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

Сообщения в нижней части формы

Часть ошибок выводится не окном, а строкой в панели сообщений внизу формы документа. Например, Не заполнено поле «Контрагент» или Недостаточно товара на складе. Это не сбой платформы, а проверка программы. Текст из панели тоже можно выделить и скопировать. Щелчок по сообщению часто подсвечивает поле, к которому оно относится.

Журнал регистрации: найти ошибку, которую никто не сфотографировал

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

Где открыть журнал регистрации

ГдеПуть
БП 3.0, ЗУП 3.1, УТ 11Администрирование → Обслуживание → Журнал регистрации
Любая конфигурация, режим «Предприятие»Все функции → Стандартные → Журнал регистрации
КонфигураторАдминистрирование → Журнал регистрации

Если пункта «Все функции» не видно, включите его: главное меню → Сервис → Параметры → флажок «Отображать команду “Все функции”».

Как отфильтровать нужную запись

  1. Откройте журнал и нажмите «Установить отбор» (или «Отбор» — зависит от формы).
  2. Задайте интервал — от времени, когда пользователь увидел ошибку, плюс-минус 10–15 минут.
  3. В поле Уровень оставьте только «Ошибка».
  4. Если знаете, кто работал, укажите пользователя или компьютер.
  5. Откройте запись двойным щелчком: в поле «Комментарий» лежит текст исключения, в поле «Данные» — ссылка на объект, если она есть.

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

Где журнал лежит физически

  • 📁 файловая база — подкаталог 1Cv8Log в каталоге базы;
  • 📁 клиент-серверная — каталог 1Cv8Log внутри каталога базы в srvinfo на сервере 1С.

С версии 8.3.5 по умолчанию используется формат SQLite (файл 1Cv8.lgd), до этого — последовательный (.lgf и .lgp). Формат меняют в конфигураторе, в настройках журнала регистрации.

Если журнал пустой, проверьте уровень логирования: там же, в Конфигуратор → Администрирование → Настройка журнала регистрации. При режиме «Не регистрировать» ошибки не сохраняются.

Перехват исключений в коде: получить описание ошибки программно

Разработчику мало текста из окна. Нужно поймать исключение, записать полную информацию и решить, что делать дальше.

Минимальный перехват

Попытка
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
    ТекстОшибки = ОписаниеОшибки();
    Сообщить("Не удалось провести документ: " + ТекстОшибки);
КонецПопытки;

ОписаниеОшибки() возвращает текст последнего исключения. Работает только внутри блока Исключение.

Полная информация об исключении

Объект ИнформацияОбОшибке хранит модуль, строку и цепочку причин:

Попытка
    ВыполнитьОбмен();
Исключение
    Инфо = ИнформацияОбОшибке();
    Текст = СтрШаблон("%1 | Модуль: %2 | Строка: %3 | Код: %4",
        Инфо.Описание,
        Инфо.ИмяМодуля,
        Формат(Инфо.НомерСтроки, "ЧГ=0"),
        СокрЛП(Инфо.ИсходнаяСтрока));
    Если Инфо.Причина <> Неопределено Тогда
        Текст = Текст + " | Причина: " + Инфо.Причина.Описание;
    КонецЕсли;
    ЗаписьЖурналаРегистрации("Обмен.Ошибка",
        УровеньЖурналаРегистрации.Ошибка, , , Текст);
    ВызватьИсключение;
КонецПопытки;

Что здесь происходит:

  • 🔍 ИнформацияОбОшибке() берёт исключение целиком;
  • 🔗 Причина — вложенная ошибка (в длинных цепочках её тоже стоит обходить);
  • 📝 ЗаписьЖурналаРегистрации кладёт текст в журнал с уровнем «Ошибка» — его потом найдут фильтром;
  • ⬆️ ВызватьИсключение без параметров пробрасывает исходную ошибку дальше, чтобы она не «проглотилась».

Краткое и подробное представление

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

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

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

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

Технологический журнал: когда в окне и журнале регистрации пусто

Технологический журнал (ТЖ) пишет события на уровне платформы: исключения, запросы к СУБД, блокировки, падения процессов. Нужен, когда ошибка плавающая, приходит с сервера или сопровождается вылетом.

Как включить ТЖ

Создайте файл logcfg.xml в каталоге conf платформы. Для Windows это обычно C:\Program Files\1cv8\conf\ (общий для всех версий) или conf внутри каталога конкретной версии. Пример для сбора исключений:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="D:\1C_TJ" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <event>
      <eq property="name" value="EXCPCNTX"/>
    </event>
    <property name="all"/>
  </log>
  <dump create="true" location="D:\1C_Dumps" type="3"/>
</config>

Расшифровка:

  • 📂 location — куда писать логи; каталог должен существовать, а у пользователя службы 1С должны быть права на запись;
  • ⏳ history="24" — хранить 24 часа, старые файлы удаляются;
  • ⚡ EXCP — исключения, EXCPCNTX — контекст, в котором они возникли;
  • 💥 блок dump — создавать дампы при аварийном завершении процессов.

Платформа перечитывает файл примерно раз в минуту, перезапуск службы обычно не нужен.

Какие события смотреть

СобытиеЧто показываетКогда включать
EXCPисключения платформылюбая непонятная ошибка
EXCPCNTXконтекст исключениявместе с EXCP
DBMSSQL, DBPOSTGRSзапросы к СУБД и их ошибкиошибки при записи, «ошибка СУБД»
TLOCK, TTIMEOUT, TDEADLOCKуправляемые блокировки«Конфликт блокировок», взаимоблокировки
PROCстарт и завершение процессовпадения rphost, rmngr

ТЖ с <property name="all"/> и широким набором событий за час может занять десятки гигабайт. Включайте его на время воспроизведения, задавайте фильтры по базе или пользователю, выключайте после сбора — удалите или переименуйте logcfg.xml.

В логах ищите по времени сбоя и по тексту ошибки. Файлы текстовые, их удобно фильтровать findstr в Windows или grep в Linux.

Ошибки связи клиента и сервера 1С: где искать подробности

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

🧭 Порядок поиска:

  1. Текст на клиенте. Раскройте подробности: там часто есть имя сервера, порт и код сетевой ошибки.
  2. Журнал регистрации. Проверьте, не было ли в это время ошибок у других пользователей.
  3. Журнал событий Windows на сервере 1С — раздел «Приложение». Агент сервера и рабочие процессы пишут туда о падениях.
  4. Технологический журнал с событиями EXCP и PROC: покажет, какой процесс rphost упал и с какой ошибкой.
  5. Дампы из каталога, заданного в logcfg.xml, — их передают в поддержку платформы.

Порты и маршрут соединения

Клиент обращается к агенту сервера (порт 1540), затем к менеджеру кластера (1541) и рабочим процессам. Диапазон портов рабочих процессов задаётся в свойствах рабочего сервера, по умолчанию 1560–1591. Если ошибка возникает только с одного компьютера, проверьте доступность этих портов с него: Test-NetConnection имя_сервера -Port 1541 в PowerShell.

Диагностика: выберите симптом

Ошибки при обновлении конфигурации и выгрузке базы

Здесь текст ошибки особенно важен: от него зависит, откатывать базу или можно продолжить.

Обновление в режиме «Предприятие»

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

  • 📋 в журнале регистрации — событие «Обновление информационной базы», уровень «Ошибка»;
  • 🧾 в самом окне — по ссылке с подробностями: там указан обработчик, который не выполнился.

Имя обработчика сразу показывает, какой объект или регистр не обновился. С этим текстом и стоит идти к разработчику или на форум партнёра.

Обновление и выгрузка в конфигураторе

Сообщения конфигуратора выводятся в окне «Служебные сообщения» внизу. Текст выделяется и копируется через Ctrl+C. Если окно закрыто, откройте его через меню Окна.

Для пакетного запуска, когда окна нет, используйте параметр /Out — он пишет результат в файл:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /UpdateDBCfg /Out"D:\Logs\update.log" /DisableStartupDialogs

Путь к 1cv8.exe подставьте свой — номер версии в каталоге у вас другой. Тот же /Out работает с /DumpIB "D:\Backup\base.dt" для выгрузки и /RestoreIB для загрузки. В файле окажется полный текст ошибки, даже если запуск шёл по расписанию ночью.

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

Типичные сообщения при выгрузке и загрузке

  • 🔴 Ошибка формата потока — повреждён файл .dt или база; проверьте копию другим файлом, затем запустите тестирование и исправление на копии базы;
  • 🔴 Недостаточно памяти — выгрузку большой базы делайте 64-битным конфигуратором;
  • 🔴 Нарушение целостности структуры конфигурации — ошибка в метаданных, текст укажет объект.

Частые вопросы о диагностике ошибок 1С

Почему в журнале регистрации нет записи об ошибке?
Либо логирование отключено в настройках журнала регистрации, либо ошибка была перехвачена в коде без записи. Ещё вариант — проверка заполнения: такие сообщения в журнал не пишутся, это не исключение.
Можно ли получить текст ошибки, если 1С вылетает без окна?
Да. Включите технологический журнал с событиями EXCP и PROC и создание дампов. При следующем вылете в логе будет причина, а в каталоге дампов — файл для поддержки.
Чем ОписаниеОшибки() отличается от ИнформацияОбОшибке()?
ОписаниеОшибки() возвращает только строку текста. ИнформацияОбОшибке() возвращает объект с модулем, номером строки, исходной строкой кода и вложенной причиной.
Как отправить ошибку внешнему специалисту, ничего не потеряв?
Сформируйте отчёт об ошибке из окна сообщения и сохраните его в файл. Если команды нет, скопируйте полный текст после «Подробно» и приложите версию платформы и конфигурации.
Безопасно ли держать технологический журнал включённым постоянно?
Только с узким набором событий и коротким сроком хранения. Полный журнал быстро заполняет диск и нагружает сервер, его включают на время диагностики.