Где искать полное описание сбоя в 1С 8.3 и как его сохранить
Содержание
Полный текст ошибки 1С можно получить четырьмя путями: раскрыть подробности в самом окне сообщения (ссылка или кнопка «Подробно»), найти запись в журнале регистрации с уровнем «Ошибка», перехватить исключение в коде через ИнформацияОбОшибке() или включить технологический журнал. Первые два способа доступны любому пользователю с правами администратора, вторые два — разработчику и системному администратору.
Типичная ситуация: бухгалтер присылает скриншот с фразой Ошибка при вызове метода контекста. Без модуля, номера строки и причины по такому скриншоту ничего не исправить. Если сразу собрать полный текст, диагностика сбоя займёт минуты, а не переписку на полдня.
Что входит в полный текст ошибки и зачем он нужен
Короткое сообщение на экране — только верхний слой. Платформа хранит об исключении гораздо больше данных, и почти всё это нужно тому, кто будет чинить.
📌 Что должно быть в полном описании:
- 🧩 описание — сама фраза ошибки, например
Поле объекта не обнаружено (Склад); - 📄 модуль — где сработало исключение:
Документ.РеализацияТоваровУслуг.МодульОбъекта; - 🔢 номер строки и исходная строка кода;
- 🔗 причина — вложенная ошибка, если одно исключение вызвало другое;
- 🖥️ контекст: пользователь, время, имя компьютера, версия платформы и конфигурации, клиент или сервер.
Версию платформы и конфигурации берите из окна Справка → О программе (в «Такси» — значок «i» или главное меню). Без неё специалист не поймёт, исправлена ли ошибка в новом релизе.
Скриншот — плохой носитель. Длинный стек вызовов в окно не помещается, а текст с картинки не найти поиском. Копируйте текст.
Как посмотреть подробности сбоя прямо в окне сообщения
Это самый быстрый способ, и с него стоит начинать всегда.
Раскрыть подробное описание
- Когда появилось окно с ошибкой, не закрывайте его сразу.
- Нажмите кнопку или ссылку «Подробно» (в разных версиях платформы она выглядит как кнопка внизу окна или как ссылка под текстом).
- Окно развернётся: появятся модуль, номер строки и стек вызовов.
- Выделите текст мышью и нажмите
Ctrl+C, затем вставьте в письмо или заявку.
Если окно закрылось, повторите действие, которое вызвало сбой. Большинство ошибок воспроизводятся стабильно.
Сформировать отчёт об ошибке
В актуальных версиях платформы 8.3 в окне ошибки есть команда формирования отчёта об ошибке. Она собирает в один архив:
- 🧾 полный текст и стек вызовов;
- 🖥️ сведения о платформе, конфигурации, ОС;
- 🖼️ снимок экрана (если разрешено настройками);
- 📦 дополнительные сведения о базе.
Отчёт можно сохранить в файл и приложить к заявке. Это лучший вариант для передачи ошибки внешнему специалисту: ничего не потеряется при копировании.
Сообщения в нижней части формы
Часть ошибок выводится не окном, а строкой в панели сообщений внизу формы документа. Например, Не заполнено поле «Контрагент» или Недостаточно товара на складе. Это не сбой платформы, а проверка программы. Текст из панели тоже можно выделить и скопировать. Щелчок по сообщению часто подсвечивает поле, к которому оно относится.
Журнал регистрации: найти ошибку, которую никто не сфотографировал
Журнал регистрации пишет события базы: входы, изменения данных, ошибки. Если пользователь закрыл окно или сбой случился в фоновом задании, ищите здесь.
Где открыть журнал регистрации
| Где | Путь |
|---|---|
| БП 3.0, ЗУП 3.1, УТ 11 | Администрирование → Обслуживание → Журнал регистрации |
| Любая конфигурация, режим «Предприятие» | Все функции → Стандартные → Журнал регистрации |
| Конфигуратор | Администрирование → Журнал регистрации |
Если пункта «Все функции» не видно, включите его: главное меню → Сервис → Параметры → флажок «Отображать команду “Все функции”».
Как отфильтровать нужную запись
- Откройте журнал и нажмите «Установить отбор» (или «Отбор» — зависит от формы).
- Задайте интервал — от времени, когда пользователь увидел ошибку, плюс-минус 10–15 минут.
- В поле Уровень оставьте только «Ошибка».
- Если знаете, кто работал, укажите пользователя или компьютер.
- Откройте запись двойным щелчком: в поле «Комментарий» лежит текст исключения, в поле «Данные» — ссылка на объект, если она есть.
Ошибки фоновых и регламентных заданий (загрузка курсов валют, обмен, обновление классификаторов) пользователь не видит вообще. Журнал регистрации — единственное место, где их видно без программирования.
Где журнал лежит физически
- 📁 файловая база — подкаталог
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С:Предприятия, Сеанс отсутствует или удален, Соединение с сервером баз данных разорвано администратором сами по себе мало что говорят. Причина почти всегда на сервере.
🧭 Порядок поиска:
- Текст на клиенте. Раскройте подробности: там часто есть имя сервера, порт и код сетевой ошибки.
- Журнал регистрации. Проверьте, не было ли в это время ошибок у других пользователей.
- Журнал событий Windows на сервере 1С — раздел «Приложение». Агент сервера и рабочие процессы пишут туда о падениях.
- Технологический журнал с событиями
EXCPиPROC: покажет, какой процессrphostупал и с какой ошибкой. - Дампы из каталога, заданного в
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-битным конфигуратором; - 🔴
Нарушение целостности структуры конфигурации— ошибка в метаданных, текст укажет объект.