CHECKDB нашёл ошибки. Что именно пропало в 1С

14.10.26

База данных - Администрирование СУБД

Администратор прислал вывод проверки целостности CHECKDB: страницы, индексы, служебные имена таблиц и совет с минимальным уровнем исправления, а вам надо решить, что поднимать из бэкапа. Посмотрите у себя на номер индекса в сообщениях: единица значит сами данные, число больше единицы значит отдельный индекс для поиска, и если такие все ошибки, бэкап не нужен. На копии типовой УТ для Казахстана я испортил четыре страницы и разобрал каждый случай: индекс, шапки документов, табличную часть и движения регистра. Показываю, как перевести служебную таблицу в объект метаданных функцией ПолучитьСтруктуруХраненияБазыДанных, когда хватит перепроведения и как получить список конкретных документов сверкой с копией средствами 1С. Код на встроенном языке и обработка, которая делает это по выводу CHECKDB.

Публикация размещена исключительно в образовательных целях, проверено на платформе 8.3.27. Описанное восстановление средствами СУБД (исправление страниц, отключение и перестроение индексов) не является штатным средством платформы. Прямое обращение к СУБД нарушает лицензионное соглашение, может изменить поведение платформы, привести к разрушению базы данных, скомпрометировать данные, а также привести к отказу в официальной поддержке фирмы 1С.

Проверка целостности базы CHECKDB нашла ошибки и выдала простыню: object id, index id, номера страниц, служебные имена таблиц и совет с минимальным уровнем исправления. Администратору этого хватает. 1С-нику по этой простыне надо решить, что пропало в базе и что поднимать из бэкапа: всю базу на вчера или несколько документов.

Ответ переводится на язык 1С двумя полями каждого сообщения: служебным именем таблицы и номером индекса. Дальше платформа сама скажет, какой это объект метаданных, а по виду таблицы уже видно, чего стоит потеря. Я испортил страницы на копии типовой УТ для Казахстана и разобрал, что стоит за каждым видом ошибки. Из четырёх испорченных страниц данные из бэкапа понадобились для двух. Битый индекс перестроился без потерь, хотя CHECKDB и для него написал минимальный уровень исправления. Движения регистра вернуло перепроведение, копия из бэкапа понадобилась только чтобы узнать, какие документы перепровести. А список конкретных документов с номерами и датами собирается штатными средствами 1С.

Стенд

Копия пустой типовой УТ для Казахстана 3.4, платформа 8.3.27. Данные синтетические: 3 000 реализаций и 1 500 приобретений товаров, у каждого документа от двух до шести строк табличной части "Товары" и движения по регистру "Товары на складах". Номера и суммы вымышленные.

Страницы я портил на копии, имитируя сбой диска: контрольная сумма страницы перестаёт сходиться, и сервер баз данных при чтении такой страницы обрывает операцию. Четыре случая по отдельности, каждый на своей странице и каждый с чистой копии: страница индекса документа, страница движений регистра, страница самих документов, страница табличной части. И пятый прогон, все четыре страницы сразу: на нём сделана сверка, числа которой ниже. Что лежало на каждой странице до порчи, я записал заранее и потом сверял результат с этим списком.

Как читать сообщение проверки целостности

На каждую испорченную страницу CHECKDB выдаёт несколько сообщений. Так выглядит кусок вывода со стенда, имя таблицы я заменил описанием:

Сообщение 8928, уровень 16, состояние 1, строка 1
Идентификатор объекта 680389493, идентификатор индекса 1, ... (тип In-row data).
Не удалось обработать страницу (1:136102).
Сообщение 8976, уровень 16, состояние 1, строка 1
Ошибка в таблице. Идентификатор объекта 680389493, идентификатор индекса 1, ...
Страница (1:136102) не обнаружена при просмотре, хотя на нее ссылаются
родительская страница (1:137167) и предыдущая страница (1:136101).
...
CHECKDB обнаружил 0 ошибок размещения и 8 ошибок согласованности в таблице
"(имя таблицы документа)" (идентификатор объекта 680389493).

Для 1С-ника тут важны два поля, имя таблицы и номер индекса, и ещё номера соседних страниц, они пригодятся позже. Ни одно не требует лезть в SQL Server.

Служебное имя таблицы. Оно стоит в итоговой строке "в таблице ...". Это техническое имя вида "объект плюс номер", его печатает сама проверка. Если итоговые строки при копировании обрезали, имя по числовому object id назовёт администратор.

Номер индекса (index id). Единица означает основную таблицу: там лежат сами строки объекта, шапки документов, строки табличных частей, движения. Ноль означает таблицу без основного упорядочивания, в базах 1С это редкость. Всё, что больше единицы, это отдельный индекс для быстрого поиска, например по дате или номеру документа. Строк объекта в нём нет, есть только копия нескольких полей.

Номера соседних страниц. CHECKDB называет страницу до испорченной и страницу после. Это место дыры в цепочке страниц таблицы, и по нему видно, одна страница выпала или несколько разных.

Служебная таблица в объект метаданных

Перевести служебное имя таблицы в объект метаданных платформа умеет сама, функцией ПолучитьСтруктуруХраненияБазыДанных. Первый параметр пустой, значит вся конфигурация, второй Истина отдаёт имена в том же виде, как их печатает проверка целостности:

ИмяТаблицы = "имя из итоговой строки"; // например то, что проверка написала в кавычках
Для Каждого Описание Из ПолучитьСтруктуруХраненияБазыДанных(, Истина) Цикл
	Если НРег(Описание.ИмяТаблицыХранения) = НРег(ИмяТаблицы) Тогда
		Сообщить(Описание.Метаданные + " (" + Описание.Назначение + ")");
	КонецЕсли;
КонецЦикла;

На стенде это вернуло Документ.РеализацияТоваровУслуг (Основная). Функция работает в любой конфигурации, с БСП (Библиотекой стандартных подсистем) и без неё: структура хранения платформенная.

Ключевое здесь поле Назначение. Оно сразу говорит, чего стоит потеря страницы, и по нему обработка ставит вердикт.

Вердикт по виду таблицы

Одна и та же ошибка целостности значит разное в зависимости от того, что это за таблица объекта. Разбор по видам.

Основная таблица ссылочного объекта (документ, справочник, план видов характеристик, план счетов). Здесь лежат сами объекты, их шапки. Потеря страницы это потеря объектов целиком, пересчитать их не из чего. Вердикт красный: нужен бэкап. При этом строки табличных частей и движения этих же документов лежат в других таблицах и обычно целы.

Табличная часть. Отдельная таблица, привязанная к владельцу. Потеря страницы это потеря строк табличной части у нескольких документов, шапки при этом целы. Вердикт красный: нужен бэкап, документ возвращают из копии целиком.

Основная таблица регистра накопления, бухгалтерии, расчёта. Это движения документов. Движения получаются проведением, поэтому бэкап не нужен: достаточно перепровести документы-регистраторы, когда таблица снова читается. Вердикт жёлтый: восстановимо без бэкапа. Сами строки на испорченной странице прочитать уже нельзя, поэтому какие документы перепровести, говорит сверка с копией ниже: копия здесь нужна как справочник, данные из неё не переносятся. Исключение: движения, введённые руками (ручная корректировка, операции, где проводки вводят вручную). Перепроведение их не вернёт. Если в вашей конфигурации регистр так заполняют, жёлтый вердикт по нему читайте как красный.

Итоги регистра. Отдельная таблица, назначение Итоги. Итоги пересчитываются из движений штатным пересчётом (Тестирование и исправление или "Управление итогами"). Вердикт жёлтый: восстановимо без бэкапа.

Регистрация изменений для обмена. Назначение РегистрацияИзменений. Данные учёта тут не задеты вовсе, задета очередь изменений для планов обмена. Сама она не восстановится: после исправления объекты регистрируют для узла заново или делают полную синхронизацию, иначе узел недополучит изменения. Вердикт жёлтый.

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

Константа. Значение вводится вручную, пересчёта нет. Вердикт красный: посмотреть значение в копии и ввести заново.

Служебные таблицы платформы (настройки пользователей, хранилища настроек, история работы). Данные учёта не задеты. Настройки сбрасываются, пользователи настроят заново. Вердикт от жёлтого до "разобрать вручную", смотря что за таблица. Если задеты таблицы, где платформа хранит саму конфигурацию, база может не открыться вовсе, и разбор по объектам уже не поможет: это работа для администратора и бэкапа.

Обработка проходит этот разбор автоматически: по выводу проверки целостности называет объект и красит строку. Зелёный "Данные целы", жёлтый "Восстановимо без бэкапа", красный "Нужен бэкап". Сверху крупная строка итога.

Битый индекс: данные целы, хотя совет пугает

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

Лечится перестроением индекса. Тонкость в порядке: обычное перестроение читает старый индекс и падает на той же испорченной странице. Индекс сначала отключают, потом строят заново из основной таблицы. На стенде после этого проверка целостности чистая, число строк в индексе совпало с числом строк в таблице. Команды выполняет администратор, они не трогают данные.

Список документов средствами 1С

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

Список собирается сравнением с копией, целиком на языке запросов 1С. Порядок такой:

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

Слепок снимается обычными запросами. Пример для документов и их табличной части:

Слепок = Новый Массив;
// перечень документов
Запрос = Новый Запрос("ВЫБРАТЬ Т.Ссылка КАК Ссылка ИЗ Документ.РеализацияТоваровУслуг КАК Т");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	Слепок.Добавить(Строка(Выборка.Ссылка.УникальныйИдентификатор()));
КонецЦикла;

// число строк табличной части по каждому документу
Запрос = Новый Запрос("ВЫБРАТЬ Т.Ссылка КАК Ссылка, КОЛИЧЕСТВО(*) КАК К
	|ИЗ Документ.РеализацияТоваровУслуг.Товары КАК Т СГРУППИРОВАТЬ ПО Т.Ссылка");

Для движений слепок группирует по регистратору:

Запрос = Новый Запрос("ВЫБРАТЬ Т.Регистратор КАК Регистратор, КОЛИЧЕСТВО(*) КАК К
	|ИЗ РегистрНакопления.ТоварыНаСкладах КАК Т СГРУППИРОВАТЬ ПО Т.Регистратор");

Сравнение двух слепков даёт по каждому объекту: документы, пропавшие целиком, документы с недостающими строками табличной части и документы с пропавшими движениями.

По времени: на стенде слепок задетых объектов (документ и регистр, 10 499 строк слепка) снимается за 0,7 секунды на сервере, сравнение идёт 1,2-1,4 секунды. Слепок и сравнение обработка делает порциями по месяцам, так что память не растёт с размером базы, а время растёт с числом строк задетых объектов. На больших базах я это не мерил. Отдельная задача там другая: поднять рядом копию базы из бэкапа, на это нужны место и время администратора.

На стенде сравнение копии с рабочей базой после исправления дало ровно то, что было испорчено: 9 документов "Реализация товаров и услуг" пропали целиком, у 5 документов пропали строки табличной части (19 строк), у 10 документов пропали движения по складу (44 движения). Совпало со списком, снятым до порчи.

Дальше документы возвращаются штатно: выгрузка и загрузка данных XML из копии по списку, документы с пропавшими движениями перепроводятся. Документы, законно удалённые или перепроведённые после бэкапа, тоже попадут в список, поэтому перед возвратом сверяйте их по датам. И помните, что документ из копии вернётся в состоянии на момент бэкапа: правки, сделанные в нём после, придётся повторить руками.

Что после исправления служебными средствами

Если администратор убирает испорченные страницы штатным исправлением сервера баз данных, оно удаляет строки этих страниц и не сообщает, какие документы удалило. На стенде у девяти удалённых документов их собственные строки табличной части и движения остались на других, целых страницах: 41 строка и 41 движение (в синтетике стенда по движению на строку, на рабочей базе соотношение будет своё). То есть остатки на складе после такого исправления считаются в том числе по документам, которых уже нет. База открывается, повторная проверка целостности чистая, а отчёт по остаткам врёт.

Ловится это той же сверкой с копией и штатным тестированием и исправлением с проверкой логической целостности: оно покажет висящие строки и движения без документа. Поэтому порядок такой: сначала полный бэкап базы как есть, с повреждением, и отчёт обработки по выводу CHECKDB, потом исправление, потом сверка с копией. Бэкап с повреждением нужен на случай, если исправление удалит больше, чем ожидали.

Обработка

Всё, что выше, собрано во внешнюю обработку "Повреждение базы 1С на MS SQL: что задето и что поднимать из бэкапа". Она разбирает вывод проверки целостности (текст на русском или английском), называет объекты 1С и ставит вердикт по каждой битой странице. Список конкретных документов даёт кнопка сверки с копией: сравнение двух баз запросами 1С. Отчёт выгружается одним файлом Markdown, чтобы отдать коллеге или нейросети. Обработка к SQL Server не подключается, ничего не исправляет и в базу не пишет. MS SQL, любая конфигурация, проверено на платформе 8.3.27.

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

Файловая база подойдёт? Нет, только клиент-серверная на MS SQL. Для файловой .1CD есть отдельные средства, PostgreSQL в первой версии нет.

Проверка целостности написала минимальный уровень исправления. Данные точно потеряны? Нет. Этот совет она пишет и когда испорчен только индекс, где строк объекта нет. Обработка отделяет такие случаи зелёным вердиктом, индекс перестраивается без потерь.

Какие права нужны? Прав на SQL Server никаких. В 1С проще всего запускать под пользователем с полными правами: структуру хранения платформа отдаёт для административных действий, а слепок читает все задетые объекты в обеих базах.

Насколько точен список сверки? Он называет ровно то, что пропало относительно бэкапа: на стенде 9 документов целиком, 5 документов без части строк табличной части (19 строк) и 10 документов без части движений (44 движения). Главное ограничение: документ, введённый после бэкапа и потерянный на битой странице, сверка не увидит, в копии его нет. Такие ищут по первичным документам и журналу регистрации за период между бэкапом и сбоем.

Что делать с движениями, если документ пропал целиком? Сначала вернуть документ из копии, потом перепровести: без регистратора проводить нечего.

Работает ли на БП, ЗУП, ERP? Перевод таблиц в объекты и сверка работают в любой конфигурации, они платформенные. Сам разбор я гонял на УТ для Казахстана.

А у вас проверка целостности находила ошибки только в индексах, или сразу в данных? И поднимали вы после этого всю базу из бэкапа или отдельные документы?

Обработка из этой статьи: Повреждение базы 1С на MS SQL: что задето и что поднимать из бэкапа.

Другие наши инструменты

Вступайте в нашу телеграмм-группу Инфостарт

DBCC CHECKDB 1С повреждение базы 1С MS SQL repair_allow_data_loss ошибка контрольной суммы страницы битая страница SQL Server 1С ПолучитьСтруктуруХраненияБазыДанных перестроить индекс восстановление документов из бэкапа 1С перепроведение документов движения регистра сверка с копией базы УТ для Казахстана MS SQL 2022

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Архивирование (backup) Инструменты администратора БД 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS! Версия 1.4 от 28.05.2026

7320 руб.

06.11.2012    80374    635    45    

94

Администрирование СУБД Системный администратор Разработчик Бесплатно (free)

5,5 тысячи пользователей в единой базе 1С, розница в режиме 24/7 и SLA 99,98% – в таких условиях любая авария быстро превращается в очереди на кассах, потерю денег и давление со стороны бизнеса. Показываем, как выстроить процесс аварийно-восстановительных работ: от первых алертов и базового скрининга системы до подключения команды, проверки гипотез и дебрифа после инцидента. Разбираем, как метрики, дашборды, техжурнал, Zabbix, Prometheus, Grafana, Telegram-боты и скрипты помогают не гадать, а быстро находить причину проблемы. На реальных авариях объясняем, почему «быстро» не должно означать «рискованно», как работа над ошибками снижает панику и почему каждая авария может сделать систему надежнее.

11.08.2026    3392    jul.dolganova    9    

24

Администрирование СУБД Системный администратор Разработчик Бесплатно (free)

Статья рассказывает об опыте перевода больших баз с MSSQL на Postgres и годовой эксплуатации после перехода. Показано, с какими ограничениями утилиты ibcmd можно столкнуться при миграции больших баз и какие подходы помогают безопасно обходить эти проблемы. Приведены наиболее интересные кейсы, выявленные в эксплуатации: особенности настроек Postgres, поведение оптимизатора, тонкости работы логики и статистики, а также редкие, но критичные ситуации с производительностью. Материал будет полезен тем, кто планирует переход на Postgres и хочет заранее понимать реальные риски, подводные камни и проверенные практики их преодоления.

20.04.2026    10434    berserg    12    

27

Архивирование (backup) Групповая разработка (Git, хранилище) Системный администратор Разработчик Бесплатно (free)

Как дать возможность каждому разработчику 1С вести разработку, тестирование и оптимизацию на собственной полноразмерной копии базы и при этом не тратить миллиарды рублей и тысячи часов на развертывание тестового окружения, а так же экономить дисковое пространство? Расскажем о том, как с помощью инструмента Database Lab получать полноразмерные копии базы 1C на СУБД PostgreSQL за считанные секунды (даже в случае использования многотерабайтных баз).

15.12.2025    14168    nasonkin    19    

31

Администрирование СУБД Разработчик 1С:Предприятие 8 Россия Бесплатно (free)

Ошибка реструктуризации: "Запись не найдена в менеджере имен баз данных". Диагностика и решение проблемы.

22.08.2025    5763    a13k55    1    

19

HighLoad оптимизация Администрирование СУБД Системный администратор Разработчик 1С:Предприятие 8 Бесплатно (free)

Во второй статье по докладу «Дамп – не приговор, а повод задуматься», с которым выступили на конференции INFOSTART TECH EVENT 2024, рассмотрим, какую информацию содержат файлы дампа, чем она полезна и как ее анализировать.

14.04.2025    6227    it-expertise    7    

20

Архивирование (backup) Учет документов Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В текущих версиях 1С пока нет функции, позволяющей автоматически отмечать возврат оригиналов документов с помощью сканера штрих-кодов. Многие контрагенты часто сталкиваются с проблемой утери оригиналов УПД или их невозврата. В ответ на эти запросы было разработано расширение, которое упрощает контроль за возвратом оригиналов документов и помогает лучше организовать их хранение.

12200 руб.

19.02.2025    2937    3    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. V.Nikonov 141 14.10.26 11:09 Сейчас в теме
А в случае Файловой Базы Данных - есть Парсинг сообщений?
Там тоже можно Обмен сформировать и Скачать Потерянные данные из Копии...
Для отправки сообщения требуется регистрация/авторизация