Ошибка в 1С:Предприятии 8.3 — от текста сообщения до исправления базы
Содержание
Чтобы устранить ошибку в 1С, идите от дешёвых проверок к дорогим: прочитайте полный текст сообщения и журнал регистрации, очистите кэш (параметр запуска /ClearCache), затем проверьте базу через Конфигуратор → Администрирование → Тестирование и исправление. Только если это не помогло, разбирайтесь с блокировками, версией платформы и доработками кода.
Порядок важен. Большая часть сбоев в 1С:Предприятии 8.3 — это испорченный кэш, несовпадение версий или конфликт расширения, а не разрушенная база. Если сразу запускать тяжёлые операции, можно потерять день и рабочие данные. Всё ниже касается платформы 8.3 в целом и одинаково работает в Бухгалтерии 3.0, ЗУП 3.1 и УТ 11.
1. Читаем сообщение об ошибке правильно
Первое, что нужно сделать, — не закрывать окно ошибки сразу. В нём есть ссылка на подробный текст. Раскройте его и скопируйте целиком, вместе с технической частью в фигурных скобках.
Пример такого текста:
{Документ.РеализацияТоваровУслуг.МодульОбъекта(214)}: Ошибка при вызове метода контекста (Записать)
по причине: Конфликт блокировок при выполнении транзакции
Как его прочитать:
- 📍
Документ.РеализацияТоваровУслуг.МодульОбъекта— объект и модуль, где упал код; - 🔢
(214)— номер строки в модуле. Программисту это экономит часы поиска; - 🧩 «по причине: …» — исходная причина. Читайте ошибку снизу вверх: последняя строка ближе всего к сути.
Ошибка воспроизводится или была один раз
Задайте себе три вопроса:
- Повторяется ли ошибка при том же действии? Разовый сбой часто связан с сетью или кратким обрывом соединения.
- Возникает ли она у других пользователей на этой же базе? Если только у одного — смотрите его компьютер, кэш и права.
- Что менялось перед её появлением: обновление конфигурации , новая версия платформы, установка расширения или внешней обработки?
Ответ на третий вопрос часто сразу указывает на причину.
Журнал регистрации
Журнал хранит ошибки всех пользователей с датой, именем и объектом. Откройте его в режиме Предприятия: Администрирование → Обслуживание → Журнал регистрации, или в Конфигураторе: Администрирование → Журнал регистрации.
Установите отбор по уровню «Ошибка» и периоду, когда начались проблемы. Если одна и та же ошибка идёт у разных людей по одному документу — проблема в данных этого документа. Если у одного человека на разных документах — в его сеансе или настройках.
Если журнал пуст, а ошибки есть, включите технологический журнал (раздел 4). Он фиксирует исключения платформы, которые в журнал регистрации не попадают.
2. Очистка кэша и временных файлов 1С
Кэш — это локальная копия метаданных конфигурации на компьютере пользователя. После обновления или сбоя он расходится с базой. Типичные симптомы: ошибка при открытии формы, «пропавшие» реквизиты, странное поведение только на одном компьютере.
Способ 1: параметр запуска /ClearCache
- В окне запуска выделите базу и нажмите «Изменить».
- Пройдите до последней страницы мастера.
- В поле дополнительных параметров запуска впишите
/ClearCache. - Запустите базу, убедитесь, что ошибка ушла, и удалите параметр, чтобы кэш не чистился при каждом входе.
Способ 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) или полную копию каталога файловой базы.
Тестирование и исправление (ТиИ)
Режим работает в монопольном доступе: все пользователи должны выйти из базы.
- Откройте Конфигуратор.
- Выберите
Администрирование → Тестирование и исправление. - Отметьте проверки (таблица ниже).
- Выберите режим «Тестирование и исправление», а не «Только тестирование», если готовы к изменениям.
- Для битых ссылок выберите «Создавать объекты» — так вы увидите, где они были, вместо молчаливого удаления.
- Нажмите «Выполнить» и дождитесь протокола.
| Проверка | Что делает | Когда включать |
|---|---|---|
| Реиндексация таблиц | Пересобирает индексы | Ошибки сортировки, «зависания» списков |
| Логическая целостность | Проверяет структуру таблиц | Почти всегда |
| Ссылочная целостность | Ищет ссылки на несуществующие объекты | «Объект не найден», <Объект не найден> (123:…) |
| Пересчёт итогов | Пересчитывает итоги регистров | Не сходятся остатки в отчётах |
| Сжатие таблиц | Убирает пустое место | Файловая база сильно выросла |
| Реструктуризация таблиц | Перестраивает таблицы | Только при серьёзных повреждениях — долго |
Для базы на 10–20 ГБ ТиИ со всеми галочками может идти несколько часов. Начните с первых трёх проверок.
Утилита chdbfl.exe для файловой базы
Если файловая база не открывается вообще, Конфигуратор не поможет. Тогда используйте chdbfl.exe. Она лежит в каталоге bin установленной платформы, например C:\Program Files\1cv8\8.3.24.1691\bin\.
- Убедитесь, что базу никто не открыл.
- Скопируйте каталог базы целиком в другое место.
- Запустите
chdbfl.exe, укажите файл1Cv8.1CD. - Включите «Исправлять обнаруженные ошибки» и нажмите «Выполнить».
После неё запустите обычный ТиИ из Конфигуратора.
Для серверной базы на MS SQL или PostgreSQL сначала смотрите на сторону СУБД: место на диске, обслуживание индексов, обновление статистики. ТиИ на большой серверной базе — крайняя мера.
4. Блокировки и медленная работа как причина ошибок
Часть ошибок — следствие производительности. Узнать их можно по тексту:
- 🔒
Конфликт блокировок при выполнении транзакции— два сеанса пытаются изменить одни данные; - ⏳
Превышено максимальное время ожидания предоставления блокировки— сеанс ждал дольше допустимого и сдался; - 📁 «Ошибка совместного доступа к файлу
» для
1Cv8.1CD— в файловой базе файл держит другой процесс или антивирус.
Файловая база
Файловая база блокирует данные целыми таблицами. Когда в ней одновременно работает 5–10 человек и кто-то проводит документы задним числом, конфликты неизбежны.
Что проверить:
- Не запускается ли перепроведение за период в рабочее время.
- Не сканирует ли антивирус каталог базы. Добавьте файл
1Cv8.1CDв исключения. - Не лежит ли база на сетевом ресурсе с нестабильным соединением.
Если пользователей больше десяти, задумайтесь о переходе на клиент-серверный вариант.
Клиент-серверная база
Откройте консоль администрирования серверов 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С не обойтись
Сами вы закроете кэш, версии, права, ТиИ и блокировки по расписанию. Программист нужен, если:
- 🧑💻 в тексте ошибки указан модуль доработанного объекта, расширения или внешней обработки;
- 🔁 ошибка повторяется после очистки кэша и ТиИ, а журнал показывает одно и то же место кода;
- 🗃️ ТиИ выдаёт ошибки, которые не исправляются повторным запуском;
- 🐢 блокировки возникают постоянно даже при нормальной нагрузке — нужна переработка запросов или переход на управляемые блокировки в доработках.
Что передать программисту
Хорошо описанная ошибка сокращает время и стоимость работы. Соберите:
- Полный текст ошибки с технической частью в фигурных скобках.
- Конфигурацию, её релиз и версию платформы (
Справка → О программе). - Последовательность действий, при которой ошибка воспроизводится.
- Вариант базы: файловая или клиент-серверная, какая СУБД.
- Что уже сделано: очистка кэша, ТиИ, отключение расширений.
- Выдержку из журнала регистрации или техжурнала.
Чего не делать самостоятельно
- ❌ Не правьте модули типовой конфигурации «на месте» без снятия с поддержки. Следующее обновление станет сложным и дорогим.
- ❌ Не удаляйте объекты, найденные ТиИ как битые, без понимания, откуда на них ссылки.
- ❌ Не загружайте .dt «поверх» рабочей базы, не проверив, что файл свежий. Загрузка полностью заменяет данные.
7. Как снизить число ошибок в будущем
Большинство повторяющихся сбоев предупреждается регламентом:
| Что делать | Как часто | Зачем |
|---|---|---|
| Резервная копия базы | Ежедневно | Откат при порче данных |
| Обновление платформы и конфигурации | По выходу релиза, после проверки на копии | Исправления ошибок фирмой-разработчиком |
| Проверка обновления на копии базы | Перед каждым обновлением | Ошибки расширений и доработок до попадания в рабочую базу |
| Обслуживание СУБД (индексы, статистика) | Еженедельно | Скорость и меньше таймаутов |
| Перепроведение и закрытие периода | Вне рабочего времени | Меньше конфликтов блокировок |
| Контроль свободного места на диске | Постоянно | Нехватка места ломает ТиИ, обновления и техжурнал |
Держите отдельную копию базы для экспериментов. Любую сомнительную операцию — обновление, ТиИ с исправлением, загрузку расширения — сначала прогоните на ней.