Ситуация, когда при запуске 1С 7.7 пользователи обнаруживают абсолютно пустые журналы документов при физическом наличии данных в SQL-таблицах, является критической и требует глубокого понимания взаимодействия платформы с SQL Server. Рассмотрим причины возникновения этой проблемы и способы её решения, основываясь на практическом опыте системных администраторов.
Для начала проанализируем, как 1С 7.7 хранит информацию о документах. Основным связующим звеном является таблица _1SJOURN (общий журнал). В ней хранятся заголовки всех документов системы. Каждая строка этой таблицы содержит поле IDDOCDEF — это идентификатор типа документа, который жестко зашит в файле метаданных 1cv7.md.
Когда вы открываете журнал в интерфейсе "Предприятия", платформа выполняет SQL-запрос к таблице _1SJOURN. Если идентификаторы IDDOCDEF в таблице SQL перестают соответствовать тем, что указаны в текущем MD-файле, 1С просто "не узнает" свои документы и отображает пустой список. Это часто происходит после неудачного обновления конфигурации, сбоев при автоархивации или некорректной работы SQL-сервера.
Прежде чем приступать к манипуляциям с конфигуратором, необходимо выяснить, остались ли данные в самой базе. Разберем, как проверить содержимое таблиц напрямую. Откроем SQL Server Management Studio и выполним следующий запрос:
SELECT TOP 100 * FROM _1SJOURN (NOLOCK)
ORDER BY DATE_TIME_IDDOC DESC
Если запрос возвращает строки с данными, значит, физически документы на месте. Обратим внимание на колонку IDDOCDEF. Нам нужно сопоставить эти значения с тем, что ожидает 1С. Для этого проанализируем файл словаря данных 1cv7.dds, который находится в каталоге базы. В нем можно найти описание таблицы _1SJOURN и список соответствий идентификаторов именам документов.
Выясним причину, по которой при восстановлении из бэкапа система выдает ошибку структуры. Рассмотрим сценарий, когда файлы MD и DDS идентичны, но база не запускается. Это указывает на то, что на уровне SQL Server структура таблицы (количество колонок, их типы или индексы) перестала соответствовать описанию в словаре 1С.
Посмотрим на типичный алгоритм действий, который часто приводит к "невидимости" документов:
DDS.MD.IDDOCDEF были переназначены или таблица была пересоздана некорректно, документы исчезают из журналов, так как 1С ищет одни ID, а в базе лежат другие.Если мы столкнулись с ситуацией, когда "вчерашняя" копия базы выдает ошибку структуры, а "позавчерашняя" работает нормально, проанализируем метод точечного восстановления. Как показывает практика, самым эффективным способом является перенос данных таблицы журнала из гарантированно исправной копии в текущую рабочую базу.
Рассмотрим пошагово процесс восстановления:
DDS и позволит базе запуститься, даже если журнал станет пустым.TRUNCATE TABLE База_Поврежденная.dbo._1SJOURN
INSERT INTO ... SELECT:
INSERT INTO База_Поврежденная.dbo._1SJOURN
SELECT * FROM База_Рабочая_Архив.dbo._1SJOURN
Проанализируем технический контекст. Платформа 7.7 официально не поддерживает версии SQL выше 2000. Работа на SQL 2008 R2 и выше требует использования специальных библиотек (например, модифицированной BkEnd.dll). Одной из причин "пропадания" документов может быть некорректная работа планировщика SQL Server или скриптов обслуживания.
Рекомендуем обратить внимание на следующие параметры базы в SQL:
_1SJOURN, что возвращает пустой результат запроса.SQL Server 2000 (80), если это возможно, или тщательно протестируйте поведение на уровне 100.Ситуация, описанная в теме, подтверждает, что при работе с устаревшими платформами на новом системном ПО риск повреждения метаданных крайне высок. Мы выяснили, что "пустой журнал" — это чаще всего проблема несоответствия идентификаторов IDDOCDEF между базой данных и MD-файлом.
Чтобы избежать подобных инцидентов в будущем, рекомендуем всегда хранить архивные копии не только всей базы SQL, но и отдельно файлы 1cv7.md и 1cv7.dds на каждый день. В случае сбоя сравнение файлов DDS утилитами типа fc.exe или WinMerge позволит вам мгновенно увидеть изменения в структуре ID и принять решение о методе восстановления без многочасовых тестов ТиИ (Тестирование и Исправление).