Ошибки при запуске 1С и «Непредвиденная ошибка»: как исправить
Пользователи ищут «как исправить ошибку в 1с 6112», «1с непредвиденная ошибка 1975», «ошибка при запуске 1с 1651» или «ошибка доступа к файлу 1с 1460» — но сами числа почти ничего не объясняют. В статье собран порядок диагностики: как читать текст сообщения, что чистить в кэше, где искать причину блокировки файла базы, как выглядит проблема версий платформы и лицензии. Отдельно — как поймать «Непредвиденную ошибку» в собственном коде и записать её в журнал регистрации.
Как читать сообщение об ошибке 1С
Числа в запросах вроде «6112», «1975», «1651» или «1460» не образуют единого справочника ошибок платформы. Иногда это код операционной системы (например, 1460 в Windows — истечение таймаута операции), иногда внутренний номер, а чаще пользователь просто запомнил цифры из окна ошибки. Смысл всегда находится в полном тексте. Поэтому первым делом сделайте три вещи.
- Нажмите «Подробно» (если кнопка есть) и скопируйте полный текст, включая имя модуля и номер строки.
- Определите, на каком этапе возникла ошибка: при запуске до появления окна базы, при входе под пользователем или при выполнении конкретной операции.
- Вспомните, что менялось накануне: версия платформы, антивирус, права на каталог, перенос базы, обновление конфигурации.
Дальше можно ориентироваться по таблице.
| Этап | Типичные причины | С чего начать |
|---|---|---|
| Не открывается окно запуска или список баз | Повреждён ibases.v8i, права на профиль пользователя | Проверить список баз, переименовать каталог 1CEStart |
| Ошибка при запуске базы | Версия платформы, лицензия, блокировка файла | Прочитать полный текст, проверить версию и ключ |
| Ошибка сразу после входа | Повреждён локальный кэш | Очистить кэш пользователя |
| «Непредвиденная ошибка» в операции | Исключение в коде или в данных | Журнал регистрации, технологический журнал |
Очистка кэша пользователя
Платформа хранит на компьютере кэш метаданных, настройки форм и окон, историю. Если запись прервалась из-за аварии или нехватки места, следующий запуск может падать с невнятной ошибкой. Лечится это просто, а данные базы не затрагиваются. Закройте все окна 1С и переименуйте два каталога: в каждом лежат вложенные папки с именами-идентификаторами, по одной на базу.
rem Переименование вместо удаления оставляет возможность вернуть всё обратно ren "%APPDATA%\1C\1cv8" 1cv8.old ren "%LOCALAPPDATA%\1C\1cv8" 1cv8.old
Каталог %LOCALAPPDATA%\1C\1cv8 содержит основной кэш, а %APPDATA%\1C\1cv8 — пользовательские настройки профиля. При следующем запуске платформа создаст их заново, первый вход будет немного медленнее, а настройки окон придётся выставить заново. Не удаляйте целиком каталог %APPDATA%\1C: рядом в 1CEStart лежит список баз. Дополнительно у 1cv8.exe есть ключ /ClearCache, который очищает кэш клиент-серверных вызовов при запуске; его можно указать в дополнительных параметрах запуска базы. Если проблема именно в формате кэша, подробнее см. ошибку формата потока.
Ошибка доступа к файлу базы и блокировка
Для файловой базы платформа открывает 1Cv8.1CD и создаёт рядом служебные файлы, поэтому у пользователя должно быть право на изменение в каталоге базы целиком, а не только на чтение файла. Типичные причины сообщения «Ошибка доступа к файлу» или «Файл занят»:
- Нет прав на запись или создание файлов в каталоге базы. Нужен доступ «Изменение» на сам каталог и вложенные объекты.
- Файл удерживает чужой процесс: антивирус в режиме реального времени, программа резервного копирования, облачная синхронизация. Исключите каталог базы из проверки.
- На компьютере остался зависший процесс
1cv8.exeили1cv8c.exeпосле аварии. Завершите его в диспетчере задач. - База открыта в монопольном режиме конфигуратором или внешней обработкой, и обычный запуск невозможен.
- Путь указан через сопоставленный сетевой диск, который не подключился при старте. Надёжнее использовать UNC-путь вида
\\сервер\папка\база. - Сетевое хранилище обрывает соединение или «засыпает», тогда операция завершается по таймауту.
Чтобы понять, кто держит файл, запустите системный «Монитор ресурсов» (вкладка «Диск», поиск по имени 1Cv8.1CD). Если файл повреждён, а не занят, действуйте по статье про ошибку «Файл базы данных поврежден».
Версия платформы и список баз
Список информационных баз пользователя хранится в текстовом файле %APPDATA%\1C\1CEStart\ibases.v8i. Каждая база — отдельная секция. Если в окне запуска пусто или база «пропала», проверьте этот файл, а общий для нескольких компьютеров список задаётся параметром в 1cestart.cfg из того же каталога.
[Торговля] Connect=File="D:\Bases\Trade"; Version=8.3 [Бухгалтерия на сервере] Connect=Srvr="srv01";Ref="buh"; Version=8.3
Ошибки запуска из-за версии обычно двух видов. Первый: база уже обновлена более новой платформой, а на компьютере запускается старая — в этом случае установите платформу не ниже нужной либо укажите версию в свойствах базы в окне запуска. Второй: в клиент-серверном варианте версия клиента не соответствует версии кластера серверов; платформа сообщает о несоответствии, а решением является установка на клиент той же версии, что и на сервере. Если установлено несколько релизов, проверьте, какой именно используется для данной базы: поле версии в свойствах базы позволяет закрепить её.
Не хватает лицензии
Сообщения о том, что ключ защиты не найден или лицензии исчерпаны, к ошибкам платформы в строгом смысле не относятся. Проверьте, что аппаратный ключ виден системе и драйвер установлен, что программная лицензия активирована на этом компьютере, а в клиент-серверном варианте менеджер лицензий кластера действительно выдаёт лицензии. Если число одновременных сеансов превышено, достаточно завершить лишние в консоли кластера.
Технологический журнал: когда сообщения мало
Если в интерфейсе виден только общий заголовок, причину подскажет технологический журнал. Он настраивается файлом 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:\1CLogs\tj" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
Каталог для логов создайте заранее и дайте на него права службе или пользователю, под которым запущена платформа. Платформа подхватывает изменения файла самостоятельно. Воспроизведите ошибку и откройте файл журнала в подкаталоге, названном по процессу (rphost_… для сервера). В строке события EXCP будет описание исключения и контекст. Журнал растёт быстро, поэтому держите его включённым недолго и ограничивайте параметром history (часы хранения).
«Непредвиденная ошибка» в коде: как перехватить и записать
Если сообщение возникает при выполнении вашей процедуры, оберните опасный участок в Попытка … Исключение и сохраните подробности. Функция ОписаниеОшибки() возвращает текст текущей ошибки, а ИнформацияОбОшибке() — объект с полями Описание, Причина, ИмяМодуля, НомерСтроки, ИсходнаяСтрока. Для журнала удобна ПодробноеПредставлениеОшибки(), которая собирает всю цепочку причин в одну строку.
Процедура ОбработатьЗагрузку()
Попытка
ВыполнитьИмпорт();
Исключение
Информация = ИнформацияОбОшибке();
ТекстОшибки = ПодробноеПредставлениеОшибки(Информация);
ЗаписьЖурналаРегистрации("Загрузка.Импорт",
УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибки);
Сообщить("Загрузка не выполнена: " + КраткоеПредставлениеОшибки(Информация));
КонецПопытки;
КонецПроцедуры
Параметры ЗаписьЖурналаРегистрации идут в порядке: имя события, уровень, объект метаданных, данные, комментарий, режим транзакции. Здесь объект и данные пропущены, а комментарий передан пятым. Имя события выбирайте осмысленным: по нему удобно отбирать записи. Просмотр журнала — в конфигураторе («Администрирование → Журнал регистрации») или в пользовательском режиме в разделе администрирования.
Если нужно, чтобы вызывающий код всё равно узнал об ошибке, внутри блока Исключение повторно вызовите исключение оператором ВызватьИсключение без параметров. Тогда журнал будет заполнен, а ошибка дойдёт до вызывающего кода и пользователя.
Частые ошибки при диагностике
- Искать решение по номеру из окна, не прочитав полный текст сообщения и не определив этап.
- Удалять кэш и каталог
1CEStartцеликом вместе со списком баз и затем долго восстанавливать подключения. - Оставлять включённым технологический журнал на постоянной основе с параметром
allдля всех событий: диск заполняется за часы. - Глушить исключение пустым блоком
Исключение— потом причина ошибки не определяется вообще. - Править права на файл базы вместо каталога: платформе нужно создавать и удалять служебные файлы.
- Запускать несколько версий платформы с одной базой без закрепления версии в свойствах базы.
Актуальность для новых версий
Описанные приёмы работают на всех релизах платформы 8.3. Расположение пользовательских каталогов %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8, список баз ibases.v8i и формат logcfg.xml не менялись принципиально за время ветки 8.3. В свежих релизах (8.3.2x) сообщения об ошибках стали подробнее, а в тексте часто указывается модуль и номер строки, поэтому по «Подробно» диагностика проходит быстрее. Функции ПодробноеПредставлениеОшибки и ЗаписьЖурналаРегистрации доступны во всех актуальных версиях.
Частые вопросы
Что значит «Непредвиденная ошибка» в 1С?
Это общее сообщение платформы, когда исключение не удалось отнести к конкретной понятной причине. Смысл содержится в тексте после заголовка и в окне «Подробно»: модуль, строка и описание. Сам заголовок диагноза не даёт.
Можно ли удалить кэш 1С, не потеряв данные?
Да. Кэш и пользовательские настройки на компьютере не содержат данных базы: они пересоздаются при следующем запуске. Потеряются только локальные настройки окон и форм. Список баз ibases.v8i лежит в другом каталоге, его не удаляйте.
Почему 1С пишет «Ошибка доступа к файлу», хотя права есть?
Чаще всего файл базы занят другим процессом: антивирусом, резервным копированием или сеансом, который завис после аварии. Проверьте процессы 1cv8.exe, права на создание файлов в каталоге базы и путь: лучше использовать UNC-путь, а не сопоставленный диск.
Как включить технологический журнал, чтобы найти причину ошибки?
Создайте файл logcfg.xml в каталоге conf установленной платформы с настройкой события EXCP и каталогом для логов. Платформа подхватывает файл без перезапуска; воспроизведите ошибку и откройте журнал в подкаталоге процесса.