Как исправить ошибку «Порядок сортировки, установленный для базы данных, отличается от системного» в 1С 7.7 на SQL?

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

Перевод базы данных 1С:Предприятие 7.7 на SQL-сервер — это стандартная задача для системных администраторов и программистов, работающих с legacy-системами. Однако при загрузке данных (файл .dt или выгрузка из файловой версии) часто возникает критическая ошибка: «Порядок сортировки, установленный для базы данных, отличается от системного». Проблема особенно актуальна, когда сервер баз данных или рабочая станция работают на операционных системах новее Windows XP (например, Windows 7, 10 или серверные версии 2008/2012/2019).

В этой статье мы подробно разберем, почему возникает эта ошибка, проанализируем механизмы проверки кодовых страниц в 1С 7.7 и рассмотрим несколько проверенных способов решения проблемы.

Причина возникновения проблемы

Разберем ситуацию глубже. Основная причина кроется в системной библиотеке BkEnd.dll платформы 1С 7.7. При попытке соединения с SQL-сервером или в процессе загрузки данных 1С сравнивает настройки кодовой страницы (Locale ID) и порядок сортировки (Collation) внутри базы данных SQL с региональными настройками самой операционной системы Windows.

Начиная с Windows Vista, компания Microsoft изменила таблицы соответствия символов и механизмы NLS (National Language Support). В результате 1С 7.7, разработанная в эпоху Windows 98/2000/XP, перестает корректно распознавать системный ответ ОС о текущей кодировке. Даже если вы установили в SQL-базе Cyrillic_General_CI_AS и в Windows выбрали «Русский», 1С может посчитать их несовпадающими.

Способ 1: Использование файла OrdNoChk.prm

Это самый простой и штатный метод, предусмотренный разработчиками для обхода проверки. Файл OrdNoChk.prm сообщает платформе, что проверку порядка сортировки нужно проигнорировать.

Разберем по шагам, как правильно его использовать:

  1. Создайте в обычном текстовом редакторе (например, Блокноте) абсолютно пустой файл.
  2. Сохраните его под именем OrdNoChk.prm. Убедитесь, что расширение файла именно .prm, а не .prm.txt.
  3. Поместите этот файл в два места:
    • В каталог с исполняемыми файлами платформы 1С (обычно это C:\Program Files (x86)\1Cv77\BIN\).
    • В корневой каталог самой информационной базы.

Важный нюанс: В современных ОС механизм контроля учетных записей (UAC) может блокировать чтение файлов из папки Program Files. В этом случае запуск 1С необходимо производить от имени администратора, иначе файл игнорируется.

Способ 2: Правка реестра Windows (обман системы)

Если манипуляции с файлом OrdNoChk.prm не помогают, можно прибегнуть к изменению системных настроек кодовых страниц. Мы заставим Windows «думать», что кодовые страницы 1251 (кириллица) и 1252 (латиница) обрабатываются одинаково, что часто удовлетворяет алгоритмы 1С.

Проанализируем алгоритм действий в реестре:

  1. Нажмите Win + R, введите regedit и нажмите Enter.
  2. Перейдите в ветку: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage.
  3. Найдите параметр с именем 1252. По умолчанию там указано значение c_1252.nls.
  4. Измените значение параметра 1252 на c_1251.nls.
  5. Некоторые специалисты также рекомендуют продублировать это значение для параметра 1251, убедившись, что там прописано именно c_1251.nls.

После внесения изменений обязательно перезагрузите компьютер. Это позволит системе обновить таблицы символов в оперативной памяти.

Способ 3: Использование совместимой среды (решение автора темы)

Как выяснилось в ходе обсуждения на форуме, наиболее стабильным «естественным» способом загрузки данных является использование операционной системы Windows XP. Рассмотрим ситуацию: если на современном сервере (Windows Server 2019) и современных рабочих станциях (Windows 10) загрузка прерывается ошибкой, можно воспользоваться виртуальной машиной или старым ПК.

Процесс выглядит так:

  1. На компьютере с Windows XP устанавливается платформа 1С 7.7.
  2. Настраивается доступ к SQL-серверу (через установку драйверов ODBC, соответствующих версии SQL, хотя 1С 7.7 лучше всего работает со стандартным драйвером SQL Server).
  3. Выполняется загрузка данных (Конфигуратор -> Администрирование -> Загрузить данные).
  4. После успешной загрузки база будет доступна для работы и с более новых ОС, так как этап проверки порядка сортировки при обычном входе иногда проходит легче, чем при первичной инициализации данных.

Способ 4: Патчинг BkEnd.dll (для опытных пользователей)

Если вы не хотите менять настройки ОС или искать старые компьютеры, можно модифицировать саму проверку в коде программы. Существуют готовые патчи, которые заменяют ассемблерные команды в библиотеке BkEnd.dll, заставляя функцию проверки всегда возвращать истину (успех).

Рассмотрим пример того, что происходит «под капотом» при таком патчинге (схематично):


// В коде BkEnd.dll ищется последовательность байт, 
// отвечающая за сравнение строк сортировки.
// Условный переход JNE (Jump if Not Equal) заменяется на JMP (Jump) 
// или заполняется NOP (No Operation).

Для реализации этого способа обычно используются HEX-редакторы. Однако стоит помнить, что любое вмешательство в исполняемые файлы нарушает лицензионное соглашение, поэтому данный метод следует использовать только в исключительных случаях как крайнюю меру.

Способ 5: Настройка Collation на стороне SQL Server

Выясним причину, связанную с настройками сервера. 1С 7.7 крайне чувствительна к так называемой «коллации». Для корректной работы русской версии 1С база данных на SQL Server должна иметь параметры:

  1. Collation: Cyrillic_General_CI_AS.
  2. Compatibility Level: Желательно 80 (соответствует SQL Server 2000), хотя 1С может работать и на более высоких уровнях при наличии специальных библиотек-заглушек.

Если база данных создана с другой кодировкой (например, Latin1_General), то никакие файлы OrdNoChk.prm не помогут — данные будут загружены некорректно, с «кракозябрами» вместо кириллицы. Проверить текущую коллацию можно запросом в SQL Server Management Studio:


SELECT name, collation_name 
FROM sys.databases 
WHERE name = 'Имя_Вашей_Базы';

Дополнительные рекомендации

Проанализируем еще несколько факторов, которые могут влиять на результат:

Подводя итог, можно сказать, что наиболее стабильным и безопасным методом для современной среды является сочетание Способа 1 (OrdNoChk.prm) и настройки Региональных стандартов системы. Если же база «упрямится», то загрузка через Windows XP (Способ 3) гарантированно решает проблему первичной инициализации данных.

← На главную