Собираем данные об ошибке 1С: окно ошибки, журналы, дампы

· 9 мин

Содержание

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

Если окно уже закрыто или ошибка плавающая, данные берут из журнала регистрации, технологического журнала и дампов. Порядок действий одинаков для любой конфигурации на платформе 8.3: Бухгалтерии, ЗУП, УТ, ERP.

Отчет об ошибке из окна сообщения в режиме Предприятия

Это первый и самый полезный источник. Окно ошибки содержит ровно то, что видел пользователь в момент сбоя.

Что сделать сразу, пока окно открыто

  1. Не нажимайте ОК и не закрывайте программу.
  2. Нажмите Подробно… — раскроется полный текст исключения с модулем и строкой кода.
  3. Нажмите ссылку Сформировать отчет об ошибке внизу окна.
  4. В открывшемся окне отметьте галочками сведения для отчета. Снимок экрана включайте, только если на экране нет персональных данных.
  5. Нажмите Сохранить в файл и выберите папку. Получится .zip-архив.

Если ссылки на отчет нет (старая сборка платформы или окно от внешней обработки), выделите текст ошибки мышью и скопируйте Ctrl+C. Скриншот экрана — запасной вариант: текст из него не скопировать и не найти поиском.

Что ценного в тексте ошибки

Хороший текст ошибки содержит четыре вещи:

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

Если в тексте видно ВнешняяОбработка или имя расширения, проблема почти наверняка в доработке, а не в типовом коде. Это сразу подсказывает, кому писать.

Как выгрузить журнал регистрации с ошибками

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

Через интерфейс программы

В типовых конфигурациях журнал открывается так:

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

Пункт Все функции появляется после включения флага Отображать команду "Все функции" в параметрах (меню с «бутербродом» → Сервис → Параметры).

Дальше настройте отбор:

  1. Откройте отбор журнала.
  2. Укажите интервал: от нескольких минут до сбоя до нескольких минут после.
  3. В уровнях оставьте только Ошибка (иногда полезно добавить Предупреждение).
  4. При необходимости ограничьте пользователем и компьютером.
  5. Примените отбор.

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

Колонка «Комментарий» часто содержит самое главное — подробный текст исключения. Не отключайте ее при выводе списка.

Копирование файлов журнала целиком

Иногда программисту нужен весь журнал, а не выборка. Тогда копируют каталог 1Cv8Log:

  • 📁 файловая база — папка 1Cv8Log внутри каталога базы;
  • 🖥️ клиент-серверная база — srvinfo\reg_1541\<GUID базы>\1Cv8Log на сервере 1С.

В старом формате это файл 1Cv8.lgf и набор файлов *.lgp по периодам. В новом — один файл 1Cv8.lgd. Формат меняется в конфигураторе: Администрирование → Настройка журнала регистрации. Там же задается уровень записи — если стоит «Не регистрировать», ошибки в журнал не попадут вообще.

GUID базы узнают в консоли кластера (свойства информационной базы) или по самой свежей дате изменения папки в момент работы пользователей.

Технологический журнал: включаем запись исключений

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

Файл logcfg.xml

Создайте файл logcfg.xml в каталоге conf платформы. Для всех установленных версий это обычно C:\Program Files\1cv8\conf\. На сервере файл кладут на том компьютере, где работают рабочие процессы; на файловой базе — на компьютере пользователя.

Минимальная настройка для сбора исключений:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\1C_TechLog" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <event>
      <eq property="name" value="QERR"/>
    </event>
    <property name="all"/>
  </log>
</config>
  • EXCP — исключительные ситуации;
  • QERR — ошибки компиляции запросов;
  • history="24" — хранить логи 24 часа, старые удаляются сами.

Платформа перечитывает файл примерно раз в минуту, перезапуск не нужен. Каталог C:\1C_TechLog должен существовать, а у пользователя службы 1С должно быть право записи в него.

Как найти нужную запись

Логи раскладываются по подпапкам процессов: rphost_1234, 1cv8c_5678 и т. п. Внутри — файлы вида 26100812.log, где цифры — год, месяц, день и час. Откройте файл за час сбоя и ищите по времени или по фрагменту текста ошибки.

Не оставляйте ТЖ включенным со свойством all на все события. Логи растут на гигабайты в час и замедляют сервер. Собрали ошибку — удалите logcfg.xml или переименуйте его.

Логи сервера 1С и консоль кластера

Консоль администрирования серверов 1С сама файлов не выгружает. Она помогает понять, где искать, и дает картину на момент сбоя.

Что посмотреть в консоли

  • 👥 сеансы — кто был в базе, на каком рабочем процессе;
  • 🔒 блокировки — если ошибка про таймаут или взаимоблокировку;
  • ⚙️ рабочие процессы — память и число соединений; процесс, который часто перезапускается, — подозреваемый;
  • 🗂️ свойства базы — имя базы на СУБД и ее идентификатор.

Те же данные доступны из командной строки через rac, если запущен сервер администрирования ras. Например, rac cluster list выведет кластеры, а rac session list --cluster=<id> — сеансы. Другие параметры смотрите в rac help.

Что забрать с сервера

ЧтоГде обычно лежитКогда нужно
Журнал регистрацииsrvinfo\reg_1541\<GUID>\1Cv8LogЛюбая прикладная ошибка
Технологический журналКаталог из logcfg.xmlОшибки платформы, блокировки, падения
ДампыКаталог из настройки dumpАварийное завершение процессов
Журнал WindowsПросмотр событий → Журналы Windows → ПриложениеПадение службы агента сервера

Каталог srvinfo по умолчанию находится в C:\Program Files\1cv8\srvinfo, но при установке его часто переносят. Точный путь виден в параметрах службы «Агент сервера 1С:Предприятия» — ключ -d в строке запуска.

Временные файлы, кэш и дампы на компьютере пользователя

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

Где что лежит

  • 📂 %APPDATA%\1C\1cv8\ — настройки и кэш конфигураций по базам;
  • 📂 %LOCALAPPDATA%\1C\1cv8\ — локальный кэш метаданных;
  • 💥 %APPDATA%\1C\1cv8\dumps — дампы аварийного завершения клиента (файлы .mdmp).

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

Проверка версии с чистым кэшем

Чтобы отделить ошибку кэша от ошибки базы, запустите клиент с ключом очистки:

"C:\Program Files\1cv8\common\1cestart.exe" /ClearCache

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

Перед очисткой скопируйте папку dumps и сохраните отчет об ошибке. После очистки часть сведений для разбора пропадет.

Серверный кэш (папки snccntx* в каталоге кластера) трогают только при остановленной службе. Остановка службы обрывает сеансы всех пользователей, поэтому это делают вне рабочего времени и с предупреждением.

Автоматизация сбора отчетов об ошибках

Если ошибка плавающая, ждать ее у экрана бессмысленно. Пусть данные копятся сами.

Запись в журнал из своего кода

В доработках оборачивайте рискованные места в Попытка и пишите подробности в журнал регистрации:

Попытка
    ЗагрузитьДанныеИзФайла(ИмяФайла);
Исключение
    ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
    ЗаписьЖурналаРегистрации("Загрузка.ИзФайла",
        УровеньЖурналаРегистрации.Ошибка, , ИмяФайла, ТекстОшибки);
    ВызватьИсключение;
КонецПопытки;

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

Дампы при падениях

Если процессы падают, добавьте в logcfg.xml внутрь элемента config строку:

<dump location="C:\1C_Dumps" create="1"/>

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

Ночной сбор архива

Логи ТЖ удобно упаковывать по расписанию. Пример для Планировщика заданий Windows:

powershell -NoProfile -Command "Compress-Archive -Path 'C:\1C_TechLog\*' -DestinationPath ('D:\1C_Reports\techlog_' + (Get-Date -Format 'yyyyMMdd') + '.zip') -Force"

Архив за сутки можно сразу отправлять программисту. Старые архивы удаляйте, иначе диск закончится за пару недель.

Какая у вас ситуация?

Что написать в сопроводительном письме

Архив без пояснений разбирают дольше. К нему стоит приложить короткое описание из пяти пунктов:

  1. Имя базы и пользователь, под которым возникла ошибка.
  2. Дата и время сбоя с точностью до минуты — по нему ищут записи в журналах.
  3. Что делали перед ошибкой: какой документ открыли, какую кнопку нажали.
  4. Повторяется ли ошибка у других пользователей и на других компьютерах.
  5. Что меняли накануне: обновление, новое расширение, внешняя обработка.

Пункт про время критичен. Без него программист будет листать журнал за весь день и может принять за причину соседнюю, не связанную ошибку.

Частые ошибки при выгрузке отчета

  • 🚫 Только скриншот без текста. На скриншоте обрезан стек вызовов, а текст нельзя найти поиском.
  • 🚫 Журнал за весь год. Файл на сотни тысяч строк никто не откроет. Ограничьте интервал 10–30 минутами вокруг сбоя.
  • 🚫 Нет версии. Без номера релиза конфигурации и платформы ошибку не сопоставить с известными исправлениями. Версии видны в окне О программе (значок «i» или меню с «бутербродом»).
  • 🚫 Персональные данные в архиве. Снимок экрана и журнал могут содержать ФИО, паспортные данные, суммы. Перед отправкой стороннему подрядчику проверьте содержимое.
  • 🚫 ТЖ остался включенным. Через неделю диск сервера заполнен, база перестает работать.

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

Куда отправлять сохраненный отчет об ошибке?
Вашему программисту 1С или обслуживающей организации. Для типовой конфигурации без доработок — на линию консультаций по договору сопровождения.
Почему в журнале регистрации нет моей ошибки?
Проверьте уровень записи в настройке журнала регистрации в конфигураторе и отбор по времени. Ошибки, которые код перехватил без записи в журнал, туда не попадут — их ловит только технологический журнал.
Можно ли выгрузить журнал регистрации без конфигуратора?
Да. В режиме Предприятия откройте журнал, настройте отбор и выведите список в табличный документ, затем сохраните в Excel. Права администратора для этого нужны.
Тормозит ли технологический журнал работу базы?
При записи только EXCP и QERR нагрузка небольшая. Запись всех событий со всеми свойствами заметно грузит диск и процессор, поэтому ее включают на минуты, а не на дни.
Что делать, если файл отчета слишком большой для почты?
Уменьшите интервал, исключите снимок экрана или разбейте архив. Логи ТЖ сжимаются хорошо — обычно в 10 раз и больше.