Разбираем текст ошибки 1С: окно сообщения, журнал регистрации и технический журнал

· 9 мин

Содержание

Чтобы прочитать ошибку в 1С, нажмите в окне сообщения кнопку Подробно и найдите в тексте самую последнюю фразу после слов «по причине:». Это и есть первопричина, а всё, что выше, — цепочка вызовов, через которую она дошла до вас. Если окно уже закрыто, ту же запись можно найти в журнале регистрации: Администрирование → Обслуживание → Журнал регистрации, отбор по уровню «Ошибка».

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

Где 1С записывает ошибки: пять мест

У каждого источника своя глубина. Начинайте с верхней строки таблицы и спускайтесь ниже, только если информации не хватило.

ИсточникЧто видноКто читает
🪟 Окно ошибкиТекст, модуль, номер строкиПользователь
💬 Окно сообщений внизу формыПредупреждения при проведении: «Не хватает остатка…», «Не заполнено поле…»Пользователь
📒 Журнал регистрацииВсе ошибки за период, кто и в каком документеБухгалтер, администратор
🔄 Журнал обменаОшибки загрузки и выгрузки при синхронизацииАдминистратор
🛠 Технический журналИсключения платформы, ошибки СУБД, взаимоблокировкиАдминистратор, разработчик

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

💡 Сообщение под формой кликабельно. Двойной щелчок по нему переводит курсор на поле, которое надо заполнить или исправить.

Как прочитать текст ошибки: скобки, строки и «по причине»

Типичный подробный текст выглядит так:

{ОбщийМодуль.УчетНДС.Модуль(1482)}: Ошибка при вызове метода контекста (Записать)
	НаборЗаписей.Записать();
по причине:
Ошибка при выполнении операции с информационной базой
по причине:
Конфликт блокировок при выполнении транзакции:
Превышено максимальное время ожидания предоставления блокировки

Читается он по частям.

  1. Фигурные скобки {…} — где упал код. ОбщийМодуль.УчетНДС.Модуль — имя модуля, (1482) — номер строки в нём. Эту строку разработчик откроет в Конфигураторе.
  2. Текст после двоеточия — что пыталась сделать программа. Здесь — записать набор записей регистра.
  3. Строка с кодом под ним — сама инструкция, на которой случился сбой.
  4. Блоки «по причине:» — вложенные причины. Каждый следующий глубже предыдущего. Решение ищут по последнему блоку, а не по первой строке.

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

Что значат типовые формулировки

Фраза в текстеЧто это значит на практике
Значение не является значением объектного типаКод обратился к реквизиту пустого поля: в документе или справочнике не заполнено значение
Поле объекта не обнаруженоВ коде указано имя реквизита, которого нет. Частая картина после обновления или в доработках
Деление на 0В расчёте нулевое количество или сумма, ищите строку с нулём
Ошибка СУБДСбой на стороне базы данных: SQL Server, PostgreSQL или файловой
Ошибка формата потокаПовреждены кэш или файлы базы
Недостаточно прав для просмотра/измененияУ пользователя нет роли на этот объект
Конфликт блокировокДве сессии одновременно меняли одни данные

Внешние коды

Иногда в последнем блоке стоит не текст, а код вроде HRESULT=80004005 или SQLSTATE. Это ответ СУБД или Windows, а не самой 1С. Копируйте код вместе с окружающей фразой и ищите по ним: число без контекста почти ничего не говорит.

Как скопировать текст целиком

Скриншот окна бесполезен, если текст в нём обрезан. Раскройте Подробно, выделите текст мышью и нажмите Ctrl+C. В актуальных версиях платформы в окне ошибки есть ссылка на формирование отчёта об ошибке: она собирает текст, версию платформы и конфигурации в один файл, который удобно передать специалисту.

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

Журнал регистрации: отбор и чтение записей

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

Как открыть

  • В пользовательском режиме БП 3.0, ЗУП 3.1, УТ 11: Администрирование → Обслуживание → Журнал регистрации. Нужны права администратора.
  • В Конфигураторе: Администрирование → Журнал регистрации.

Как настроить отбор

Без отбора журнал показывает тысячи строк. Сузьте его:

  1. Нажмите кнопку Отбор над списком.
  2. Задайте интервал — от времени чуть раньше сбоя до чуть позже.
  3. В поле уровня важности оставьте только «Ошибка». Можно добавить «Предупреждение».
  4. Укажите пользователя, у которого возникла проблема.
  5. При необходимости выберите события, например «Данные. Проведение».
  6. Примените отбор.

Какие колонки читать

КолонкаЧто в ней искать
ДатаСовпадает ли время с моментом сбоя
Пользователь, КомпьютерКто и с какой машины работал
СобытиеТип действия: запись, проведение, сеанс, фоновое задание
МетаданныеКакой объект затронут: документ, справочник, регистр
ДанныеСсылка на конкретный документ — по ней его можно открыть
КомментарийПолный текст ошибки с той же цепочкой «по причине»

Комментарий читается так же, как окно ошибки. Двойной щелчок по строке открывает карточку события, там текст виден целиком.

💡 Если одна и та же ошибка повторяется каждые 10–15 минут от пользователя без имени — почти всегда это регламентное задание. Колонка «Событие» покажет его название.

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

Как отличить ошибку данных от ошибки программы

Прочитать текст — полдела. Дальше нужно понять, кто чинит. Есть три признака.

  • 📄 Ошибка воспроизводится только на одном документе. Значит, проблема в его данных: пустое поле, удалённый элемент справочника, неверная дата. Чинит пользователь.
  • 🔁 Ошибка на любом документе этого вида. Скорее всего, сбой в коде, внешней обработке или расширении. Чинит программист или поставщик доработки.
  • 👥 Ошибка у всех пользователей сразу, при любом действии. Проблема в базе, сервере или сети. Чинит администратор.

Простая проверка: попросите коллегу повторить то же действие под своей учётной записью. Если у него проходит — дело в правах или настройках пользователя.

Модуль в фигурных скобках тоже подсказывает. ВнешняяОбработка… или имя, начинающееся с префикса вашего разработчика, — значит, падает доработка, а не типовая конфигурация. Расширения видно в Администрирование → Печатные формы, отчеты и обработки → Расширения.

Технический журнал для администраторов

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

Как включить

Создайте файл logcfg.xml в каталоге conf установленной платформы, например C:\Program Files\1cv8\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>
    <property name="all"/>
  </log>
</config>
  • location — папка для логов. Выберите диск, где много места.
  • history — сколько часов хранить файлы.
  • EXCP — события исключений. Для взаимоблокировок добавляют TDEADLOCK и TLOCK, для ошибок SQL — DBMSSQL или DBPOSTGRS.

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

Не оставляйте полный технический журнал включённым надолго. Подробный набор событий за день занимает гигабайты и нагружает сервер. Собрали данные — удалите или переименуйте logcfg.xml.

Как читать файлы

Логи лежат в подпапках по процессам: rphost_1234, rmngr_5678, 1cv8c_…. Файлы называются по дате и часу: 26100714.log — это 7 октября, 14 часов.

Строка лога начинается со времени и длительности, затем имя события и свойства через запятую. Ищите EXCP и смотрите свойство Descr — в нём текст исключения. Свойство Usr подскажет пользователя, Context — где в коде это произошло.

Для поиска по большим логам удобнее findstr в Windows или grep в Linux, чем открывать файл в блокноте:

findstr /s /i "EXCP" D:\1c_techlog\*.log > D:\excp.txt

Ошибки при обмене данными

Синхронизация между базами, обмен с сайтом или с бухгалтерией пишет ошибки в свои места.

Синхронизация данных в типовых конфигурациях

Откройте Администрирование → Синхронизация данных. В списке настроек видно состояние последнего обмена. При ошибке рядом с настройкой появится отметка и ссылка на события. Она ведёт в журнал регистрации с готовым отбором по событиям обмена.

Читайте так:

  1. Определите направление: ошибка при выгрузке — проблема в нашей базе, при загрузке — в принимаемых данных или в базе-получателе.
  2. Найдите объект: в тексте обычно указаны вид документа или элемент справочника.
  3. Откройте этот объект в базе-источнике и проверьте заполнение.

Частые ситуации при обмене

Что сказано в ошибкеЧто проверить
Не удалось подключиться ко второй базеДоступность базы, адрес публикации, логин и пароль пользователя обмена
Сообщение обмена уже было принято или номер не совпадаетБазы рассинхронизировались, нужна повторная выгрузка всех данных по настройке
Нет правила для объекта или типаВерсии конфигураций разошлись с правилами обмена, обновите вторую базу
Документ загружен, но не проведёнОшибку проведения ищите в журнале базы-получателя

Не удаляйте настройку синхронизации, чтобы «начать с чистого листа». Связи объектов между базами потеряются, и следующий обмен создаст дубли.

Когда пора звать специалиста

Часть ошибок пользователь закрывает сам. Признаки, что пора остановиться и передать задачу:

  • 🔴 В тексте есть Нарушена целостность структуры конфигурации или Ошибка формата потока повторяется после очистки кэша.
  • 🔴 Ошибка СУБД с упоминанием диска, места или повреждённой страницы.
  • 🔴 Ошибка появляется у всех пользователей на любом действии.
  • 🔴 Падает сам клиент с окном «Приложение завершено аварийно».
  • 🔴 Последний блок «по причине» указывает на вашу доработку или расширение.
  • 🔴 После ошибки пропали или задвоились движения документов.

Что приложить к обращению, чтобы специалист не переспрашивал:

Что передать специалисту
Выполнено: 0 / 6

Как сделать, чтобы ошибок стало меньше

Основная часть ошибок рождается до нажатия кнопки «Провести». Несколько привычек сокращают их заметно.

  1. Обновляйте конфигурацию регулярно. Многие ошибки исправлены в следующих релизах, и в описании изменений их видно.
  2. Перед обновлением проверяйте доработки. Внешние обработки и расширения ломаются первыми.
  3. Делайте резервную копию перед тестированием, исправлением базы и обновлением.
  4. Не проводите документы массово в рабочее время. Перепроведение за квартал блокирует данные для всех.
  5. Держите журнал регистрации включённым с хранением хотя бы за месяц. Без него ошибку недельной давности не восстановить.
  6. Следите за местом на диске сервера и рабочих машин. Нехватка места даёт самые странные тексты ошибок.
  7. Не правьте данные через обработки вроде групповой обработки реквизитов без понимания, что изменится.

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

Почему в окне ошибки нет кнопки «Подробно»?
Это сообщение программы, а не исключение. Текст в нём уже полный: он говорит, что исправить в документе.
Можно ли посмотреть ошибки другого пользователя?
Да, через журнал регистрации с отбором по пользователю. Нужны права администратора.
Что делать, если журнал регистрации пустой?
Проверьте в Конфигураторе настройку журнала: уровень регистрации мог быть выключен. Записи за прошлое время при этом не восстановить.
Где хранится журнал регистрации файловой базы?
В папке 1Cv8Log внутри каталога базы. Удалять её не нужно: вместе с ней пропадёт история событий.
Номер строки в скобках указывает на ошибку в моём документе?
Нет. Это строка программного кода, а не табличной части. Для пользователя она полезна только как подсказка программисту.