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

· 10 мин

Содержание

Чтобы устранить ошибку в 1С, идите от дешёвых проверок к дорогим: прочитайте полный текст сообщения и журнал регистрации, очистите кэш (параметр запуска /ClearCache), затем проверьте базу через Конфигуратор → Администрирование → Тестирование и исправление. Только если это не помогло, разбирайтесь с блокировками, версией платформы и доработками кода.

Порядок важен. Большая часть сбоев в 1С:Предприятии 8.3 — это испорченный кэш, несовпадение версий или конфликт расширения, а не разрушенная база. Если сразу запускать тяжёлые операции, можно потерять день и рабочие данные. Всё ниже касается платформы 8.3 в целом и одинаково работает в Бухгалтерии 3.0, ЗУП 3.1 и УТ 11.

1. Читаем сообщение об ошибке правильно

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

Пример такого текста:

{Документ.РеализацияТоваровУслуг.МодульОбъекта(214)}: Ошибка при вызове метода контекста (Записать)
по причине: Конфликт блокировок при выполнении транзакции

Как его прочитать:

  • 📍 Документ.РеализацияТоваровУслуг.МодульОбъекта — объект и модуль, где упал код;
  • 🔢 (214) — номер строки в модуле. Программисту это экономит часы поиска;
  • 🧩 «по причине: …» — исходная причина. Читайте ошибку снизу вверх: последняя строка ближе всего к сути.

Ошибка воспроизводится или была один раз

Задайте себе три вопроса:

  1. Повторяется ли ошибка при том же действии? Разовый сбой часто связан с сетью или кратким обрывом соединения.
  2. Возникает ли она у других пользователей на этой же базе? Если только у одного — смотрите его компьютер, кэш и права.
  3. Что менялось перед её появлением: обновление конфигурации , новая версия платформы, установка расширения или внешней обработки?

Ответ на третий вопрос часто сразу указывает на причину.

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

Журнал хранит ошибки всех пользователей с датой, именем и объектом. Откройте его в режиме Предприятия: Администрирование → Обслуживание → Журнал регистрации, или в Конфигураторе: Администрирование → Журнал регистрации.

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

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

2. Очистка кэша и временных файлов 1С

Кэш — это локальная копия метаданных конфигурации на компьютере пользователя. После обновления или сбоя он расходится с базой. Типичные симптомы: ошибка при открытии формы, «пропавшие» реквизиты, странное поведение только на одном компьютере.

Способ 1: параметр запуска /ClearCache

  1. В окне запуска выделите базу и нажмите «Изменить».
  2. Пройдите до последней страницы мастера.
  3. В поле дополнительных параметров запуска впишите /ClearCache.
  4. Запустите базу, убедитесь, что ошибка ушла, и удалите параметр, чтобы кэш не чистился при каждом входе.

Способ 2: удаление папок кэша вручную

Закройте все сеансы 1С на компьютере. Затем откройте через Win+R две папки:

%APPDATA%\1C\1cv8
%LOCALAPPDATA%\1C\1cv8

Внутри лежат каталоги с именами вида a1b2c3d4-… (GUID). Каждый — кэш одной базы. Удалите эти каталоги целиком. Файлы 1cestart.cfg и ibases.v8i не трогайте: в них список баз.

Если удалить ibases.v8i, пропадёт список баз в окне запуска. Данные при этом не теряются, но базы придётся добавлять заново.

Заодно очистите %TEMP%: туда 1С выгружает временные файлы печатных форм и обработок.

Кэш на сервере 1С

В клиент-серверном варианте бывает испорчен сеансовый кэш сервера. Он лежит в каталоге кластера srvinfo\reg_1541 в папках snccntx…. Чтобы очистить его, нужно остановить службу «Агент сервера 1С:Предприятия».

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

3. Проверка целостности базы 1С

Если ошибка есть у всех пользователей и связана с данными (не открывается документ, ругается на «битую ссылку», не сходятся итоги), проверяйте саму базу.

Перед любой проверкой с исправлением сделайте резервную копию: Конфигуратор → Администрирование → Выгрузить информационную базу (файл .dt) или полную копию каталога файловой базы.

Тестирование и исправление (ТиИ)

Режим работает в монопольном доступе: все пользователи должны выйти из базы.

  1. Откройте Конфигуратор.
  2. Выберите Администрирование → Тестирование и исправление.
  3. Отметьте проверки (таблица ниже).
  4. Выберите режим «Тестирование и исправление», а не «Только тестирование», если готовы к изменениям.
  5. Для битых ссылок выберите «Создавать объекты» — так вы увидите, где они были, вместо молчаливого удаления.
  6. Нажмите «Выполнить» и дождитесь протокола.
ПроверкаЧто делаетКогда включать
Реиндексация таблицПересобирает индексыОшибки сортировки, «зависания» списков
Логическая целостностьПроверяет структуру таблицПочти всегда
Ссылочная целостностьИщет ссылки на несуществующие объекты«Объект не найден», <Объект не найден> (123:…)
Пересчёт итоговПересчитывает итоги регистровНе сходятся остатки в отчётах
Сжатие таблицУбирает пустое местоФайловая база сильно выросла
Реструктуризация таблицПерестраивает таблицыТолько при серьёзных повреждениях — долго

Для базы на 10–20 ГБ ТиИ со всеми галочками может идти несколько часов. Начните с первых трёх проверок.

Утилита chdbfl.exe для файловой базы

Если файловая база не открывается вообще, Конфигуратор не поможет. Тогда используйте chdbfl.exe. Она лежит в каталоге bin установленной платформы, например C:\Program Files\1cv8\8.3.24.1691\bin\.

  1. Убедитесь, что базу никто не открыл.
  2. Скопируйте каталог базы целиком в другое место.
  3. Запустите chdbfl.exe, укажите файл 1Cv8.1CD.
  4. Включите «Исправлять обнаруженные ошибки» и нажмите «Выполнить».

После неё запустите обычный ТиИ из Конфигуратора.

Для серверной базы на MS SQL или PostgreSQL сначала смотрите на сторону СУБД: место на диске, обслуживание индексов, обновление статистики. ТиИ на большой серверной базе — крайняя мера.

4. Блокировки и медленная работа как причина ошибок

Часть ошибок — следствие производительности. Узнать их можно по тексту:

  • 🔒 Конфликт блокировок при выполнении транзакции — два сеанса пытаются изменить одни данные;
  • ⏳ Превышено максимальное время ожидания предоставления блокировки — сеанс ждал дольше допустимого и сдался;
  • 📁 «Ошибка совместного доступа к файлу » для 1Cv8.1CD — в файловой базе файл держит другой процесс или антивирус.

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

Файловая база блокирует данные целыми таблицами. Когда в ней одновременно работает 5–10 человек и кто-то проводит документы задним числом, конфликты неизбежны.

Что проверить:

  1. Не запускается ли перепроведение за период в рабочее время.
  2. Не сканирует ли антивирус каталог базы. Добавьте файл 1Cv8.1CD в исключения.
  3. Не лежит ли база на сетевом ресурсе с нестабильным соединением.

Если пользователей больше десяти, задумайтесь о переходе на клиент-серверный вариант.

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

Откройте консоль администрирования серверов 1С и найдите базу в кластере. В её ветке есть узлы «Сеансы» и «Блокировки». Там видно, какой сеанс держит блокировку и сколько времени.

Тот же список сеансов отдаёт утилита rac:

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

Параметры для отбора по базе и прочие подкоманды смотрите в справке rac help.

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

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

Когда причина не видна, включите техжурнал. Создайте файл 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:\techlog" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <property name="all"/>
  </log>
</config>

Здесь пишутся только исключения (EXCP), журнал хранится 24 часа. Платформа подхватывает файл без перезапуска, примерно через минуту. Воспроизведите ошибку и смотрите файлы в C:\techlog.

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

5. Ошибки после обновления: версии платформы и совместимость

Если ошибка появилась сразу после обновления, у неё почти всегда одна из четырёх причин.

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

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

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

Конфликт расширения. Расширение, написанное под старый релиз, ссылается на изменённые объекты. Проверка простая: временно отключите расширения и повторите действие. В Бухгалтерии 3.0 и ЗУП 3.1 список расширений находится в Администрирование → Печатные формы, отчеты и обработки → Расширения.

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

Режим совместимости

В свойствах конфигурации есть «Режим совместимости». Он заставляет новую платформу вести себя как старая. Типовые конфигурации выставляют его сами, менять его вручную не нужно. Это настройка для разработчика доработанной базы: неверное значение даёт ошибки вызова методов, которых в старой версии не было.

6. Когда без программиста 1С не обойтись

Сами вы закроете кэш, версии, права, ТиИ и блокировки по расписанию. Программист нужен, если:

  • 🧑‍💻 в тексте ошибки указан модуль доработанного объекта, расширения или внешней обработки;
  • 🔁 ошибка повторяется после очистки кэша и ТиИ, а журнал показывает одно и то же место кода;
  • 🗃️ ТиИ выдаёт ошибки, которые не исправляются повторным запуском;
  • 🐢 блокировки возникают постоянно даже при нормальной нагрузке — нужна переработка запросов или переход на управляемые блокировки в доработках.

Что передать программисту

Хорошо описанная ошибка сокращает время и стоимость работы. Соберите:

  1. Полный текст ошибки с технической частью в фигурных скобках.
  2. Конфигурацию, её релиз и версию платформы (Справка → О программе).
  3. Последовательность действий, при которой ошибка воспроизводится.
  4. Вариант базы: файловая или клиент-серверная, какая СУБД.
  5. Что уже сделано: очистка кэша, ТиИ, отключение расширений.
  6. Выдержку из журнала регистрации или техжурнала.

Чего не делать самостоятельно

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

7. Как снизить число ошибок в будущем

Большинство повторяющихся сбоев предупреждается регламентом:

Что делатьКак частоЗачем
Резервная копия базыЕжедневноОткат при порче данных
Обновление платформы и конфигурацииПо выходу релиза, после проверки на копииИсправления ошибок фирмой-разработчиком
Проверка обновления на копии базыПеред каждым обновлениемОшибки расширений и доработок до попадания в рабочую базу
Обслуживание СУБД (индексы, статистика)ЕженедельноСкорость и меньше таймаутов
Перепроведение и закрытие периодаВне рабочего времениМеньше конфликтов блокировок
Контроль свободного места на дискеПостоянноНехватка места ломает ТиИ, обновления и техжурнал

Держите отдельную копию базы для экспериментов. Любую сомнительную операцию — обновление, ТиИ с исправлением, загрузку расширения — сначала прогоните на ней.

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

Можно ли работать дальше, если ошибка выскочила один раз?
Да, если она не повторяется и данные записались. Проверьте, что документ сохранён и проведён. Если ошибка возникнет снова — начинайте диагностику с журнала регистрации.
Чем отличается ТиИ от chdbfl.exe?
ТиИ запускается из Конфигуратора и работает с любой базой. chdbfl.exe — отдельная утилита только для файловой базы: она нужна, когда база не открывается и Конфигуратор не запускается.
Потеряются ли данные при очистке кэша?
Нет. Кэш содержит копию метаданных и пользовательские настройки форм на этом компьютере. Документы и справочники хранятся в базе и не затрагиваются.
Почему ошибка есть в рабочей базе, а в копии её нет?
Чаще всего копия открывается с чистым кэшем, без части расширений или под другим пользователем. Сравните версии платформы, список расширений и права — разница и укажет причину.
Нужно ли выгонять пользователей для просмотра журнала регистрации?
Нет. Журнал регистрации и консоль сервера работают при подключённых пользователях. Монопольный доступ нужен для ТиИ, обновления структуры конфигурации и загрузки .dt.