Разберем классическую ситуацию, с которой часто сталкиваются администраторы при развертывании связки платформ 1С:Предприятие и СУБД PostgreSQL на базе операционных систем Windows (например, Windows Server 2012 R2 или 2019). При попытке создания новой информационной базы через консоль кластера 1С возникает следующая ошибка: "Ошибка установки или изменения национальных настроек информационной базы. Порядок сортировки не поддерживается базой данных".
При этом, если администратор пытается вручную проинициализировать кластер базы данных с помощью утилиты initdb и задать локаль в формате Linux (например, initdb --locale=ru_RU.UTF-8 --encoding=UTF8), система выдает ошибку о том, что имя локали является ошибочным. Рассмотрим подробнее, почему так происходит и как правильно настроить среду для корректной работы 1С.
Чтобы успешно решить задачу, выясним основные причины конфликта сортировок и локалей между 1С и PostgreSQL в среде Windows.
Формат ru_RU.UTF-8 является стандартом POSIX, который используется в Linux-системах. Операционная система Windows не распознает такое имя локали. Для корректной инициализации базы под Windows с поддержкой русского языка необходимо использовать наименование Russian_Russia.1251. Именно поэтому ручной запуск команды с параметрами от Linux приводит к сбою.
Обычный (ванильный) дистрибутив PostgreSQL, скачанный с официального сайта разработчиков СУБД, "из коробки" зачастую не способен корректно работать с платформой 1С. Платформа 1С:Предприятие жестко проверяет, чтобы порядок сортировки (collation) строго соответствовал ее внутренним механизмам. Специализированные сборки (например, от Postgres Pro для 1С или дистрибутивы, загруженные с официального портала ИТС) содержат критически важные патчи. В них встроены модификации для правильного сравнения строк, регистронезависимого поиска (расширения mchar и fulleq), а также транзакционно-небезопасные функции для работы с временными таблицами (модуль fasttrun, предотвращающий разрастание системных каталогов).
Инициализация кластера берет настройки локали по умолчанию из профиля пользователя операционной системы, от имени которого запускается служба СУБД (обычно это postgres или NETWORK SERVICE). Если в Windows для этого пользователя не установлены региональные стандарты "Россия" и язык для программ, не поддерживающих Юникод "Русский", кластер проинициализируется с неверной (например, английской) локалью.
Обратим внимание на одну характерную особенность данной ошибки. При возникновении проблемы с национальными настройками, сама база данных на сервере PostgreSQL может быть физически создана и даже появиться в списке баз в консоли администратора 1С. Однако работать с ней будет невозможно: при попытке зайти в Конфигуратор или режим Предприятия система повторно проверит параметры и выдаст ошибку несоответствия настроек. Запомните: такую "дефектную" базу необходимо обязательно удалить перед тем, как создавать новую с исправленными настройками.
Разберем по шагам, как исправить ошибку и успешно создать базу данных 1С на PostgreSQL.
Если вы установили обычную (ванильную) версию СУБД, ее необходимо удалить. Также удалите все файлы данных старого кластера (каталог data), так как они уже проинициализированы с неверными настройками.
Никогда не используйте стандартные сборки для продуктивных баз 1С. Скачайте дистрибутив PostgreSQL, специально подготовленный для работы с 1С. Это может быть бесплатная версия Postgres Pro 1C, коммерческие версии Postgres Pro / Enterprise, либо дистрибутив, доступный подписчикам на портале ИТС.
Перед установкой убедитесь, что в панели управления Windows в разделе "Региональные стандарты" (Region) установлен формат "Русский (Россия)". На вкладке "Дополнительно" (Administrative) в разделе "Язык программ, не поддерживающих Юникод" (Language for non-Unicode programs) обязательно должен быть выбран "Русский (Россия)".
Запустите установщик адаптированного дистрибутива. При прохождении шагов мастера установки, когда система предложит выбрать локаль для инициализации кластера (Locale), не выбирайте ручные варианты вроде ru_RU или C. Выберите пункт "Настройка ОС" (или Default locale). Установщик автоматически подтянет правильные параметры из Windows, и кластер будет проинициализирован с локалью Russian_Russia.1251 и кодировкой базы данных UTF8.
После успешной установки и запуска службы PostgreSQL, откройте консоль администрирования серверов 1С. При создании новой информационной базы укажите сервер баз данных и выберите тип СУБД PostgreSQL. Оставьте параметры сортировки и кодировки по умолчанию. База данных должна создаться без ошибок.
Посмотрим на особенности современных версий СУБД. Начиная с PostgreSQL 14 и 15, в системе значительно улучшена поддержка провайдера локалей ICU. Если при ручном администрировании вам необходимо явно указать локаль в обход стандартной библиотеки libc, вы можете использовать параметры провайдера ICU. Например: --icu-locale=ru-RU. Тем не менее, для стабильной работы платформы 1С:Предприятие в среде Windows по-прежнему рекомендуется доверять инициализацию графическому установщику адаптированных сборок с использованием традиционной локали ОС Russian_Russia.1251 в связке с UTF8.
Выполнив описанные выше шаги, вы гарантированно избавитесь от ошибки поддержки порядка сортировок и обеспечите стабильную работу связки 1С и PostgreSQL на операционной системе Windows.