Ошибка в 1С: от текста сообщения до причины и исправления

· 9 мин

Содержание

Чтобы обработать ошибку в 1С, начните с полного текста сообщения: нажмите в окне ошибки «Подробнее» и скопируйте всё, что там написано, включая модуль и номер строки. Дальше по тексту определяете слой, где случился сбой: код конфигурации, данные, база и СУБД, сервер или сеть. Для каждого слоя свой инструмент: журнал регистрации, технологический журнал, тестирование и исправление базы, консоль кластера.

Ниже порядок, по которому работают специалисты сопровождения на платформе 8.3. Он общий для всех конфигураций: БП 3.0, ЗУП 3.1, УТ 11 и других. Различаются только пути к журналу регистрации внутри программы, их я указываю отдельно.

1. С чего начать: прочитать и классифицировать сообщение об ошибке

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

Что сохранить сразу

  1. Нажмите «Подробнее» (или ссылку «Подробный текст ошибки») в окне сообщения.
  2. Скопируйте текст целиком: Ctrl+A, Ctrl+C. Скриншот хуже, его нельзя искать по словам.
  3. Запишите, что делали: какой документ, какая кнопка, какая дата, под каким пользователем.
  4. Проверьте, повторяется ли ошибка у другого пользователя и на другом компьютере.

Начиная с релизов платформы 8.3.17 в окне ошибки есть возможность сформировать отчёт об ошибке. Он сохраняется архивом с описанием среды и текстом. Такой архив удобно отправить программисту или на линию поддержки.

Как читать текст

В подробном тексте обычно есть три части:

  • 📍 Место: {Документ.РеализацияТоваровУслуг.МодульОбъекта(245)} — объект, модуль и номер строки.
  • 🧩 Суть: Поле объекта не обнаружено (Склад) или Значение не является значением объектного типа.
  • 🗄 Нижний уровень (если есть): Ошибка СУБД:, Microsoft SQL Server Native Client, server_addr=..., descr=....

По этим частям ошибка сразу попадает в одну из групп:

Признак в текстеСлойКуда смотреть дальше
Модуль и номер строки, без «Ошибка СУБД»Код конфигурации или данныеЖурнал регистрации, отладка
Ошибка СУБД, Ошибка при выполнении операции с информационной базойБаза данныхТестирование базы, журнал СУБД
Конфликт блокировок, Превышено максимальное время ожидания предоставления блокировкиПараллельная работаТехнологический журнал
Сервер 1С:Предприятия не обнаружен, Ошибка соединения с серверомСервер и сетьКонсоль кластера, порты
Неверный формат потока, Ошибка формата потокаКэш клиента или повреждённые данныеОчистка кэша
Нарушение прав доступаПрава пользователяПрофили групп доступа

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

2. Журнал регистрации и технологический журнал: где искать следы

Журнал регистрации

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

Где открыть:

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

Чтобы быстро найти нужную запись:

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

Если ошибка у пользователя «пропала», а он не скопировал текст, журнал регистрации почти всегда её сохранил. Это первое место для расследования задним числом.

Журнал хранится в каталоге базы, в папке 1Cv8Log. Если файлов там много, журнал открывается долго. Срок хранения задают в Конфигураторе, в настройках журнала регистрации.

Технологический журнал

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

ТЖ включается файлом 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:\v8logs" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <event>
      <eq property="name" value="TLOCK"/>
    </event>
    <event>
      <eq property="name" value="TTIMEOUT"/>
    </event>
    <event>
      <eq property="name" value="TDEADLOCK"/>
    </event>
    <property name="all"/>
  </log>
</config>

Что значат события:

  • ❗ EXCP — исключения платформы, включая те, что не дошли до пользователя.
  • 🔒 TLOCK — управляемые блокировки.
  • ⏳ TTIMEOUT — превышение времени ожидания блокировки.
  • 💥 TDEADLOCK — взаимоблокировки.
  • 🗄 DBMSSQL, DBPOSTGRS — запросы к MS SQL и PostgreSQL. Включайте их коротко: лог растёт очень быстро.

history="24" означает хранить логи 24 часа. Логи ТЖ пишутся текстовыми файлами по часам, их удобно искать через findstr или любой редактор.

Не оставляйте полный ТЖ включённым надолго. Событие DBMSSQL с property name="all" на рабочей базе может занять десятки гигабайт за день и затормозить сервер. Собрали данные — удалите или переименуйте logcfg.xml.

3. Типовые ошибки выполнения и как их устранить

Ошибки выполнения — это сбои в коде или данных. Их видно по модулю и номеру строки.

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

Очистка кэша клиента

Кэш лечит много «странных» ошибок после обновления. Два способа:

  1. Добавить в строку запуска ключ /ClearCache. В окне запуска: «Изменить» → последний шаг → поле «Дополнительные параметры запуска».
  2. Закрыть 1С и удалить папки с GUID-именами из %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8.

Второй способ сбрасывает кэш всех баз на компьютере. Список баз хранится отдельно в файле ibases.v8i и не пострадает.

Отладка для программиста

Если ошибка в доработке, номер строки из текста ведёт прямо к месту. В Конфигураторе откройте модуль, перейдите к строке (Ctrl+G), поставьте точку останова и запустите отладку. Для серверного кода в клиент-серверной базе отладка на сервере должна быть разрешена в настройках сервера.

4. Обработка ошибок в коде: Попытка–Исключение

Если «обработать ошибку» — это задача программиста, речь о конструкции Попытка … Исключение. Она перехватывает исключение, не даёт прервать весь процесс и позволяет сохранить подробности.

Попытка
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
    ИнфоОбОшибке = ИнформацияОбОшибке();
    ЗаписьЖурналаРегистрации("Загрузка документов",
        УровеньЖурналаРегистрации.Ошибка,
        ДокументОбъект.Метаданные(),
        ДокументОбъект.Ссылка,
        ПодробноеПредставлениеОшибки(ИнфоОбОшибке));
    Сообщить("Документ не проведён: " + КраткоеПредставлениеОшибки(ИнфоОбОшибке));
КонецПопытки;

Правила, которые экономят время при разборе:

  • 📝 В журнал пишите ПодробноеПредставлениеОшибки: там стек вызовов и номера строк. Пользователю показывайте краткое.
  • 🚫 Не оставляйте пустой блок Исключение … КонецПопытки. Ошибка исчезнет без следа, а данные останутся неполными.
  • 🔁 Внутри транзакции после исключения транзакцию нужно отменить (ОтменитьТранзакцию()) или пробросить исключение дальше через ВызватьИсключение;. Иначе следующая запись упадёт с ошибкой «В данной транзакции уже происходили ошибки».
  • 🎯 Попытку ставьте вокруг одной рискованной операции, а не вокруг всей процедуры.

5. Ошибки базы данных и СУБД

Признак — слова Ошибка СУБД или Ошибка при выполнении операции с информационной базой в тексте. Порядок действий зависит от типа базы.

Файловая база

  1. Попросите всех выйти из базы.
  2. Сделайте копию каталога базы (файл 1Cv8.1CD) или выгрузку в .dt.
  3. Откройте Конфигуратор: Администрирование → Тестирование и исправление.
  4. Начните с режима «Проверка логической целостности информационной базы» без исправлений, только «Тестирование».
  5. Если найдены ошибки, повторите с режимом «Тестирование и исправление».

Для физических повреждений файла есть утилита chdbfl.exe в каталоге bin платформы. Она проверяет сам файл 1Cv8.1CD, база при этом должна быть закрыта.

Перед «Тестированием и исправлением» обязательно сделайте копию базы. Режим может удалить битые ссылки или заменить их на объекты-заглушки. Отменить это нельзя. Тестирование и исправление требует монопольного доступа: все пользователи должны выйти.

Клиент-серверная база

Здесь первоисточник — сама СУБД. Текст после descr= в сообщении обычно содержит исходную ошибку MS SQL или PostgreSQL.

Что в текстеВероятная причинаЧто проверить
Нет места, переполнен журнал транзакцийЗакончился дискСвободное место на сервере СУБД, модель восстановления, бэкап журнала
Таймаут, ожидание блокировкиДолгие запросы или блокировкиТЖ с TLOCK, TTIMEOUT; планы запросов
Ошибка проверки целостности, повреждение страницСбой диска или питанияПроверка базы средствами СУБД, восстановление из копии
Отказ в доступе к базеПароль или права пользователя СУБДПараметры базы в консоли кластера

Тестирование и исправление из Конфигуратора работает и для серверной базы, но на большой базе оно идёт часами. Сначала проверьте целостность средствами СУБД.

6. Сбои связи клиента с сервером и сеть

Схема соединения: клиент обращается к агенту сервера (порт 1540), затем к менеджеру кластера (1541) и рабочим процессам. Диапазон портов рабочих процессов задаётся в свойствах рабочего сервера, по умолчанию 1560:1591. Если хоть один порт закрыт, клиент получает ошибку соединения.

Типовые тексты и проверки:

  • 🌐 Сервер 1С:Предприятия не обнаружен — проверьте, запущена ли служба агента сервера, правильно ли указано имя сервера, открыт ли порт 1540.
  • 🔌 Ошибка соединения с сервером 1С:Предприятия — проверьте порты 1541 и диапазон рабочих процессов в брандмауэре. Имя сервера должно разрешаться с клиента в правильный IP.
  • 🧷 Сеанс отсутствует или удалён — сеанс завершил администратор или перезапустился рабочий процесс. Перезайдите в базу.
  • ⚙️ Версия клиента не совпадает с сервером — на клиенте и на сервере должна стоять одинаковая версия платформы.

Проверка порта с клиента в PowerShell:

Test-NetConnection -ComputerName srv1c -Port 1541

Список сеансов из командной строки через сервер администрирования:

rac cluster list
rac session list --cluster=<id_кластера>

Если rac подключается к серверу, а клиент нет, проблема в портах рабочих процессов или в разрешении имени сервера.

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

7. Профилактика: как реже сталкиваться с ошибками

Большую часть повторяющихся ошибок закрывает регулярное обслуживание.

Регламент обслуживания базы 1С
Выполнено: 0 / 7

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

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

Где найти текст ошибки, если пользователь закрыл окно?
В журнале регистрации. Отберите записи с уровнем «Ошибка» за время, когда случился сбой, и откройте запись: полный текст будет в комментарии.
Почему ошибка появляется только у одного пользователя?
Чаще всего виноваты его права, сохранённые настройки форм и отчётов или кэш на его компьютере. Проверьте под другим пользователем на том же компьютере и под тем же пользователем на другом.
Можно ли включить технологический журнал без перезапуска сервера?
Да. Платформа сама подхватывает изменения в logcfg.xml примерно в течение минуты. Так же и выключение: удалите или переименуйте файл.
Что делать, если ошибка появилась сразу после обновления?
Запустите 1С с ключом /ClearCache, проверьте, что обновление структуры базы данных прошло до конца, и проверьте внешние обработки. Если ошибка в типовом модуле, найдите её текст вместе с номером релиза.
Чем журнал регистрации отличается от технологического журнала?
Журнал регистрации пишет события пользователей и прикладные ошибки, он включён всегда. Технологический журнал пишет работу платформы, СУБД и блокировки, его включают на время диагностики.