При первой настройке связки 1С:Предприятие и СУБД PostgreSQL системные администраторы часто сталкиваются с сообщением «Ошибка создания информационной базы: Ошибка операции администрирования. Ошибка СУБД: DATABASE не пригоден для использования». Эта ошибка является достаточно общей и может свидетельствовать о целом ряде проблем: от несовместимости версий программного обеспечения до неправильной кодировки при инициализации кластера баз данных. В этой статье мы подробно разберем причины возникновения этой ситуации и пошагово пройдем по пути ее решения.
Первым делом необходимо обратить внимание на используемые версии ПО. Как показывает практика, попытка установить самую свежую версию PostgreSQL (например, 16) на стабильную, но более старую платформу 1С (например, 8.3.22), часто приводит к фатальным ошибкам. Рассмотрим ситуацию: если вы используете 1С:Предприятие 8.3.22.2239, важно знать, что официальная поддержка PostgreSQL 16 появилась только в более поздних версиях платформы (начиная с 8.3.27).
Рекомендация: Для платформы 8.3.22 оптимальным и максимально стабильным выбором является PostgreSQL 14.x, адаптированный специалистами компании 1С. Использование «ванильных» (официальных с сайта postgresql.org) версий без специальных патчей также может вызывать ошибку «DATABASE не пригоден для использования», так как 1С требует специфических изменений в механизме блокировок и планах запросов.
Самая распространенная техническая причина, по которой 1С бракует созданную базу данных — это несоответствие параметров сортировки и локали. Платформа 1С:Предприятие при работе на операционной системе Windows жестко требует, чтобы база данных имела определенную локаль.
При инициализации кластера (initdb) необходимо убедиться, что используется локаль Russian_Russia.1251. Если кластер был инициализирован с параметрами C, POSIX или English_United States, 1С не сможет корректно создать системные таблицы и выдаст ошибку о непригодности базы.
Выясним, как правильно выполнить инициализацию. Рассмотрим команду для ручного запуска процесса создания кластера с нужными параметрами:
initdb.exe -D "C:\Program Files\PostgreSQL\14\data" --tune=1c --locale=ru_RU.UTF-8
Однако для Windows-серверов в параметре --locale чаще требуется указывать именно Russian_Russia.1251. Если вы переустанавливаете СУБД, обязательно очистите каталог данных (папку data), иначе новые параметры не применятся к существующему кластеру.
В современных версиях PostgreSQL (15 и 16) механизм работы с локалями претерпел изменения. Появился провайдер icu, который может использоваться по умолчанию вместо системного libc. Платформа 1С старых версий не умеет работать с ICU-локалями так, как ожидает СУБД. Это приводит к тому, что 1С не распознает параметры сортировки и считает базу поврежденной.
Если вы вынуждены использовать новые версии PostgreSQL, проследите, чтобы при создании базы или инициализации кластера использовался провайдер libc. В противном случае наиболее стабильным решением будет откат на PostgreSQL 14 от 1С, где эти механизмы настроены под требования платформы «из коробки».
Ситуация, когда пользователь admin или даже postgres не обладает достаточными правами внутри СУБД, также встречается довольно часто. При создании новой информационной базы сервер 1С выполняет ряд системных запросов: создает расширения, изменяет параметры конфигурации базы и работает с системным каталогом.
Проанализируем необходимые настройки прав:
NETWORK SERVICE или локальная учетная запись), есть полные права на чтение и запись в папку с данными СУБД.Малоизвестный факт: 1С создает любую новую базу путем клонирования системного шаблона template1. Если в этот шаблон когда-либо вносились изменения (например, вы вручную создавали там таблицы или меняли кодировку), то любая новая база унаследует эти «проблемы». В результате 1С увидит в новой базе объекты, которых там быть не должно, или несовместимые настройки, и выдаст ошибку о непригодности базы.
Рассмотрим шаги по проверке template1:
pgAdmin.template1: кодировка должна быть UTF8 (для версий 1С от 8.3) или WIN1251 (для старых версий), а локаль соответствовать системной.public базы template1 нет лишних таблиц или функций.Если вышеописанные методы не помогли, нам необходимо выяснить истинную причину ошибки, которую 1С скрывает за общим сообщением. Для этого проанализируем файл pg_log. Он находится внутри каталога данных (обычно data\pg_log). Для комплексного выявления ошибок в параметрах сервера баз данных можно использовать инструмент для аудита и чек-апа настроек СУБД под требования 1С.
Откройте последний лог-файл в момент возникновения ошибки и найдите строки, предшествующие отказу. Вы можете увидеть следующие сообщения:
Подведем итог и составим четкую последовательность действий для исправления ошибки:
data.PostgreSQL 14 с портала 1С (дистрибутив, адаптированный для 1С).Russian, Russia. Если установка идет через консоль, используйте флаг --locale=Russian_Russia.1251.libicu).postgres с правами суперпользователя.Следуя этим шагам, мы сможем устранить технические несоответствия и успешно развернуть информационную базу на PostgreSQL под управлением Windows.