Как запустить 1С:Предприятие 7.7 на MS SQL Server 2017 и выше: подробное руководство

Системный администратор 1С v7.7 Управленческий учет IT и автоматизация бизнеса
← На главную

Вопрос совместимости легендарной платформы 1С:Предприятие 7.7 с современными версиями MS SQL Server остается актуальным для многих компаний, где эксплуатируются крупные исторические базы (как в нашем примере — 25 Гб и 70 активных пользователей). По умолчанию 1С 7.7 «не знает» о существовании серверов моложе SQL 2000, но это ограничение можно обойти. Рассмотрим детально, как заставить эту связку работать стабильно и быстро.

Проблема проверки версии SQL Server

Первое, с чем мы столкнемся при попытке подключения — это встроенный в платформу механизм проверки версии СУБД. Проанализируем ситуацию: библиотека bkend.dll жестко запрограммирована на работу с версиями SQL Server до 8.0 (SQL 2000). При обнаружении SQL Server 2017 платформа выдаст критическую ошибку инициализации.

Разберем способы решения этой проблемы. Основной метод заключается в модификации (патчинге) файла bkend.dll в каталоге программы bin. Существуют различные утилиты и готовые «заплатки», которые подменяют ответ сервера, заставляя 1С поверить, что она работает со старой версией SQL. Также часто используются специальные загрузчики, например, SecretNet или модифицированные библиотеки OrdNoChk.dll, которые позволяют игнорировать не только версию сервера, но и требования к порядку сортировки (Collation).

Настройка драйверов и ODBC

Современные операционные системы и SQL Server 2017 используют обновленные стандарты безопасности и протоколы передачи данных. Выясним причину, по которой штатные драйверы могут не подойти: 1С 7.7 рассчитывает на старые механизмы ODBC. Для стабильной работы крайне рекомендуется установить SQL Native Client 11.0 (обычно идет в комплекте с SQL 2012).

В ряде случаев потребуется замена оригинальной библиотеки sql_s.dll в каталоге bin платформы на её модифицированную версию, которая корректно обрабатывает специфические запросы 1С 7.7 к современному драйверу. Это позволяет избежать «вылетов» системы при формировании сложных отчетов.

Оптимизация производительности: режим RCSI

Для базы объемом 25 Гб и 70 пользователей блокировки станут главным врагом. Стандартный механизм блокировок 1С 7.7 в связке с SQL Server работает достаточно «грубо», блокируя целые таблицы. Чтобы обеспечить комфортную работу, мы должны включить на уровне базы данных SQL режим Read Committed Snapshot Isolation (RCSI).

Посмотрим, как это сделать. Выполним следующий скрипт в SQL Management Studio:


ALTER DATABASE [Имя_Вашей_Базы] SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE [Имя_Вашей_Базы] SET READ_COMMITTED_SNAPSHOT ON;

Этот режим позволяет пользователям читать данные без ожидания завершения транзакций на запись. Пишущие процессы не блокируют читающих, что критически важно для системы Торговля и Склад 9.2, где отчеты могут строиться параллельно с интенсивной выпиской накладных.

Решение проблемы с точностью времени (Datetime)

В современных версиях SQL Server точность хранения типов данных Datetime выше, чем в старых. Иногда это приводит к тому, что 1С не может найти только что записанный документ из-за микроскопической разницы в долях секунд. Рассмотрим по шагам, как минимизировать риски:

  1. Установите флаг AUTO_UPDATE_STATISTICS_ASYNC в значение ON для базы данных. Это предотвратит замирания 1С в моменты, когда SQL Server решит обновить статистику таблиц.
  2. Убедитесь, что Collation (порядок сортировки) базы данных установлен как Cyrillic_General_CI_AS. Это обеспечит корректную работу поиска и итогов по строковым полям.

Преодоление ограничений 32-битной архитектуры

Проанализируем техническое ограничение: 1cv7s.exe — это 32-битное приложение. Оно не может адресовать более 2 Гб оперативной памяти. В условиях терминального сервера и 70 пользователей это часто приводит к ошибкам нехватки памяти при формировании тяжелых отчетов.

Мы можем применить флаг Large Address Aware (LAA) к исполняемому файлу платформы. Это позволит приложению использовать до 4 Гб адресного пространства на 64-битных операционных системах. Это значительно повышает стабильность «тяжелых» сессий пользователей.

Работа с порядком сортировки (dbfsort.chk)

На новых версиях ОС Windows (Server 2016/2019/2022) часто возникает ошибка: «Порядок сортировки, установленный для базы данных, отличается от системного». Чтобы не менять системные настройки региональных стандартов всей ОС, мы можем применить простой трюк. Создадим в каталоге базы данных пустой текстовый файл с именем dbfsort.chk. Наличие этого файла сигнализирует платформе о необходимости пропустить проверку соответствия кодовых страниц.

Оптимизация размера базы: «чистка» итогов

Если ваша база весит 25 Гб, высока вероятность, что значительную часть объема занимают избыточные данные в таблицах итогов. Разберем ситуацию: 1С 7.7 хранит записи итогов даже с нулевыми значениями. Удаление таких записей может сократить объем базы в разы без потери функциональности. Для этого рекомендуется использовать специализированные обработки по «обрезанию» пустых итогов регистров.

Особое внимание стоит уделить регистру партий. Если партионный учет за старые периоды уже не актуален, его свертка позволит существенно ускорить работу проведения документов. Проанализируем также таблицу 1CSYSLOG (журнал регистрации) — её лучше вынести из состава SQL-базы или регулярно очищать, так как она быстро растет и замедляет бэкапы.

Использование внешних компонент для ускорения

При таком количестве пользователей (70 человек) стандартные «черные запросы» 1С 7.7 будут работать медленно. Проанализируем возможности расширения системы. Использование внешних компонент, таких как 1CPP, позволяет выполнять прямые SQL-запросы к базе данных.

Пример использования прямого запроса через 1CPP для получения остатков:


ТекстЗапроса = "
|SELECT
|    Рег.Товар as [Товар $Справочник.Товары],
|    Рег.ОстатокТовара as Остаток
|FROM
|    $РегистрИтоги.ОстаткиТоваров as Рег
|WHERE
|    Рег.period = :КонДата
|";

Прямые запросы выполняются на стороне сервера SQL в десятки раз быстрее, чем стандартные методы платформы, что позволяет системе «взлететь» даже на железе среднего сегмента.

Итоговые рекомендации

Запуск 1С 7.7 на SQL Server 2017 — задача выполнимая и оправданная. Вы получите более современный движок СУБД, эффективное управление памятью и возможность использования новых функций SQL. Однако помните, что такая конфигурация требует:

Следуя этим шагам, мы сможем продлить жизнь проверенной временем системе и обеспечить её стабильную работу на современном стеке технологий.

← На главную