Решение задач 1С:Предприятие 8 на примерах

Ошибки при запуске 1С и «Непредвиденная ошибка»: как исправить

Базы данных и СУБДОпубликовано

Пользователи ищут «как исправить ошибку в 1с 6112», «1с непредвиденная ошибка 1975», «ошибка при запуске 1с 1651» или «ошибка доступа к файлу 1с 1460» — но сами числа почти ничего не объясняют. В статье собран порядок диагностики: как читать текст сообщения, что чистить в кэше, где искать причину блокировки файла базы, как выглядит проблема версий платформы и лицензии. Отдельно — как поймать «Непредвиденную ошибку» в собственном коде и записать её в журнал регистрации.

Как читать сообщение об ошибке 1С

Числа в запросах вроде «6112», «1975», «1651» или «1460» не образуют единого справочника ошибок платформы. Иногда это код операционной системы (например, 1460 в Windows — истечение таймаута операции), иногда внутренний номер, а чаще пользователь просто запомнил цифры из окна ошибки. Смысл всегда находится в полном тексте. Поэтому первым делом сделайте три вещи.

  1. Нажмите «Подробно» (если кнопка есть) и скопируйте полный текст, включая имя модуля и номер строки.
  2. Определите, на каком этапе возникла ошибка: при запуске до появления окна базы, при входе под пользователем или при выполнении конкретной операции.
  3. Вспомните, что менялось накануне: версия платформы, антивирус, права на каталог, перенос базы, обновление конфигурации.

Дальше можно ориентироваться по таблице.

ЭтапТипичные причиныС чего начать
Не открывается окно запуска или список базПовреждён 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 и каталогом для логов. Платформа подхватывает файл без перезапуска; воспроизведите ошибку и откройте журнал в подкаталоге процесса.

SQL-запросы к базе 1С: таблицы, структура хранения и внешние источники

Базы данных и СУБД

Как устроены таблицы 1С в СУБД, как найти соответствие объектов и таблиц, писать SELECT для чтения и почему не стоит менять данные SQL-ом; плюс чтение внешней SQL-базы из 1С.

База данных 1С: файловая и клиент-серверная, перенос между ними

Базы данных и СУБД

Сравнение файловой и клиент-серверной базы 1С: устройство, ограничения, выбор СУБД, создание новой базы, перенос через выгрузку .dt и резервное копирование.

Сервер 1С:Предприятия и кластер: состав, порты, консоль, rac и веб-сервер

Базы данных и СУБД

Устройство сервера 1С и кластера, порты по умолчанию, консоль администрирования и управление сеансами через rac, кэш сервера, установка на Windows и Linux и публикация базы на веб-сервере.

Файл базы данных поврежден в 1С 8.3: как исправить ошибку СУБД

Базы данных и СУБД

Пошаговое восстановление файловой базы 1С при ошибке «Файл базы данных поврежден»: резервная копия, chdbfl.exe, тестирование и исправление и запасные варианты.