Как исправить ошибку "Порядок сортировки отличается от системного" в 1С 7.7 при обмене в УРБД?

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

При переносе информационных баз 1С:Предприятие 7.7 на новый сервер, например, с Windows Server 2003 на Windows Server 2008 и выше, администраторы и разработчики часто сталкиваются с ошибкой: «Порядок сортировки, установленный для базы данных, отличается от системного!». Особенно остро эта проблема проявляется при использовании Управления распределенными информационными базами (УРБД), блокируя обмен данными между центральным и периферийными узлами. Давайте подробно разберем, почему возникает эта ошибка и какие существуют способы ее решения.

Выясним причину проблемы

Основная причина кроется в изменении системных правил сортировки символов (collation) в новых версиях Windows по сравнению со старыми. Информационная база 1С 7.7, созданная на старой ОС, хранит информацию о порядке сортировки, который теперь не совпадает с системным на новом сервере. Платформа 1С при запуске выполняет проверку этого соответствия и, обнаружив расхождение, выдает ошибку.

В контексте УРБД ситуация усугубляется, если префиксы информационных баз (например, «ЦБ» для центральной, «М1» для магазина) заданы кириллическими символами. Механизм обмена данными УРБД особенно чувствителен к порядку сортировки при обработке идентификаторов баз, и использование кириллицы на системах с разными правилами сортировки приводит к неразрешимому конфликту, который и прерывает процесс выгрузки/загрузки данных.

Проанализируем различные подходы к решению этой задачи, от самых простых и нерабочих до эффективных и рекомендуемых.

Анализ неэффективных и рискованных решений

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

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

Это самый известный «быстрый» способ обойти проверку сортировки. Он заключается в создании пустого файла с именем OrdNoChk.prm в папке BIN каталога установки платформы 1С. Этот файл действительно отключает проверку при обычном запуске базы в режиме Предприятия.

Однако для УРБД этот метод совершенно бесполезен. Механизмы обмена данными работают на более низком уровне и игнорируют наличие этого файла. Проверка сортировки все равно будет выполнена во время формирования пакета обмена, и вы получите ту же самую ошибку.

2. Смена кириллических префиксов на латинские

Это решение кажется логичным: раз проблема в кириллице, давайте заменим ее на латиницу. Но на практике это чрезвычайно сложная и опасная операция. Важно понимать, почему:

Префикс информационной базы — это не просто метка, а неотъемлемая часть уникального идентификатора (ID) каждого объекта в базе данных: каждого документа, элемента справочника, записи регистра. Простая замена префиксов в служебных таблицах УРБД (1sbset, 1sdwnlds, 1supdts) не изменит идентификаторы миллионов уже существующих объектов.

В результате вы получите полную рассинхронизацию данных. Старые объекты в периферийных базах перестанут сопоставляться с объектами в центральной базе, что приведет к нарушению ссылочной целостности, дублированию данных и их неминуемой потере. Корректная смена префиксов требует написания сложнейших обработок для модификации ID всех объектов во всех базах распределенной системы, что равносильно созданию УРБД «с нуля» с последующей ручной синхронизацией данных — задача колоссальной трудоемкости.

Рабочие и проверенные решения

Рассмотрим два метода, которые на практике доказали свою эффективность в решении данной проблемы.

Решение 1: Смена кодовой страницы базы данных (рекомендуемый способ)

Это наиболее правильный, безопасный и лицензионно чистый метод. Его суть — привести настройки сортировки в самой базе данных в полное соответствие с системными настройками нового сервера.

Разберем по шагам, как это сделать:

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

После выполнения этих действий проблема с обменом данными в УРБД будет решена.

Важное замечание: Для стабильной работы после такого изменения крайне желательно, чтобы все пользователи работали с базой в одинаковой операционной среде. Идеальное решение — организация работы через терминальный сервер (RDP). Это гарантирует, что все сеансы будут запускаться с одинаковыми системными настройками сортировки, и исключит конфликты, если кто-то попытается подключиться к базе по сети с компьютера с другой версией ОС.

Решение 2: Использование модифицированной библиотеки BkEnd.dll

Этот метод, известный в сообществе как «секретный релиз» или «солюшен», предполагает замену оригинального файла BkEnd.dll в папке BIN на модифицированный. Такие библиотеки отключают проверку порядка сортировки на более глубоком уровне, чем OrdNoChk.prm, что решает проблему и для обмена УРБД.

Несмотря на то, что этот способ технически работает, он сопряжен со значительными рисками:

Этот метод следует рассматривать только как крайнюю меру, когда по каким-либо причинам невозможно применить первый, рекомендуемый способ. Вы должны полностью осознавать и принимать все связанные с ним риски.

Итоговый вывод

Проанализировав ситуацию, можно с уверенностью сказать, что наиболее предпочтительным, безопасным и корректным решением проблемы с ошибкой сортировки в УРБД является изменение кодовой страницы информационной базы на «+ Текущая системная установка» с последующей полной переиндексацией. Этот метод полностью устраняет причину конфликта и соответствует рекомендациям по администрированию 1С 7.7.

← На главную