При эксплуатации легендарной платформы 1С:Предприятие 7.7 на современных операционных системах и СУБД (Windows Server 2012/2016, SQL Server 2012/2014 и выше) администраторы часто сталкиваются с невозможностью изменения структуры конфигурации. Ошибка "driver version mismatch" возникает в Конфигураторе при попытке сохранить изменения, требующие реструктуризации таблиц базы данных. Это происходит из-за того, что штатные механизмы 1С 7.7 жестко ориентированы на работу с драйверами и синтаксисом SQL Server 2000.
В этой статье мы подробно проанализируем причины возникновения этой проблемы и рассмотрим проверенные алгоритмы действий, которые позволяют вносить изменения в структуру базы даже в условиях несовместимости версий драйверов.
Разберем техническую подоплеку ситуации. Когда мы нажимаем кнопку «Сохранить» в Конфигураторе, система инициирует проверку окружения. Проблема кроется в библиотеке dbeng32.dll (или bkend.dll в зависимости от сборки), которая обращается к системному драйверу ODBC sqlsrv32.dll. Программа ожидает увидеть версию драйвера, соответствующую SQL Server 2000. В современных ОС Windows версия этого файла значительно выше, что и вызывает блокирующее сообщение об ошибке.
Ситуация осложняется тем, что SQL Server 2014 и более новые версии официально не поддерживают режим совместимости Compatibility Level 80 (SQL 2000). Минимально доступный уровень в них — 100 (SQL 2008). Из-за этого штатная реструктуризация не может корректно выполнить SQL-запросы на изменение типов колонок или создание новых таблиц, так как 1С формирует их в устаревшем синтаксисе.
Этот метод считается наиболее быстрым для опытных администраторов, так как он не требует полной выгрузки и загрузки данных, что критично для баз объемом в сотни гигабайт. Проанализируем ситуацию на примере изменения точности числового поля (увеличение количества знаков после запятой).
Пошаговый алгоритм действий:
1Cv7.md из рабочей серверной базы. Создадим пустую папку и развернем в ней новую файловую базу, используя этот MD. В этой «пустышке» внесем необходимые изменения (например, изменим длину поля в документе или справочнике) и сохраним конфигурацию. Теперь у нас есть целевой MD файл.1Cv7.dds из нашей пустой измененной базы. Нам нужно найти идентификатор таблицы и колонки, которую мы изменили. Например, поле «Сумма» может соответствовать колонке SP4072 в таблице DH2000.ALTER TABLE для изменения типа данных. Например:
ALTER TABLE DH2000
ALTER COLUMN SP4072 NUMERIC(15, 3);
1Cv7.md в каталоге серверной базы на новый (подготовленный в пункте 1). Важно: обязательно удалим файл 1Cv7.dds в каталоге базы.DDS нет, система предложит его создать или обновить. Чтобы принудительно синхронизировать логику, внесем любое незначительное изменение (например, добавим пробел в описание конфигурации) и нажмем «Сохранить». Если «секретный релиз» настроен правильно, система создаст новый DDS, соответствующий новой структуре MD и фактически измененной нами структуре SQL.Если ручная правка SQL-таблиц кажется слишком рискованной или изменений слишком много, рассмотрим вариант, который успешно применил автор темы. Этот метод заключается в создании временной среды, «понятной» для 1С 7.7.
Рассмотрим шаги реализации:
Compatibility Level 80.sqlsrv32.dll на старую версию..zip через Конфигуратор.MD файл и, возможно, выполнить загрузку данных.Проанализируем понятие «секретного релиза». Обычно под этим подразумевается набор пропатченных библиотек (в основном BkEnd.dll), которые позволяют 1С 7.7 игнорировать проверку версии SQL Server и корректно работать с SQL 2012/2014. Однако, даже такие патчи часто не решают проблему проверки ODBC-драйвера при реструктуризации.
Полезный совет: Если вы используете «секретный релиз», убедитесь, что при установке вы правильно заменили файлы. Иногда помогает переименование оригинальной библиотеки в BkEnd0.dll перед копированием патченной, чтобы система корректно подхватила новые вызовы функций.
Также выясним причину медленной загрузки данных в файловый вариант. Как отметил автор темы, загрузка из архива может длиться более 12 часов. Это происходит из-за того, что 1С 7.7 при загрузке данных в DBF выполняет колоссальный объем операций по проверке индексов и целостности. Поэтому для задач изменения структуры всегда предпочтительнее работать с пустой базой (только MD), а затем переносить изменения в SQL-базу с данными, как описано в Способе №1.
Вывод: Ошибка driver version mismatch — это не приговор для базы. Используя комбинацию ручной правки таблиц через SSMS и подмены файлов метаданных, или задействовав временный сервер со старой версией SQL, мы можем продолжать развивать конфигурации на платформе 7.7 даже в современных ИТ-ландшафтах.