Где 1С хранит следы сбоев и как по ним найти причину ошибки
Содержание
Посмотреть ошибки в 1С проще всего в журнале регистрации: в Бухгалтерии 3.0, ЗУП 3.1 и УТ 11 он открывается через Администрирование → Обслуживание → Журнал регистрации, дальше ставите отбор по уровню «Ошибка» и нужному периоду. Если журнал молчит, причину ищут в технологическом журнале платформы, в отладчике или в журнале событий Windows на сервере.
Способ выбирают по тому, кто вы и что именно сломалось. Бухгалтеру хватит журнала регистрации и подробного текста ошибки. Администратору нужен технологический журнал и консоль кластера. Программисту — отладчик с остановкой по ошибке. Всё ниже относится к платформе 1С:Предприятие 8.3 с интерфейсом «Такси».
Сначала — подробный текст ошибки на экране
Самая частая потеря времени: окно с ошибкой закрыли и пытаются вспомнить, что там было. Не закрывайте его сразу.
В окне ошибки 1С есть кнопка или ссылка для подробностей. По ней раскрывается полный текст: модуль, номер строки, стек вызовов. Короткое сообщение вроде Ошибка при вызове метода контекста почти ничего не говорит. Полный текст обычно сразу показывает, где сломалось.
Что сделать с окном ошибки:
- 📋 Раскройте подробности и скопируйте весь текст через
Ctrl+AиCtrl+C. - 🖼️ Если копирование не работает — сделайте снимок экрана целиком, с заголовком окна.
- 🕒 Запишите время сбоя с точностью до минуты. По нему потом ищут запись в журналах.
- 👤 Запишите, под каким пользователем и в какой базе это случилось.
- 📨 Если в окне есть команда формирования отчёта об ошибке — сохраните отчёт в файл. Его удобно передать программисту.
Строка вида {ОбщийМодуль.ПроведениеСервер.Модуль(245)} — это имя модуля и номер строки. Для программиста это половина диагностики. Пересылайте её дословно, без пересказа.
Журнал регистрации: где посмотреть ошибки пользователю и бухгалтеру
Журнал регистрации пишет каждая информационная база. Туда попадают входы и выходы пользователей, запись и проведение документов, ошибки, фоновые и регламентные задания.
Как открыть журнал регистрации
| Где вы работаете | Путь |
|---|---|
| БП 3.0, ЗУП 3.1, УТ 11, КА 2, ERP | Администрирование → Обслуживание → Журнал регистрации |
| Любая конфигурация в режиме Предприятия | Главное меню → Функции для технического специалиста → Стандартные → Журнал регистрации |
| Конфигуратор | Администрирование → Журнал регистрации |
Пункт Функции для технического специалиста в старых сборках 8.3 назывался «Все функции». Если его нет в главном меню, включите его: главное меню → Сервис → Параметры → флажок отображения команды.
Чтобы видеть журнал, нужны административные права. Обычный пользователь откроет форму, но может не увидеть записи других людей.
Как отобрать только ошибки
В журнале тысячи строк за день. Без отбора ошибку в нём не найти.
- Нажмите
Установить отбор. - Задайте интервал: начало и конец с запасом 10–15 минут вокруг времени сбоя.
- В поле важности оставьте только «Ошибка». Иногда полезно добавить «Предупреждение».
- При необходимости выберите пользователя и событие, например «Данные. Проведение».
- Нажмите
ОКи откройте нужную строку двойным щелчком.
В карточке события смотрите на поле комментария. Там лежит текст ошибки со стеком. В колонке «Данные» — ссылка на документ или элемент справочника, с которым работали.
Если сбой у конкретного сотрудника, отберите сначала по пользователю без фильтра важности. Видно всю цепочку: что он открыл, что записал и на каком шаге упал.
Где журнал лежит на диске
| Вариант базы | Каталог журнала |
|---|---|
| Файловая | подкаталог 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.
Отладчик: поиск ошибки в коде для программиста
Журналы показывают, что и где упало. Отладчик показывает, почему: значения переменных в момент ошибки.
Остановка по ошибке
- Откройте базу в Конфигураторе.
- Запустите отладку:
Отладка → Начать отладку → Тонкий клиент(или клавишаF5). - В Конфигураторе включите остановку по ошибке через меню
Отладка. - Повторите действие, на котором была ошибка.
Выполнение остановится на строке, где возникло исключение. Дальше смотрите значения в окне «Локальные» и стек вызовов. Через табло (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.
Частые вопросы
Можно ли выгрузить журнал регистрации и отправить его программисту?
Почему в журнале регистрации нет ошибки, хотя пользователь её видел?
Сколько хранится журнал регистрации?
Влияет ли технологический журнал на скорость работы?
EXCP, почти незаметен. Широкий отбор с событиями запросов к СУБД нагружает диск и процессор сервера, его включают на короткое время.