Как найти и устранить повреждения информационной базы 1С 8.3

· 10 мин

Содержание

Тестирование и исправление базы 1С запускают в Конфигураторе: Администрирование → Тестирование и исправление…. Сначала сделайте резервную копию, выгоните всех пользователей, затем отметьте нужные проверки и выберите режим «Тестирование и исправление». Для файловой базы с физическими повреждениями перед этим прогоняют утилиту chkdbfs.exe.

Процедура общая для платформы 1С:Предприятие 8.3 и не зависит от конфигурации: одинаково работает для Бухгалтерии, ЗУП, УТ и самописных баз. Различается только путь для файлового и клиент-серверного варианта. Обе схемы разобраны ниже, плюс запуск из командной строки и поиск причины сбоя по журналу регистрации.

1. Подготовка к тестированию базы 1С

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

Сделайте резервную копию

Без копии исправление не запускайте: режим «Создавать объекты» и «Удалять объекты» необратим.

Вариант базыКак сделать копию
ФайловаяЗакрыть все сеансы и скопировать каталог базы целиком, главное — файл 1Cv8.1CD
Файловая или сервернаяКонфигуратор: Администрирование → Выгрузить информационную базу… (файл .dt)
Клиент-сервернаяПолный бэкап средствами СУБД (MS SQL Server, PostgreSQL)

💡 Если база повреждена так, что выгрузка в .dt падает с ошибкой, — не страшно. Для файловой базы достаточно копии файла 1Cv8.1CD. Её и берите за точку отката.

Обеспечьте монопольный доступ

Тестирование и исправление требует монопольного режима. Пока в базе есть хотя бы один сеанс, Конфигуратор выдаст отказ.

  1. Предупредите пользователей и назначьте окно, например вечер пятницы.
  2. В файловой базе убедитесь, что никто не работает . Сеансы видны в Конфигураторе: Администрирование → Активные пользователи.
  3. В клиент-серверной базе откройте консоль администрирования кластера, в свойствах информационной базы включите «Блокировка начала сеансов включена» и завершите оставшиеся сеансы.
  4. Остановите регламентные задания и внешние обмены, которые подключаются к базе (обмен с сайтом, COM-соединения, веб-сервисы).

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

Оцените время

На базе в 2-5 ГБ полная проверка обычно идёт десятки минут. На базе в 50-100 ГБ — несколько часов. Реструктуризация и сжатие таблиц — самые долгие пункты. Не запускайте всё сразу в середине дня.

2. Проверка файловой базы: chkdbfs и Конфигуратор

У файловой базы два уровня повреждений. Физический — испорчена структура самого файла 1Cv8.1CD, например после отключения питания. Логический — файл цел, но внутри битые ссылки, рассогласованные итоги, ошибки индексов.

Шаг 1. Физическая проверка утилитой chkdbfs.exe

Утилита лежит в каталоге платформы: C:\Program Files\1cv8\8.3.xx.xxxx\bin\chkdbfs.exe. Версия утилиты должна совпадать с версией платформы, на которой работает база.

  1. Закройте все сеансы базы.
  2. Запустите chkdbfs.exe от имени администратора Windows.
  3. Укажите путь к файлу 1Cv8.1CD.
  4. Сначала выполните проверку без исправления. Посмотрите отчёт.
  5. Если ошибки найдены — отметьте режим исправления и запустите повторно.

После chkdbfs файл снова открывается Конфигуратором. Но данные внутри могут оставаться нецелостными. Поэтому следующий шаг обязателен.

Шаг 2. Логическая проверка в Конфигураторе

  1. Откройте базу в режиме Конфигуратор под пользователем с полными правами.
  2. Выберите Администрирование → Тестирование и исправление….
  3. Отметьте проверки (какие — в следующем разделе).
  4. Выберите «Тестирование и исправление» и нажмите «Выполнить».
  5. Дождитесь сообщения о завершении и прочитайте протокол в окне сообщений.

💡 Протокол из окна сообщений скопируйте в текстовый файл. Он понадобится, если придётся разбираться, какие объекты программа создала или удалила.

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Реакция на частичную потерю данных

Как поставить в расписание

  1. Сохраните строку в файл tii.bat.
  2. Перед ней добавьте копирование 1Cv8.1CD в папку бэкапов.
  3. В Планировщике заданий Windows создайте задачу на ночное время.
  4. Утром проверяйте tii.log.

Пароль в bat-файле лежит открытым текстом. Создайте отдельного пользователя 1С для обслуживания и ограничьте доступ к файлу правами NTFS.

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

5. Исправление клиент-серверной базы 1С на SQL

В клиент-серверном варианте данные хранит СУБД. Физическую целостность файлов проверяет она, а не 1С. Утилита chkdbfs.exe здесь не применяется.

Что делать на стороне СУБД

СУБДПроверка целостностиОбслуживание индексов и статистики
MS SQL ServerDBCC CHECKDBПерестроение или реорганизация индексов, обновление статистики (план обслуживания)
PostgreSQLАнализ журнала СУБД, amcheck для индексовVACUUM ANALYZE, REINDEX

Пример проверки в SQL Server Management Studio:

DBCC CHECKDB ('Buh') WITH NO_INFOMSGS;

Если команда вернула ошибки согласованности — сначала восстанавливайтесь из бэкапа СУБД. Режимы REPAIR_ALLOW_DATA_LOSS удаляют страницы данных без учёта логики 1С. Применяйте их только когда копии нет, и после них обязательно прогоняйте тестирование в Конфигураторе.

Что делать на стороне 1С

  1. Включите блокировку начала сеансов в консоли кластера.
  2. Запустите Конфигуратор и тестирование с проверкой логической и ссылочной целостности.
  3. Реиндексацию и сжатие в Конфигураторе на SQL обычно не запускают: регулярный план обслуживания СУБД справляется с этим быстрее.

💡 Регулярный план обслуживания для MS SQL: еженедельно перестроение индексов, ежедневно обновление статистики и полный бэкап, плюс журнал транзакций по модели восстановления. Тогда тестирование в 1С понадобится только при реальных сбоях.

Когда виноват не SQL, а кэш сервера

Бывает, что DBCC CHECKDB чистый, тестирование ошибок не находит, а база всё равно падает при входе. Тогда причина часто в сеансовых данных кластера. Их очищают при остановленной службе агента сервера 1С, удаляя файлы snccntx* в каталоге srvinfo\reg_1541.

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

6. Журнал регистрации: откуда взялась ошибка

Тестирование лечит последствия, журнал регистрации показывает причину. Без него повреждение через неделю повторится.

Где открыть журнал

  • 📂 В Конфигураторе: Администрирование → Журнал регистрации.
  • 📂 В пользовательском режиме типовых конфигураций на БСП (БП 3.0, ЗУП 3.1, УТ 11): Администрирование → Обслуживание → Журнал регистрации.
  • 📂 Физически — каталог 1Cv8Log рядом с файлом базы или в каталоге базы на сервере.

Что искать

  1. Поставьте отбор по уровню «Ошибка».
  2. Сузьте интервал до суток перед первым сбоем.
  3. Посмотрите, у какого пользователя и в каком событии ошибка повторяется.
  4. Откройте комментарий события: там полный текст исключения.

Что обычно находится:

  • ⚡ серия событий «Сеанс. Завершение» без нормального выхода у всех пользователей сразу — обрыв питания или сети;
  • 🔁 сбой регламентного задания или обмена, после которого появились битые ссылки;
  • 👤 массовое удаление помеченных объектов одним пользователем незадолго до появления <Объект не найден>.
Диагностика: выберите симптом

Если журнал пуст

Журнал может быть отключён или ограничен уровнем. В Конфигураторе: Администрирование → Настройка журнала регистрации. Поставьте регистрацию ошибок, предупреждений и информации, чтобы при следующем сбое было с чем работать.

7. Пересчёт итогов и контроль после исправления

После исправления базы итоги регистров нужно привести в порядок. Если в настройке тестирования галочка «Пересчёт итогов» стояла — отдельно делать ничего не нужно. Если нет — пересчитайте вручную.

Пересчёт в пользовательском режиме

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

Этот способ не требует монопольного режима для каждого регистра, но во время пересчёта база заметно тормозит. Выполняйте его вне рабочих часов.

Что проверить после исправления

Контроль базы после тестирования
Выполнено: 0 / 5

Объекты-заглушки, созданные режимом «Создавать объекты», обычно имеют наименование вида Объект не найден (…). Найдите их в справочниках поиском по этой фразе. Затем замените ссылки на правильный элемент и пометьте заглушку на удаление.

8. Частые ошибки при исправлении базы 1С

  • ❌ Исправление без копии. Восстановить удалённые программой документы потом нечем.
  • ❌ Сразу «Реструктуризация» и «Удалять объекты». Начинайте с минимального набора: логическая и ссылочная целостность, «Создавать объекты». Радикальные режимы — только если мягкие не помогли.
  • ❌ Проверка на сетевом диске по сети. Файловую базу тестируйте на той машине, где лежит файл, или скопируйте его на локальный диск. Обрыв сети посередине процедуры сам испортит базу.
  • ❌ Версия chkdbfs не та. Утилита из другой версии платформы может не распознать формат файла.
  • ❌ Лечим, не ища причину. Если сбой повторяется, ищите его в журнале регистрации, логах ИБП и состоянии диска (SMART), а не гоняйте тестирование каждую неделю.
  • ❌ Ночной скрипт без контроля. Пакетный запуск с ошибкой монопольного доступа молча ничего не делает. Проверяйте файл протокола.

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

Можно ли запускать тестирование и исправление, пока пользователи работают?
Нет. Процедура требует монопольного режима и не стартует, если в базе есть сеансы. Без исправления, в режиме «Только тестирование», ограничение то же.
Сколько длится тестирование и исправление?
Зависит от размера базы и выбранных операций. Небольшая база проверяется за минуты, база в десятки гигабайт с реструктуризацией — несколько часов.
Как часто нужно тестировать базу 1С?
Регулярно — не обязательно. Запускайте при ошибках, после сбоев питания и перед обновлением конфигурации, если база давно не проверялась. Для серверных баз важнее регулярный план обслуживания СУБД.
Что делать, если тестирование зависло?
Смотрите на нагрузку диска и процессора: на большой базе процедура может долго не обновлять индикатор. Прерванный процесс оставляет базу в неопределённом состоянии, поэтому после принудительного завершения восстанавливайтесь из копии и запускайте заново.
Тестирование не помогло, база не открывается. Что дальше?
Попробуйте открыть копию на другой версии платформы 8.3 и выгрузить её в .dt, затем загрузить в новую пустую базу. Если и это невозможно — восстанавливайтесь из последнего бэкапа.