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

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

При переносе старых, но надежно работающих баз данных «1С:Предприятие 7.7» на современные операционные системы (Windows 7, 8, 10, 11 или Windows Server 2008, 2012, 2016 и новее) системные администраторы и разработчики неизбежно сталкиваются с классической ошибкой: «Порядок сортировки отличается от системного». Эта проблема блокирует запуск программы как в режиме «Предприятие», так и в режиме «Конфигуратор».

В этой статье мы подробно разберем, почему возникает этот сбой, проанализируем его внутренние механизмы и рассмотрим все существующие методы решения — от простых «заглушек» до модификации системных файлов и настроек операционной системы. Мы пройдем по всем шагам вместе, чтобы вы могли выбрать наиболее безопасный и эффективный путь для вашей ИТ-инфраструктуры.

Выясняем причину возникновения ошибки

Прежде чем переходить к практическим действиям, давайте разберем физическую суть проблемы. Платформа «1С:Предприятие 7.7» разрабатывалась в эпоху господства Windows 98, XP и Server 2003 (архитектура NT 5.x). Для сортировки текстовых данных в индексах баз данных (файлы с расширением .CDX в DBF-версии) 1С использует системные таблицы сравнения символов — так называемые таблицы NLS (National Language Support).

Начиная с Windows Vista и Windows Server 2008 (архитектура NT 6.0 и старше), корпорация Microsoft кардинально переработала и обновила правила сортировки и сравнения кириллических символов в ядре ОС. Когда движок 1С запускается, он сравнивает текущую кодовую страницу операционной системы с той, которая прописана в заголовке таблиц базы данных. Обнаружив несовпадение стандартов сортировки, платформа блокирует работу. Это сделано в целях безопасности: если продолжить работу в среде с отличающейся сортировкой, новые записи будут индексироваться некорректно, что приведет к разрушению логической целостности базы и невозможности быстрого поиска по ключевым полям.

---

Способ 1. Использование файла-отключения проверки (OrdNoChk.prm)

Самый быстрый и популярный способ «обмануть» систему — создание специального файла-заглушки. Этот метод позволяет запустить базу данных без изменения ее внутренней структуры, что особенно важно, если с базой продолжают параллельно работать пользователи на старых операционных системах (например, в распределенной сети URIB).

Рассмотрим по шагам процесс создания этого файла:

  1. Откроем обычный текстовый редактор «Блокнот» (Notepad).
  2. Оставим файл абсолютно пустым (или напишем в нем любую строку для порядка, например, «Без проверки сортировки»).
  3. Сохраним данный файл под именем OrdNoChk.prm. Обратите внимание, что расширение файла должно быть именно .prm, а не .txt.

Для автоматизации этого процесса мы можем использовать простой командный скрипт. Давайте запустим командную строку от имени администратора и выполним следующий код:


REM Переходим в каталог установки платформы 1С
cd /d "C:\Program Files (x86)\1Cv77\BIN"

REM Создаем пустой конфигурационный файл
echo. > OrdNoChk.prm

echo Файл OrdNoChk.prm успешно создан!

Важное правило размещения файла: Компания 1С в своих официальных технических бюллетенях указывает, что файл OrdNoChk.prm должен располагаться строго в одном месте. Его можно положить либо в каталог исполняемых файлов платформы (папка BIN, где находится файл 1cv7.exe), либо непосредственно в каталог конкретной информационной базы данных. Одновременное нахождение файла в обоих каталогах может привести к конфликтам чтения параметров инициализации платформы!

Существенное ограничение метода: Данный файл является лишь временной мерой. Он отключает проверку порядка сортировки исключительно в режиме «Предприятие». Как только вы попытаетесь запустить «Конфигуратор» для выполнения критических административных процедур (таких как «Тестирование и исправление», резервное копирование или выгрузка данных), программа проигнорирует этот файл и выдаст ту же самую ошибку на этапе пересчета служебных данных.

---

Способ 2. Изменение кодовой страницы ИБ в Конфигураторе

Если ваша ИТ-инфраструктура полностью переведена на современные операционные системы и вы не планируете использовать компьютеры под управлением Windows XP/2003, лучшим решением будет штатное изменение кодовой страницы базы данных под требования новых ОС.

Проанализируем этот процесс подробно:

  1. Запустим 1С в режиме Конфигуратор. Если запуск блокируется ошибкой, временно воспользуемся старым компьютером с Windows XP/2003 или виртуальной машиной (подробнее об этом ниже).
  2. В главном меню перейдем по пути: Администрирование -> Кодовая страница таблиц ИБ...
  3. В открывшемся окне выбора кодовой страницы прокрутим список в самый низ и выберем вариант: «+ Текущая системная установка».
  4. Нажмем кнопку «ОК».
  5. Платформа выдаст предупреждение о том, что данная операция потребует полной переиндексации всех таблиц базы данных. Соглашаемся и дожидаемся завершения процесса.

После выполнения этой процедуры база данных будет полностью перестроена под стандарты сортировки вашей текущей современной ОС. Ошибка исчезнет раз и навсегда как в «Предприятии», так и в «Конфигураторе».

Что делать, если база распределенная (URIB)? Многие специалисты обоснованно опасаются менять кодовую страницу в распределенных информационных базах. Однако практика показывает, что кодовая страница у различных периферийных баз в одной распределенной сети может отличаться. Смена кодовой страницы влечет за собой только физическую переиндексацию файлов .CDX на конкретном рабочем месте и никак не затрагивает структуру передаваемых файлов миграции данных (файлы обмена XML/DBF). Тем не менее, перед проведением таких манипуляций всегда создавайте полную резервную копию всей директории базы данных!

Рассмотрим интересный лайфхак с двойной переиндексацией, который помогает решить проблему зависших индексов на некоторых серверах Windows Server 2008/2012:

  1. В Конфигураторе меняем кодовую страницу ИБ на значение 1251 - Русский, белорусский, болгарский, македонский, сербский. Запускаем переиндексацию.
  2. Сразу после этого возвращаем значение настройки обратно на + Текущая системная установка и выполняем повторную переиндексацию. Этот «двойной шаг» заставляет Windows принудительно обновить системные кэши NLS-таблиц для конкретных файлов базы.

---

Способ 3. Hex-патч библиотеки BkEnd.dll (решение для системных администраторов)

В тех случаях, когда кодовую страницу базы данных изменять категорически запрещено (например, база находится на сетевом диске общего доступа, и половина сотрудников работает на Windows XP, а вторая половина — на Windows 11), системные администраторы используют метод обхода проверки на уровне бинарного кода платформы.

Для этого нам понадобится любой шестнадцатеричный редактор (например, HxD, WinHex или встроенный Hex-редактор в файловых менеджерах). Метод заключается в изменении одного байта в главной библиотеке движка 1С — BkEnd.dll, которая отвечает за работу с базой данных.

Выполним процедуру по шагам:

  1. Перейдем в каталог установки 1С (обычно это C:\Program Files (x86)\1Cv77\BIN\).
  2. Найдем файл BkEnd.dll и обязательно создадим его резервную копию (например, скопируем под именем BkEnd.dll.bak).
  3. Откроем оригинальный файл BkEnd.dll в шестнадцатеричном (Hex) редакторе.
  4. Выполним поиск по смещению (адресу в файле). Для наиболее распространенных официальных релизов платформы 1С 7.7 (25-й и 27-й релизы) смещение будет следующим:
    • Основное смещение: 0018A6DD
    • Альтернативное смещение (в некоторых модифицированных сборках): 0018A79D
  5. По указанному адресу мы найдем байт со значением 75. В ассемблерном коде это инструкция JNZ (переход, если не равно нулю), которая как раз перенаправляет выполнение программы на ветку вывода ошибки сортировки.
  6. Изменим это значение на EB. В ассемблере это инструкция JMP (безусловный переход), которая заставит платформу игнорировать результаты проверки и продолжить загрузку в любом случае.
  7. Сохраним изменения в файле и запустим 1С.

После этой несложной хирургической операции Конфигуратор на данном компьютере будет беспрепятственно выполнять любые административные операции («Тестирование и исправление», пересчет служебных данных) без выдачи раздражающих ошибок сортировки.

---

Способ 4. Переход на «Секретный релиз»

В профессиональном сообществе разработчиков 1С 7.7 давно существует понятие «секретного релиза». Это неофициальный патч платформы (часто позиционируемый как сборка 7.70.027.7 и выше), разработанный энтузиастами для решения проблем совместимости со всеми современными технологиями.

Обычно этот комплект состоит из модифицированной связки библиотек:

Данный релиз решает целый комплекс проблем современного окружения:

---

Способ 5. Специфика работы с SQL-версиями 1С 7.7

Если ваша база данных развернута на SQL-сервере, проблема сортировки может приобрести новые масштабы. Простого отключения проверки через OrdNoChk.prm или модификации DLL часто оказывается недостаточно, так как в процесс обработки текстовых полей вмешивается системный драйвер ODBC операционной системы.

При работе в связке «1С 7.7 + MS SQL» на современных Windows обязательно обратите внимание на следующие важные аспекты:

Замена драйверов ODBC: Современные системные драйверы SQL Server в Windows 10/11 не могут корректно транслировать запросы от старого ядра 1С. Чтобы исправить это, системные администраторы используют проверенный метод подмены файлов драйвера:

  1. Возьмите файлы sqlsrv32.dll и sqlsrv32.rll из операционной системы Windows Server 2003 или Windows XP.
  2. Поместите эти файлы непосредственно в каталог установки платформы 1С (папка BIN). В этом случае платформа будет использовать именно локальные старые драйверы при обращении к серверу баз данных, не затрагивая общесистемные драйверы новой Windows.

Настройка параметров сортировки (Collation) на сервере базы данных: При создании базы данных на MS SQL Server критически важно выбрать правильную кодировку. Для корректной работы кириллицы в 1С 7.7 база должна быть создана с кодировкой Cyrillic_General_CI_AS или старой системной кодировкой SQL_Latin1_General_CP1251_CI_AS. Если кодировка сервера отличается, то даже при отключенной ошибке сортировки в отчетах вы будете наблюдать путаницу с алфавитным порядком номенклатуры и контрагентов.

---

Способ 6. Тонкая настройка операционной системы (DEP) и виртуализация

Даже после того как ошибка сортировки побеждена, старая платформа 1С 7.7 на современных 64-битных операционных системах может вести себя нестабильно: неожиданно закрываться без каких-либо сообщений или «вылетать» при формировании тяжелых отчетов.

Для предотвращения подобных ситуаций необходимо правильно настроить функцию DEP (Data Execution Prevention / Предотвращение выполнения данных) в Windows. Давайте выполним эту настройку:

  1. Откроем Панель управления -> Система -> Дополнительные параметры системы.
  2. Вкладка Дополнительно, в разделе Быстродействие нажмем кнопку Параметры....
  3. Перейдем на вкладку Предотвращение выполнения данных.
  4. Установим переключатель в положение: «Включить DEP для всех программ и служб, кроме выбранных ниже».
  5. Нажмем кнопку Добавить... и укажем пути к исполняемым файлам 1С (1cv7.exe, 1cv7s.exe) в каталоге установки.
  6. Применим изменения и перезагрузим компьютер.

Резервный вариант с виртуализацией: Если вам требуется провести разовое регламентное обслуживание базы (например, Тестирование и исправление крупной базы перед переходом на новые платформы), а модифицировать системные файлы рабочей станции или сервера не хочется, лучшим решением станет виртуализация. Попросите вашего системного администратора поднять легкую виртуальную машину (в Hyper-V, VirtualBox или VMware) с установленной Windows Server 2003 или Windows XP. Подключите базу данных как сетевой диск внутри виртуальной машины — и вы сможете проводить любые административные работы в «родной» для 1С 7.7 системной среде без каких-либо ошибок сортировки.

← На главную