Запуск 1С:Предприятия 7.7 в связке с MS SQL Server на современных операционных системах (Windows 7 и выше) — задача нетривиальная, требующая понимания архитектуры старой платформы и механизмов работы драйверов баз данных. В этой статье мы подробно разберем, как подготовить среду для разработки, установить бесплатную версию SQL-сервера и обойти стандартные ошибки совместимости, чтобы вы могли практиковаться в написании прямых запросов с использованием компоненты 1С++.
Для домашних целей и практики оптимальным выбором будет линейка Express Edition. Рассмотрим основные варианты, которые подходят для работы с 1С 7.7:
Важно помнить, что 1С 7.7 изначально проектировалась под MS SQL 6.5 и 2000. При использовании версий 2005 и выше платформа «из коробки» может вести себя нестабильно или выдавать ошибки при попытке подключения.
Самая частая ошибка, с которой сталкиваются пользователи при попытке запустить 1cv7s.exe на Windows 7: "Для доступа к базе данных требуется ODBC-драйвер для MS SQL Server версии 3.50.0303 или старше". Проблема заключается в том, что системный драйвер в новых версиях Windows имеет версию выше, но 1С 7.7 не умеет корректно распознавать эти номера или ожидает специфические библиотеки от SQL 2000.
Разберем способы решения этой проблемы:
Способ 1: Использование «секретного релиза» (Патч BkEnd.dll)
Это самый цивилизованный и надежный метод. Под термином «секретный релиз» в сообществе 1С-программистов понимается модифицированная библиотека BkEnd.dll. Проанализируем, что именно делает этот патч:
Server\SQLEXPRESS), что критично для версий Express. Оригинальная платформа не понимает символ обратного слеша в имени сервера.Способ 2: Подмена системных библиотек
Существует методика замены файлов odbcbcp.dll, sqlsrv32.dll и sqlsrv32.rll в каталогах C:\Windows\System32 и C:\Windows\SysWOW64 на аналогичные файлы из состава Windows XP или Windows Server 2003. Мы не рекомендуем этот метод, так как он может нарушить работу других приложений в системе, использующих SQL-соединения.
Если на вашем ноутбуке установлена Windows 7 x64, следует учитывать, что 1С:Предприятие 7.7 является 32-битным приложением. Это накладывает определенные ограничения на настройку источников данных ODBC.
Для создания DSN (Data Source Name) нельзя использовать стандартный интерфейс из «Панели управления». Вместо этого выполним следующие действия:
C:\Windows\SysWOW64\.odbcad32.exe. Это 32-битная версия диспетчера драйверов.При первом запуске базы данных на SQL вы почти наверняка столкнетесь с ошибкой: «Порядок сортировки, установленный для базы данных, отличается от системного». Это связано с тем, что кодовые страницы в Windows 7 отличаются от тех, что были в Windows 98/2000, под которые писалась «семерка».
Выясним, как это исправить без переустановки операционной системы:
В каталоге установки 1С (обычно это C:\Program Files (x86)\1Cv77\BIN\) создадим пустой текстовый файл и переименуем его в OrdNoChk.res. Наличие этого файла в папке с исполняемым файлом платформы заставляет 1С игнорировать несовпадение кодировок. Это обязательное действие для корректной работы на современных ОС.
Для того чтобы 1С могла «увидеть» SQL-сервер, необходимо проверить настройки сетевых протоколов в SQL Server Configuration Manager. Проанализируем необходимые шаги:
SQL Server Network Configuration -> Protocols for SQLEXPRESS.Enabled.SQL Server (SQLEXPRESS) через оснастку служб.Поскольку вашей целью является практика работы с 1С++, рассмотрим пример инициализации соединения. Прелесть 1С++ заключается в том, что она позволяет выполнять высокопроизводительные запросы на языке T-SQL, минуя тяжеловесный объектный движок платформы.
Типичный код для выполнения прямого запроса в 1С++ выглядит следующим образом:
// Создание объекта метаданных для типизации результатов
МетаДанные = СоздатьОбъект("MetaDataWork");
// Создание объекта Запрос
ТекстЗапроса = "
|SELECT
| Жур.IDDoc as [Док $Документ],
| Жур.IDDocDef as Док_вид
|FROM
| _1SJournal as Жур
|WHERE
| Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
|";
Запрос = СоздатьОбъект("ODBCRecordset");
Запрос.УстановитьТекстовыйПараметр("НачДата", ВыбНачДата);
Запрос.УстановитьТекстовыйПараметр("КонДата", ВыбКонДата);
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
ТЗ.ВыбратьСтроку();
Обратите внимание на использование типизации (символ $). Это специфический синтаксис 1С++, который автоматически преобразует внутренние идентификаторы SQL (ID в формате 36-ричной системы) в привычные объекты 1С (ссылки на документы или справочники).
Подведем итог нашей совместной работы по настройке среды:
C:\Windows\SysWOW64\odbcad32.exe.OrdNoChk.res в папке BIN.Следуя этим шагам, вы получите полноценную рабочую среду для изучения 1С++ и работы с SQL-версией 1С 7.7 на вашем домашнем ноутбуке.