1C ПрограммированиеMS SQL Server

Использование MS SQL Server 2005 с 1С:Предприятием v7.7

Данная статья является изложением опыта запуска 1С:Предприятия v7.7 на MS SQL Server 2005. К сожалению, «штатно» 1С:Предприятие v7.7 работу с MS SQL Server 2005 не поддерживает, поэтому понадобятся некоторые ухищрения, которые и будут здесь описаны. Примечание: на данный момент имеется опыт успешной промышленной (не тестовой) эксплуатации 1С:Предприятия v7.7 с MS SQL 2005. При этом размер mdf-файла рабочей базы данных составляет порядка 10 Гб, количество одновременных подключений — порядка 60, конфигурация полностью самописная, активно используется технология 1С++ в части «прямых» запросов к базе данных.

При установке SQL сервера необходимо выставить режим авторизации «MixedMode» (т.е. Windows+SQL), и указать пароль для учетной записи «SA». Параметр «Server Collation» следует установить как «Cyrillic_General_CI_AS». Получить текущий Server Collation можно такой командой:

SELECT CONVERT (varchar, SERVERPROPERTY('collation'))

Если SQL сервер «не виден» с других компьютеров (1С выдаёт сообщение «SQL-сервер не существует, или отсутствует доступ.»), следует разрешить удаленные соединения в SQL Server Surface Area Configuration. Меню «Пуск» — «Программы» — «Microsoft SQL Server 2005» — «Configuration Tools» — «SQL Server Surface Area Configuration». Выбрать ссылку «Surface Area Configuration for Services and Connections», в дереве выбрать элемент «Remote Connections».

Если у вас MS SQL Server 2005 Express Edition, в 1С в «Параметрах базы данных SQL» нужно указывать не просто имя сервера, а Имя_Сервера\SQLEXPRESS.

В свойствах базы данных на SQL Server необходимо поставить Compatibility Level «SQL Server 2000(80)». Это можно сделать в Microsoft SQL Server Management Studio Express (меню «Пуск» — «Программы» — «Microsoft SQL Server 2005» — «SQL Server Management Studio Express CTP»). Примечание: база данных может быть создана на Microsoft SQL Server 2000, и перенесена на Microsoft SQL Server 2005 через простой Detach — Attach, можно также через Backup — Restore. Однако простого пути для возврата базы назад (на MS SQL 2000) уже не будет.

Получить текущий Compatibility Level базы данных можно и такой командой:

EXEC sp_dbcmptlevel <DataBaseName>

Установить Compatibility Level базы данных в «SQL Server 2000(80)» можно так:

EXEC sp_dbcmptlevel <DataBaseName>, 80

Если возникают проблемы с подключением к базе MS SQL 2005, просмотрите настройки протоколов в «SQL Server Configuration Manager». Меню «Пуск» — «Программы» — «Microsoft SQL Server 2005» — «Configuration Tools» — «SQL Server Configuration Manager».

Поскольку 1С v7.7 штатно не поддерживает MS SQL 2005, вы получите сообщение «Требуется MS SQL Server 6.5 + Service Pack 5a или более старшая версия!». Чтобы устранить это, необходимо изменить BkEnd.dll следующим образом (для 21-го релиза 1С):

000D9B7A: 83 EB
000D9B7B: E8 15
000DAFE0: 83 EB
000DAFE1: E8 10

Для 25-го релиза 1С:

000D9C4A: 83 EB
000D9C4B: E8 15
000DB0B0: 83 EB
000DB0B1: E8 10

Для 26-го и 27-го релизов 1С:

000D9CCA: 83 EB
000D9CCB: E8 15
000DB130: 83 EB
000DB131: E8 10

Для возможности коллективной работы в базе данных (одновременной работы нескольких пользователей) необходим режим Multiple для базы данных («Properties — Options — State — Restrict access» — «Multiple»).

Возможно, для коллективной работы в базе данных (одновременной работы нескольких пользователей) могут потребоваться дополнительные изменения в BkEnd.dll, которые можно произвести с помощью Unofficial Service Pack v2.13.24 для 24 релиза 1С (он работает и на 25 релизе), установив флажок «Разрешать другим пользователям входить в базу (SQL)» на вкладке «Защита». Эти изменения можно произвести и вручную (для 25-го релиза 1С):

000DA023: 85 40
000DA024: C0 90

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

При работе на базе MS SQL 2005 может возникнуть проблема с автонумерацией документов (при интерактивном создании нового документа номер присваивается некорректно), причём проблема эта воспроизводится не всегда. Чтобы обойти эту проблему, можно поместить в процедуру «ПриЗаписи» всех документов код, подобный следующему:

    докДок=СоздатьОбъект("Документ."+Вид());
    Если докДок.НайтиПоНомеру(НомерДок,ДатаДок) = 0 Тогда
        Если докДок.ТекущийДокумент() = ТекущийДокумент() Тогда
            УстановитьНовыйНомер();
        КонецЕсли;
    КонецЕсли;

Как обойти подводные камни установки

При попытке соединиться с базой 1С пишет следующее: «Требуется MS SQL Server версии 6.5 + service pack 5a или более старшая версия». Для решения возникающих проблем необходимо подправить файл bkend.dll:

000D9C4A: 83 EB
000D9C4B: E8 15
000DB0B0: 83 EB
000DB0B1: E8 10

(для 25 релиза платформы 1С).

В общем случае правильный порядок установки 1С в связке с Microsoft SQL Server 2005 следующий. При установке Microsoft SQL Server 2005 необходимо выставить режим авторизации «MixedMode» (Windows+SQL), и указать пароль для учетной записи «SA». Параметр «Server Collation» следует установить как «Cyrillic_General_CI_AS». Важный момент – имя базы данных не может начинаться с цифры, например «1CBase» будет некорректным названием и вызовет ошибки при подключении.

Если SQL Server 2005 недоступен с других компьютеров (1С выдаёт сообщение «SQL-сервер не существует, или отсутствует доступ»), следует разрешить удаленные соединения в SQL Server Surface Area Configuration. Меню «Пуск» — «Программы» — «Microsoft SQL Server 2005» — «Configuration Tools» — «SQL Server Surface Area Configuration». Выбрать ссылку «Surface Area Configuration for Services and Connections», в дереве выбрать элемент «Remote Connections».

Если у вас установлен Microsoft SQL Server 2005 Express Edition, в 1С в «Параметрах базы данных SQL» нужно указывать не просто имя сервера, а Имя_Сервера\SQLEXPRESS.

В свойствах базы данных на SQL Server необходимо поставить Compatibility Level «SQL Server 2000(80)». Это можно сделать в Microsoft SQL Server Management Studio Express (меню «Пуск» — «Программы» — «Microsoft SQL Server 2005» — «SQL Server Management Studio Express CTP»). Примечание: база данных может быть создана на Microsoft SQL Server 2000, и перенесена на Microsoft SQL Server 2005 через простой Detach — Attach, можно также через Backup — Restore. Однако простого пути для возврата базы назад (на MS SQL 2000) уже не будет.

Если возникают проблемы с подключением к базе MS SQL 2005, просмотрите настройки протоколов в «SQL Server Configuration Manager». Меню «Пуск» — «Программы» — «Microsoft SQL Server 2005» — «Configuration Tools» — «SQL Server Configuration Manager».

Ссылки для скачивания бесплатных дистрибутивов Microsoft: