При администрировании и восстановлении устаревших, но все еще активно используемых систем на платформе 1С:Предприятие 7.7 в связке с MS SQL Server, технические специалисты часто сталкиваются со следующей проблемой. Имеется работоспособный бэкап базы данных SQL (файл с расширением .bak) и актуальный файл метаданных конфигурации 1Cv7.md. Однако файл словаря данных 1Cv7.dds, который находился в рабочем каталоге базы данных на момент создания архивной копии, утерян или поврежден. При попытке запустить систему после восстановления бэкапа программа выдает ошибку открытия базы данных.
В этой статье мы подробно разберем, почему возникает эта проблема, как функционирует словарь данных в SQL-версии платформы 1С 7.7, и пошагово рассмотрим наиболее эффективные методы восстановления работоспособности базы данных без оригинального файла 1Cv7.dds. Мы также изучим сопутствующие нюансы, такие как восстановление файла параметров подключения 1Cv7.dba, проблемы совместимости с современными версиями MS SQL Server и аварийные способы спасения данных.
---
Для понимания сути решения проанализируем архитектуру хранения данных в SQL-версии 1С 7.7. Файл 1Cv7.dds (Data Dictionary SQL) представляет собой текстовый словарь данных. Он связывает внутренние логические объекты метаданных 1С (такие как справочники, документы, регистры, реквизиты) с их физическим представлением — таблицами и полями на сервере MS SQL Server.
Например, справочнику "Контрагенты" в SQL-базе может соответствовать таблица SC142, а его реквизиту "ИНН" — поле SP145. Эти числовые идентификаторы (в данном примере — 142 и 145) жестко зашиты внутри файла конфигурации 1Cv7.md и генерируются платформой в момент создания объектов разработчиком.
Если у нас имеется абсолютно идентичный файл конфигурации 1Cv7.md (созданный в ту же секунду, что и восстанавливаемый SQL-бэкап, либо не менявшийся с тех пор), структура связей внутри него полностью совпадает со структурой таблиц на SQL-сервере. Это означает, что мы можем принудительно заставить Конфигуратор пересоздать файл 1Cv7.dds с нуля. Новый файл словаря будет на 100% соответствовать реальной структуре таблиц в восстановленной базе данных. Платформа сверит их, убедится в идентичности схем данных и позволит запустить систему в штатном режиме.
---
Рассмотрим детально последовательность действий, которая позволяет развернуть архивную копию базы данных и восстановить словарь 1Cv7.dds.
Создадим на диске компьютера или сервера абсолютно пустой каталог (папку), в котором будет располагаться наша рабочая база 1С. Поместим в этот каталог только имеющийся у нас актуальный файл конфигурации 1Cv7.md, который соответствует архивной копии SQL-базы.
Используя среду Microsoft SQL Server Management Studio (SSMS), восстановим базу данных из файла резервной копии (бэкапа) с расширением .bak на наш SQL-сервер под нужным именем.
Запустим программу запуска 1С:Предприятие 7.7. Нажмем кнопку "Добавить" и укажем путь к созданному на первом шаге пустому каталогу, где лежит файл 1Cv7.md. В качестве режима работы выберем "Конфигуратор".
Зайдем в запущенный Конфигуратор. Перейдем в меню "Администрирование" -> "Параметры базы данных SQL...". В открывшемся окне укажем актуальные параметры подключения:
sa);Нажмем кнопку "ОК". Выполнение этого действия критически важно: платформа автоматически создаст в каталоге базы зашифрованный файл 1Cv7.dba, содержащий параметры авторизации на SQL-сервере. Без этого файла запуск базы в режиме SQL невозможен.
Чтобы заставить Конфигуратор пересоздать файл 1Cv7.dds, нам необходимо внести любое изменение в конфигурацию, которое потребует реструктуризации таблиц, но при этом не затронет реальные данные. Разберем два наиболее простых и безопасных способа:
Нажмем кнопку сохранения конфигурации (значок дискеты или клавишу F7). Программа выдаст диалоговое окно с предупреждением об изменении метаданных и предложением выполнить реструктуризацию таблиц базы данных. Согласимся с этим действием.
В этот момент Конфигуратор проанализирует структуру метаданных в файле 1Cv7.md, обратится к SQL-серверу для проверки физического наличия соответствующих таблиц и автоматически сгенерирует новый корректный файл 1Cv7.dds. Поскольку реальных структурных изменений в базу мы не вносили, СУБД не будет перезаписывать или удалять таблицы на сервере, а лишь обновит словарь соответствий.
Для полноценной работы базы данных не забудьте скопировать из старого каталога резервной копии (или рабочей базы) сопутствующие папки с внешними отчетами и программными модулями, такие как ExtForms, ExtFiles, PrnForm и т.д.
---
Выясним причину, по которой крайне опасно использовать для восстановления "почти такой же" или "более новый" файл конфигурации 1Cv7.md, если точная копия на момент создания бэкапа была безвозвратно утеряна.
Если структура таблиц в SQL-базе будет отличаться от структуры метаданных в файле 1Cv7.md, при сохранении конфигурации могут возникнуть следующие фатальные проблемы:
DROP TABLE или ALTER TABLE ... DROP COLUMN). Это приведет к безвозвратной потере архивных данных!Что делать, если точного файла 1Cv7.md нет? В этом случае системным администраторам и программистам приходится вручную сопоставлять структуру. Для этого используются специализированные инструменты сравнения схем баз данных (например, RedGate SQL Compare) либо парсеры табличной структуры SQL для воссоздания структуры метаданных в файле конфигурации "под копирку" физических таблиц СУБД.
---
Платформа 1С:Предприятие 7.7 разрабатывалась во времена Windows 2000/XP и MS SQL Server 2000. При попытке развернуть и запустить базу на современных операционных системах и СУБД (MS SQL Server 2008, 2012, 2016, 2019 или 2022) вы гарантированно столкнетесь с рядом системных ошибок совместимости.
Рассмотрим основные способы решения проблем совместимости:
Современные версии MS SQL Server используют более строгие стандарты синтаксиса Transact-SQL и другие протоколы авторизации. Для обхода этих ограничений в ИТ-сообществе применяются модифицированные версии системной библиотеки bkend.dll (находится в каталоге установки платформы 1С C:\Program Files (x86)\1Cv77\bin\). Также используются сторонние компоненты расширения платформы, такие как библиотека 1С++, которые перехватывают и корректируют запросы 1С к SQL-серверу на лету.
Очень частая ошибка при первом запуске восстановленной SQL-базы звучит так: "Порядок сортировки, установленный для базы данных, отличается от системного!". Это происходит из-за различий в параметрах сортировки (Collation) базы данных SQL и настроек локали операционной системы Windows.
Чтобы решить эту проблему без переустановки SQL-сервера с другими параметрами сортировки, мы можем применить специальный файл отключения проверки кодовой страницы. Для этого создается файл реестра Windows (с расширением .reg) следующего содержания:
REGEDIT4
[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Init]
"DBF"="NoCheck"
После внесения этой записи в системный реестр проверка сортировки для файловых и SQL баз данных будет отключена, что позволит платформе успешно запуститься на современном сервере.
---
Проанализируем ситуацию, когда из-за критических ошибок платформы 1С или ограничений прав администрирования на SQL-сервере запустить восстановленную базу в режиме SQL никак не удается, но данные необходимо срочно извлечь.
В этом случае мы можем прибегнуть к конвертации данных в классический файловый формат DBF:
.dbf. Каждой таблице вида SC* или DH* должен соответствовать одноименный файл .dbf.1Cv7.md в новую папку, запустим Конфигуратор и сохраним конфигурацию. При этом платформа автоматически сгенерирует файл словаря для файловой версии — 1Cv7.dd..dbf в каталог созданной файловой базы, заменив пустые таблицы..cdx. В результате мы получим полностью рабочую, автономную файловую версию нашей базы данных.