Как найти и устранить повреждения информационной базы 1С 8.3
Содержание
Тестирование и исправление базы 1С запускают в Конфигураторе: Администрирование → Тестирование и исправление…. Сначала сделайте резервную копию, выгоните всех пользователей, затем отметьте нужные проверки и выберите режим «Тестирование и исправление». Для файловой базы с физическими повреждениями перед этим прогоняют утилиту chkdbfs.exe.
Процедура общая для платформы 1С:Предприятие 8.3 и не зависит от конфигурации: одинаково работает для Бухгалтерии, ЗУП, УТ и самописных баз. Различается только путь для файлового и клиент-серверного варианта. Обе схемы разобраны ниже, плюс запуск из командной строки и поиск причины сбоя по журналу регистрации.
1. Подготовка к тестированию базы 1С
Тестирование и исправление меняет данные прямо в таблицах. Если что-то пойдёт не так, откатиться можно только из копии. Поэтому подготовка занимает больше времени, чем сама проверка.
Сделайте резервную копию
Без копии исправление не запускайте: режим «Создавать объекты» и «Удалять объекты» необратим.
| Вариант базы | Как сделать копию |
|---|---|
| Файловая | Закрыть все сеансы и скопировать каталог базы целиком, главное — файл 1Cv8.1CD |
| Файловая или серверная | Конфигуратор: Администрирование → Выгрузить информационную базу… (файл .dt) |
| Клиент-серверная | Полный бэкап средствами СУБД (MS SQL Server, PostgreSQL) |
💡 Если база повреждена так, что выгрузка в .dt падает с ошибкой, — не страшно. Для файловой базы достаточно копии файла 1Cv8.1CD. Её и берите за точку отката.
Обеспечьте монопольный доступ
Тестирование и исправление требует монопольного режима. Пока в базе есть хотя бы один сеанс, Конфигуратор выдаст отказ.
- Предупредите пользователей и назначьте окно, например вечер пятницы.
- В файловой базе убедитесь, что никто не работает
. Сеансы видны в Конфигураторе:
Администрирование → Активные пользователи. - В клиент-серверной базе откройте консоль администрирования кластера, в свойствах информационной базы включите «Блокировка начала сеансов включена» и завершите оставшиеся сеансы.
- Остановите регламентные задания и внешние обмены, которые подключаются к базе (обмен с сайтом, COM-соединения, веб-сервисы).
Принудительное завершение сеансов обрывает работу пользователей. Несохранённые документы пропадут. Делайте это только после предупреждения и вне рабочего времени.
Оцените время
На базе в 2-5 ГБ полная проверка обычно идёт десятки минут. На базе в 50-100 ГБ — несколько часов. Реструктуризация и сжатие таблиц — самые долгие пункты. Не запускайте всё сразу в середине дня.
2. Проверка файловой базы: chkdbfs и Конфигуратор
У файловой базы два уровня повреждений. Физический — испорчена структура самого файла 1Cv8.1CD, например после отключения питания. Логический — файл цел, но внутри битые ссылки, рассогласованные итоги, ошибки индексов.
Шаг 1. Физическая проверка утилитой chkdbfs.exe
Утилита лежит в каталоге платформы: C:\Program Files\1cv8\8.3.xx.xxxx\bin\chkdbfs.exe. Версия утилиты должна совпадать с версией платформы, на которой работает база.
- Закройте все сеансы базы.
- Запустите
chkdbfs.exeот имени администратора Windows. - Укажите путь к файлу
1Cv8.1CD. - Сначала выполните проверку без исправления. Посмотрите отчёт.
- Если ошибки найдены — отметьте режим исправления и запустите повторно.
После chkdbfs файл снова открывается Конфигуратором. Но данные внутри могут оставаться нецелостными. Поэтому следующий шаг обязателен.
Шаг 2. Логическая проверка в Конфигураторе
- Откройте базу в режиме Конфигуратор под пользователем с полными правами.
- Выберите
Администрирование → Тестирование и исправление…. - Отметьте проверки (какие — в следующем разделе).
- Выберите «Тестирование и исправление» и нажмите «Выполнить».
- Дождитесь сообщения о завершении и прочитайте протокол в окне сообщений.
💡 Протокол из окна сообщений скопируйте в текстовый файл. Он понадобится, если придётся разбираться, какие объекты программа создала или удалила.
3. Какие галочки ставить при тестировании и исправлении
Окно проверки состоит из списка операций и блока реакций на найденные ошибки. Ниже — что делает каждая операция.
| Операция | Что делает | Когда включать |
|---|---|---|
| Реиндексация таблиц информационной базы | Перестраивает индексы | Медленные запросы, ошибки в отчётах и отборах |
| Проверка логической целостности | Проверяет внутреннюю структуру таблиц | Всегда |
| Проверка ссылочной целостности | Ищет ссылки на несуществующие объекты | Появилось <Объект не найден> |
| Пересчёт итогов | Перестраивает таблицы итогов регистров | Расхождения в остатках и оборотах |
| Сжатие таблиц информационной базы | Убирает пустые записи, уменьшает файл | После массового удаления данных |
| Реструктуризация таблиц информационной базы | Пересоздаёт таблицы заново | Только при тяжёлых повреждениях |
Реакции на найденные проблемы
Для ссылок на несуществующие объекты есть три варианта:
- 🧩 «Создавать объекты» — программа создаёт пустые объекты-заглушки, ссылка остаётся рабочей. Самый безопасный вариант: потом заглушку можно найти и заменить вручную.
- 🧹 «Очищать ссылки» — поле с битой ссылкой становится пустым. В документе пропадёт, например, контрагент или номенклатура.
- ⏸ «Не изменять» — только отчёт, без правки.
Для частичной потери данных объекта — «Создавать объекты», «Удалять объекты» или «Не изменять». Удаление уберёт документ целиком вместе с его движениями.
«Очищать ссылки» и «Удалять объекты» в бухгалтерской базе меняют закрытые периоды. После них отчётность за прошлые кварталы может не сойтись с поданной. Выбирайте их, только когда точно знаете, что эти данные не нужны.
Режим «Только тестирование»
Сначала запустите «Только тестирование». Программа ничего не меняет, а только выводит список проблем. По нему решаете, какие реакции выбрать. На большой базе это экономит повторный многочасовой прогон.
Такой порядок особенно полезен при ошибке <Объект не найден>: в протоколе будет видно, какие таблицы и сколько ссылок затронуто.
4. Тестирование и исправление через командную строку 1cv8.exe
Пакетный запуск нужен для ночного обслуживания без участия администратора. Конфигуратор стартует без окон и пишет протокол в файл.
Пример для файловой базы:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /DisableStartupDialogs /IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals -BadRefCreate -BadDataCreate /Out "D:\Logs\tii.log"
Для серверной базы вместо /F укажите /S "server\basename".
Основные ключи после /IBCheckAndRepair:
| Ключ | Действие |
|---|---|
-ReIndex | Реиндексация таблиц |
-LogIntegrity | Проверка логической целостности |
-LogAndRefsIntegrity | Логическая и ссылочная целостность вместе |
-RecalcTotals | Пересчёт итогов |
-IBCompression | Сжатие таблиц |
-Rebuild | Реструктуризация таблиц |
-TestOnly | Только тестирование, без исправления |
-BadRefCreate / -BadRefClear / -BadRefNone | Реакция на битые ссылки |
-BadDataCreate / -BadDataDelete | Реакция на частичную потерю данных |
Как поставить в расписание
- Сохраните строку в файл
tii.bat. - Перед ней добавьте копирование
1Cv8.1CDв папку бэкапов. - В Планировщике заданий Windows создайте задачу на ночное время.
- Утром проверяйте
tii.log.
Пароль в bat-файле лежит открытым текстом. Создайте отдельного пользователя 1С для обслуживания и ограничьте доступ к файлу правами NTFS.
Если в момент запуска в базе кто-то работает, задача завершится с ошибкой монопольного доступа. Для серверной базы блокировку сеансов можно включить в консоли кластера заранее, а снять после проверки.
5. Исправление клиент-серверной базы 1С на SQL
В клиент-серверном варианте данные хранит СУБД. Физическую целостность файлов проверяет она, а не 1С. Утилита chkdbfs.exe здесь не применяется.
Что делать на стороне СУБД
| СУБД | Проверка целостности | Обслуживание индексов и статистики |
|---|---|---|
| MS SQL Server | DBCC CHECKDB | Перестроение или реорганизация индексов, обновление статистики (план обслуживания) |
| PostgreSQL | Анализ журнала СУБД, amcheck для индексов | VACUUM ANALYZE, REINDEX |
Пример проверки в SQL Server Management Studio:
DBCC CHECKDB ('Buh') WITH NO_INFOMSGS;
Если команда вернула ошибки согласованности — сначала восстанавливайтесь из бэкапа СУБД. Режимы REPAIR_ALLOW_DATA_LOSS удаляют страницы данных без учёта логики 1С. Применяйте их только когда копии нет, и после них обязательно прогоняйте тестирование в Конфигураторе.
Что делать на стороне 1С
- Включите блокировку начала сеансов в консоли кластера.
- Запустите Конфигуратор и тестирование с проверкой логической и ссылочной целостности.
- Реиндексацию и сжатие в Конфигураторе на SQL обычно не запускают: регулярный план обслуживания СУБД справляется с этим быстрее.
💡 Регулярный план обслуживания для MS SQL: еженедельно перестроение индексов, ежедневно обновление статистики и полный бэкап, плюс журнал транзакций по модели восстановления. Тогда тестирование в 1С понадобится только при реальных сбоях.
Когда виноват не SQL, а кэш сервера
Бывает, что DBCC CHECKDB чистый, тестирование ошибок не находит, а база всё равно падает при входе. Тогда причина часто в сеансовых данных кластера. Их очищают при остановленной службе агента сервера 1С, удаляя файлы snccntx* в каталоге srvinfo\reg_1541.
Остановка службы сервера 1С отключает всех пользователей всех баз на этом сервере. Делайте это только в согласованное окно.
6. Журнал регистрации: откуда взялась ошибка
Тестирование лечит последствия, журнал регистрации показывает причину. Без него повреждение через неделю повторится.
Где открыть журнал
- 📂 В Конфигураторе:
Администрирование → Журнал регистрации. - 📂 В пользовательском режиме типовых конфигураций на БСП (БП 3.0, ЗУП 3.1, УТ 11):
Администрирование → Обслуживание → Журнал регистрации. - 📂 Физически — каталог
1Cv8Logрядом с файлом базы или в каталоге базы на сервере.
Что искать
- Поставьте отбор по уровню «Ошибка».
- Сузьте интервал до суток перед первым сбоем.
- Посмотрите, у какого пользователя и в каком событии ошибка повторяется.
- Откройте комментарий события: там полный текст исключения.
Что обычно находится:
- ⚡ серия событий «Сеанс. Завершение» без нормального выхода у всех пользователей сразу — обрыв питания или сети;
- 🔁 сбой регламентного задания или обмена, после которого появились битые ссылки;
- 👤 массовое удаление помеченных объектов одним пользователем незадолго до появления
<Объект не найден>.
Если журнал пуст
Журнал может быть отключён или ограничен уровнем. В Конфигураторе: Администрирование → Настройка журнала регистрации. Поставьте регистрацию ошибок, предупреждений и информации, чтобы при следующем сбое было с чем работать.
7. Пересчёт итогов и контроль после исправления
После исправления базы итоги регистров нужно привести в порядок. Если в настройке тестирования галочка «Пересчёт итогов» стояла — отдельно делать ничего не нужно. Если нет — пересчитайте вручную.
Пересчёт в пользовательском режиме
- Включите показ меню «Все функции»: главное меню
Сервис → Параметры, флажок «Отображать команду «Все функции»». - Откройте
Все функции → Стандартные → Управление итогами. - На вкладке с полными возможностями выберите регистры и выполните пересчёт итогов.
Этот способ не требует монопольного режима для каждого регистра, но во время пересчёта база заметно тормозит. Выполняйте его вне рабочих часов.
Что проверить после исправления
Объекты-заглушки, созданные режимом «Создавать объекты», обычно имеют наименование вида Объект не найден (…). Найдите их в справочниках поиском по этой фразе. Затем замените ссылки на правильный элемент и пометьте заглушку на удаление.
8. Частые ошибки при исправлении базы 1С
- ❌ Исправление без копии. Восстановить удалённые программой документы потом нечем.
- ❌ Сразу «Реструктуризация» и «Удалять объекты». Начинайте с минимального набора: логическая и ссылочная целостность, «Создавать объекты». Радикальные режимы — только если мягкие не помогли.
- ❌ Проверка на сетевом диске по сети. Файловую базу тестируйте на той машине, где лежит файл, или скопируйте его на локальный диск. Обрыв сети посередине процедуры сам испортит базу.
- ❌ Версия chkdbfs не та. Утилита из другой версии платформы может не распознать формат файла.
- ❌ Лечим, не ища причину. Если сбой повторяется, ищите его в журнале регистрации, логах ИБП и состоянии диска (SMART), а не гоняйте тестирование каждую неделю.
- ❌ Ночной скрипт без контроля. Пакетный запуск с ошибкой монопольного доступа молча ничего не делает. Проверяйте файл протокола.
Частые вопросы
Можно ли запускать тестирование и исправление, пока пользователи работают?
Сколько длится тестирование и исправление?
Как часто нужно тестировать базу 1С?
Что делать, если тестирование зависло?
Тестирование не помогло, база не открывается. Что дальше?
.dt, затем загрузить в новую пустую базу. Если и это невозможно — восстанавливайтесь из последнего бэкапа.