Где 1С хранит следы сбоев и как по ним найти причину ошибки

· 10 мин

Содержание

Посмотреть ошибки в 1С проще всего в журнале регистрации: в Бухгалтерии 3.0, ЗУП 3.1 и УТ 11 он открывается через Администрирование → Обслуживание → Журнал регистрации, дальше ставите отбор по уровню «Ошибка» и нужному периоду. Если журнал молчит, причину ищут в технологическом журнале платформы, в отладчике или в журнале событий Windows на сервере.

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

Сначала — подробный текст ошибки на экране

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

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

Что сделать с окном ошибки:

  1. 📋 Раскройте подробности и скопируйте весь текст через Ctrl+A и Ctrl+C.
  2. 🖼️ Если копирование не работает — сделайте снимок экрана целиком, с заголовком окна.
  3. 🕒 Запишите время сбоя с точностью до минуты. По нему потом ищут запись в журналах.
  4. 👤 Запишите, под каким пользователем и в какой базе это случилось.
  5. 📨 Если в окне есть команда формирования отчёта об ошибке — сохраните отчёт в файл. Его удобно передать программисту.

Строка вида {ОбщийМодуль.ПроведениеСервер.Модуль(245)} — это имя модуля и номер строки. Для программиста это половина диагностики. Пересылайте её дословно, без пересказа.

Журнал регистрации: где посмотреть ошибки пользователю и бухгалтеру

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

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

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

Пункт Функции для технического специалиста в старых сборках 8.3 назывался «Все функции». Если его нет в главном меню, включите его: главное меню → Сервис → Параметры → флажок отображения команды.

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

Как отобрать только ошибки

В журнале тысячи строк за день. Без отбора ошибку в нём не найти.

  1. Нажмите Установить отбор.
  2. Задайте интервал: начало и конец с запасом 10–15 минут вокруг времени сбоя.
  3. В поле важности оставьте только «Ошибка». Иногда полезно добавить «Предупреждение».
  4. При необходимости выберите пользователя и событие, например «Данные. Проведение».
  5. Нажмите ОК и откройте нужную строку двойным щелчком.

В карточке события смотрите на поле комментария. Там лежит текст ошибки со стеком. В колонке «Данные» — ссылка на документ или элемент справочника, с которым работали.

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

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

Вариант базыКаталог журнала
Файловаяподкаталог 1Cv8Log в каталоге базы
Клиент-сервернаяsrvinfo\reg_1541\<GUID базы>\1Cv8Log на сервере 1С

Файлы бывают двух форматов: последовательный (.lgf и .lgp) и формат SQLite (.lgd). Формат меняют в Конфигураторе, в настройке журнала регистрации.

Если журнал пустой

Пустой журнал почти всегда означает одно из трёх:

  • ⚙️ запись выключена или стоит слишком грубый уровень. Проверьте в Конфигураторе: Администрирование → Настройка журнала регистрации. Для диагностики нужен уровень не ниже «Регистрировать ошибки»;
  • ✂️ журнал недавно сократили, и старые записи удалены;
  • 💾 на диске закончилось место, и платформа перестала писать файлы.

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

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

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

По умолчанию он выключен. Включается файлом logcfg.xml.

Куда положить logcfg.xml

  • C:\Program Files\1cv8\conf\ — действует для всех установленных версий платформы;
  • C:\Program Files\1cv8\<номер версии>\bin\conf\ — только для одной версии.

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

Пример настройки для поиска ошибок

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

Что здесь настроено:

  • location — каталог журнала. Берите отдельный диск с запасом места;
  • history="24" — хранить файлы 24 часа, старые платформа удалит сама;
  • EXCP — исключения, то есть ошибки;
  • TDEADLOCK и TTIMEOUT — взаимоблокировки и таймауты на управляемых блокировках;
  • dump — дампы при аварийном завершении процесса.

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

Как читать технологический журнал

В каталоге появятся подпапки по процессам, например rphost_4512 или 1cv8c_3120. Внутри — текстовые файлы по часам с именами вида 26100714.log: год, месяц, день, час.

Ищите по времени сбоя. Для поиска по большому объёму удобен PowerShell:

Select-String -Path "D:\1C_TechLog\*\*.log" -Pattern "EXCP" | Select-Object -First 50

Не оставляйте технологический журнал включённым с property name="all" и широким отбором надолго. На нагруженном сервере он пишет гигабайты в час и может забить диск. Когда диск заполнен, падает уже сам сервер 1С. Соберите данные за час-два и удалите logcfg.xml.

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

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

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

  1. Откройте базу в Конфигураторе.
  2. Запустите отладку: Отладка → Начать отладку → Тонкий клиент (или клавиша F5).
  3. В Конфигураторе включите остановку по ошибке через меню Отладка.
  4. Повторите действие, на котором была ошибка.

Выполнение остановится на строке, где возникло исключение. Дальше смотрите значения в окне «Локальные» и стек вызовов. Через табло (Shift+F9) можно вычислить любое выражение.

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

Отладка на сервере 1С

Для клиент-серверной базы серверный код по умолчанию отлаживать нельзя. Агент сервера запускают с ключом -debug. В службе Windows этот ключ дописывают в строку запуска ragent.exe, затем службу перезапускают.

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

Когда отладчик не нужен

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

Внешние инструменты для анализа ошибок 1С

Некоторые сбои происходят до того, как 1С успевает что-то записать. Тогда помогают средства вне конфигурации.

ИнструментЧто показываетКому
Просмотр событий Windows (eventvwr.msc)падения rphost.exe, ragent.exe, 1cv8c.exe, ошибки служб и дискаадминистратору
Консоль администрирования серверов 1Ссеансы, соединения, рабочие процессы, их памятьадминистратору
Средства СУБД (профайлер, расширенные события, журнал PostgreSQL)тяжёлые запросы, блокировки, ошибки на уровне базы данныхадминистратору СУБД
Тестирование и исправление (Конфигуратор → Администрирование)ошибки целостности данных и ссылокадминистратору
chdbfl.exe в каталоге bin платформыфизические повреждения файловой базы 1Cv8.1CDадминистратору
Инструменты из 1С:КИП (анализ техжурнала, ЦУП)разбор технологического журнала, проблемы производительностиспециалисту по производительности

Журнал событий Windows

Откройте eventvwr.msc → Журналы Windows → Приложение. Отберите записи уровня «Ошибка» за время сбоя. Запись об аварийном завершении rphost.exe объясняет внезапные вылеты всех пользователей сервера разом.

Проверка файловой базы

Утилиту chdbfl.exe запускают только при закрытой базе: в ней не должно быть ни одного пользователя. Перед исправлением сделайте копию файла 1Cv8.1CD.

Перед «Тестированием и исправлением» и перед chdbfl.exe в режиме исправления сделайте резервную копию базы. Исправление может удалить битые объекты без возможности вернуть их.

Что у вас происходит?

Частые сообщения об ошибках и куда за ними идти

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

СообщениеВероятная причинаГде искать подробности
Конфликт блокировок при выполнении транзакциидва пользователя или задания одновременно меняют одни данныетехжурнал: события TTIMEOUT, TDEADLOCK
Поле объекта не обнаруженообращение к реквизиту, которого нет: ошибка в доработке или несовпадение версий обработки и конфигурацииподробный текст ошибки, отладчик
Значение не является значением объектного типапеременная пустая или не того типаотладчик, стек вызовов
Ошибка формата потокаповреждён кэш или данные базыжурнал регистрации, затем тестирование базы
Нарушение целостности структуры конфигурацииповреждённая конфигурация или незавершённое обновлениеКонфигуратор, проверка конфигурации
Недостаточно памятипроцесс упёрся в лимит памятиконсоль кластера, журнал Windows
Не обнаружена лицензияключ или программная лицензия недоступныжурнал регистрации, сведения о лицензии в программе
Деление на 0ошибка в коде или пустое значение в расчётеподробный текст ошибки, отладчик

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

Как предотвратить ошибки и ловить их раньше пользователей

Ошибки в 1С не исчезают совсем, но их можно замечать раньше, чем позвонит бухгалтер.

  • 📅 Регулярно смотрите журнал регистрации. Раз в неделю отберите уровень «Ошибка» за семь дней. Повторяющиеся ошибки регламентных заданий видны сразу.
  • 🧪 Обновляйте сначала копию. Новый релиз и любую доработку проверяйте на тестовой базе. Только потом — на рабочей.
  • 🔢 Держите одну версию платформы на сервере и клиентах. Разнобой версий даёт ошибки соединения и странные сбои.
  • 💾 Следите за свободным местом на дисках сервера и в каталоге файловой базы. Заполненный диск рождает целую цепочку ошибок, которые выглядят не связанными.
  • 📏 Настройте размер журнала регистрации. Сокращайте его по расписанию, оставляя записи, например, за 3–6 месяцев. Остальное можно выгрузить в архив.
  • 🧩 Доработки — в расширения. Так обновление типовой конфигурации реже ломает ваш код, а ошибки в доработках проще отделить от ошибок типовой части.
  • 🗂️ Держите технологический журнал наготове. Заготовьте logcfg.xml с отбором по EXCP и храните рядом. При сбое останется только положить файл в каталог conf.
Что собрать перед обращением к программисту
Выполнено: 0 / 6

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

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