При переносе информационных баз 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 всех объектов во всех базах распределенной системы, что равносильно созданию УРБД «с нуля» с последующей ручной синхронизацией данных — задача колоссальной трудоемкости.
Рассмотрим два метода, которые на практике доказали свою эффективность в решении данной проблемы.
Это наиболее правильный, безопасный и лицензионно чистый метод. Его суть — привести настройки сортировки в самой базе данных в полное соответствие с системными настройками нового сервера.
Разберем по шагам, как это сделать:
После выполнения этих действий проблема с обменом данными в УРБД будет решена.
Важное замечание: Для стабильной работы после такого изменения крайне желательно, чтобы все пользователи работали с базой в одинаковой операционной среде. Идеальное решение — организация работы через терминальный сервер (RDP). Это гарантирует, что все сеансы будут запускаться с одинаковыми системными настройками сортировки, и исключит конфликты, если кто-то попытается подключиться к базе по сети с компьютера с другой версией ОС.
BkEnd.dllЭтот метод, известный в сообществе как «секретный релиз» или «солюшен», предполагает замену оригинального файла BkEnd.dll в папке BIN на модифицированный. Такие библиотеки отключают проверку порядка сортировки на более глубоком уровне, чем OrdNoChk.prm, что решает проблему и для обмена УРБД.
Несмотря на то, что этот способ технически работает, он сопряжен со значительными рисками:
Этот метод следует рассматривать только как крайнюю меру, когда по каким-либо причинам невозможно применить первый, рекомендуемый способ. Вы должны полностью осознавать и принимать все связанные с ним риски.
Проанализировав ситуацию, можно с уверенностью сказать, что наиболее предпочтительным, безопасным и корректным решением проблемы с ошибкой сортировки в УРБД является изменение кодовой страницы информационной базы на «+ Текущая системная установка» с последующей полной переиндексацией. Этот метод полностью устраняет причину конфликта и соответствует рекомендациям по администрированию 1С 7.7.