При работе с платформой 1С:Предприятие 7.7 администраторы и программисты часто сталкиваются с ситуацией, когда при запуске процедуры «Тестирование и исправление информационной базы» (ТиИ) один из самых важных пунктов — «Проверка физической целостности» — оказывается недоступен (заблокирован). Это вызывает беспокойство, особенно если база ведет себя нестабильно или выдает ошибки при попытке объединения конфигураций. В данной статье мы подробно разберем, почему это происходит, и проанализируем алгоритм действий для эффективного лечения базы.
Для начала выясним причину такого поведения интерфейса. Разберем архитектурные различия форматов хранения данных в 1С 7.7. В этой платформе существует два основных типа баз данных: DBF (файловая) и SQL (серверная).
Пункт «Проверка физической целостности» был разработан программистами 1С исключительно для работы с форматом DBF/CDX. В файловой версии платформа напрямую управляет бинарной структурой таблиц. Процедура проверяет заголовки файлов, соответствие длин записей описанию в словаре данных и отсутствие «мусора» на физическом уровне диска. Если же ваша база данных работает под управлением MS SQL Server, ситуация кардинально меняется.
В серверном режиме за физическое хранение данных, распределение их по страницам и контроль целостности файлов данных (.mdf) и логов (.ldf) отвечает сама СУБД. Платформа 1С 7.7 в данном случае выступает лишь клиентом, который посылает запросы. Она не имеет низкоуровневого доступа к страницам SQL-сервера, а потому физическая проверка средствами 1С технически невозможна и логически избыточна. Именно поэтому галочка становится серой и недоступной для выбора.
Если мы подозреваем наличие физических повреждений в серверной базе (например, после сбоя питания сервера или ошибок дискового массива), нам следует использовать инструменты MS SQL Server, а не штатное тестирование 1С. Рассмотрим основные шаги:
DBCC CHECKDB ('Имя_Вашей_Базы') WITH NO_INFOMSGS, ALL_ERRORMSGS;
Если команда возвращает ошибки, это серьезный сигнал о повреждении данных на уровне СУБД.Часто пользователи путают повреждение данных (таблиц со справочниками и документами) и повреждение метаданных (самого файла конфигурации 1cv7.md). Тестирование и исправление практически не лечит файл 1cv7.md, так как он является составным OLE-документом со своей сложной структурой.
Проанализируем ситуацию из практики: если при анализе структуры или объединении конфигураций программа «вылетает» с ошибкой, проблема кроется в бинарном повреждении файла .md. Для решения этой задачи мы рекомендуем использовать стороннюю утилиту gcomp. Разберем этот процесс по шагам:
gcomp для «разборки» MD-файла на текстовые исходники.Если стандартное тестирование на SQL-сервере не помогает, а ошибки при работе сохраняются, проанализируем самый надежный метод восстановления, который в кругах специалистов 1С 7.7 называют «транзитным» или «выгрузка-загрузка».
Шаг 1. Выгрузка данных. Заходим в «Конфигуратор» на сервере. Выбираем меню «Администрирование» — «Выгрузка данных». Платформа сформирует файл с расширением .dat. Этот файл содержит только чистую информацию без индексов и физического «мусора» таблиц.
Шаг 2. Создание локальной копии. Создаем на локальном компьютере пустую папку и инициализируем в ней новую базу данных, но обязательно в формате DBF. Копируем туда файл конфигурации (1cv7.md) и словари (1cv7.dd).
Шаг 3. Загрузка данных. В локальном конфигураторе выполняем «Администрирование» — «Загрузка данных», выбрав наш файл .dat. Теперь все данные из SQL перекочевали в файловый формат.
Шаг 4. Полное ТиИ. Именно на этом этапе нам становится доступна галочка «Проверка физической целостности». Проводим полное тестирование со всеми включенными опциями:
Шаг 5. Обратная миграция. После успешного лечения в формате DBF мы снова делаем «Выгрузку данных» (создаем новый .dat) и загружаем его обратно в пустую SQL-базу на сервере. Этот цикл гарантирует, что структура таблиц SQL будет пересоздана с нуля, а все данные пройдут через «сито» проверок платформы.
Подводя итог, отметим: отсутствие галочки «Проверка физической целостности» в SQL-версии — это не ошибка программы, а штатное поведение, обусловленное тем, что 1С доверяет эту работу SQL-серверу. Однако, для глубокого восстановления структуры данных мы рекомендуем всегда иметь под рукой файловую копию базы и использовать метод «транзитной» загрузки, так как именно он позволяет задействовать все механизмы проверки платформы 1С 7.7 в полной мере.