Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также любые проблемы программирования на различных макроязыках и в скриптовых средах)

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

Материал для статьи предоставлен Midnight Ghost


Данная статья является изложением опыта запуска 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 Тогда
    Если докДок.ТекущийДокумент()<>ТекущийДокумент() Тогда
        УстановитьНовыйНомер();
    КонецЕсли;
КонецЕсли;

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

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.