Как исправить ошибку создания базы данных 1С в СУБД PostgreSQL?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При настройке серверной версии 1С:Предприятие многие системные администраторы сталкиваются с проблемой: после установки PostgreSQL и попытке создания информационной базы через консоль администрирования 1С возникает ошибка. Часто это происходит даже в тех случаях, когда пароль пользователя postgres верен, порт открыт, а протокол IPv6 отключен. Разберем подробно, почему так происходит и как правильно развернуть СУБД для работы с «1С:Предприятием».

Выясним причину: почему «обычный» PostgreSQL не подходит для 1С

Первое и самое важное правило, которое нужно усвоить: официальная («ванильная») сборка PostgreSQL, загруженная с сайта postgresql.org, не предназначена для работы с 1С:Предприятие «из коробки». Если вы установили файл вроде postgresql-13.1-1-windows-x64.exe напрямую от разработчиков СУБД, вы гарантированно получите ошибку при попытке создания базы. Проанализируем, каких именно компонентов не хватает в стандартной сборке:

  1. Поддержка ICU (International Components for Unicode): Платформа 1С использует специфические механизмы сортировки и сопоставления строк. Без патчей ICU в базе данных невозможно будет корректно построить индексы, что приведет к ошибкам еще на этапе создания структуры таблиц.
  2. Механизм управления блокировками: 1С:Предприятие реализует сложную логику транзакций. В специализированных сборках PostgreSQL изменены алгоритмы обработки блокировок, чтобы минимизировать риск возникновения дедлоков (взаимных блокировок).
  3. Патч Online Analyze: Этот компонент крайне важен для производительности. Он заставляет СУБД обновлять статистику планировщика запросов сразу после изменения данных в таблицах. Без него запросы 1С могут начать «тормозить» уже через несколько часов работы.
  4. Обработка спецсимволов: 1С активно использует обратную косую черту \ в своих запросах, что в стандартном PostgreSQL трактуется иначе, чем ожидает платформа.

Рассмотрим, где взять правильный дистрибутив. Существует два основных варианта: сборка от самой компании 1С (доступна на портале ИТС) или сборка от компании Postgres Professional (версия Postgres Pro 1C).

Пошаговый алгоритм удаления некорректной версии

Просто удалить программу через «Панель управления» недостаточно. Чтобы новая установка прошла успешно, нам необходимо полностью очистить систему от следов старого кластера. Разберем этот процесс по шагам:

  1. Удалите установленный PostgreSQL через Программы и компоненты.
  2. После удаления обязательно перезагрузите сервер. Это необходимо, чтобы освободить порт 5432, который мог остаться «зависшим» в системе.
  3. Удалите папку с данными. По умолчанию она находится по пути C:\Program Files\PostgreSQL\13\data. Если вы оставите эту папку, новый инсталлятор попытается подцепить старый кластер, созданный с неверными локалями, и ошибка повторится.
  4. Проверьте наличие пользователя postgres в списке пользователей Windows. Если он остался, удалите его вручную через «Управление компьютером» -> «Локальные пользователи», иначе при новой установке возникнут проблемы с правами доступа к папке Data.

Правильная установка и инициализация кластера

Теперь приступим к установке нужной версии (например, PostgreSQL_1C_13.1_64bit). Рассмотрим ключевые моменты, на которые нужно обратить внимание в процессе инсталляции:

Выбор локали (Locale): Это критический момент. При инициализации базы данных необходимо выбрать локаль Russian_Russia.1251 или аналогичную. Если оставить значение C или Default, база данных 1С не сможет работать с кириллицей в именах объектов или данных, и создание базы завершится аварией.

Размер кластера файловой системы: Если вы устанавливаете СУБД на новый диск или раздел, при форматировании рекомендуется выбирать размер кластера 8 Кб. Это соответствует размеру страницы данных PostgreSQL и значительно повышает скорость операций ввода-вывода.

Параметры авторизации: Убедитесь, что для пользователя postgres задан простой буквенно-цифровой пароль без сложных спецсимволов вроде $ или &, так как иногда сервер 1С некорректно передает их в командной строке при первом создании базы.

Тонкая настройка конфигурационного файла postgresql.conf

Даже специализированная сборка иногда требует ручной правки конфигурации для стабильной работы. Найдем файл postgresql.conf в папке data и проанализируем следующие параметры:


# Эти настройки обязательны для корректной работы 1С
standard_conforming_strings = off
escape_string_warning = off
backslash_quote = on
max_locks_per_transaction = 250

Разберем подробнее, за что они отвечают:

Проверка сетевого взаимодействия

Если после установки правильной версии база все еще не создается, посмотрим на сетевые настройки. Проанализируем файл pg_hba.conf. В нем должны быть разрешены подключения с адреса, на котором запущен сервер 1С (обычно 127.0.0.1/32 для локальной установки).

Попробуйте вместо сетевого имени сервера при создании базы в консоли 1С указать localhost или явный IP-адрес 127.0.0.1. Это поможет исключить проблемы с разрешением имен (DNS) и влияние IPv6, который иногда остается активным в системных процессах даже после отключения в свойствах сетевого адаптера.

Важное замечание по библиотекам: В некоторых случаях (особенно на старых версиях Windows Server) серверу 1С может не хватать клиентских библиотек PostgreSQL. Для решения этой проблемы рекомендуется скопировать файлы libintl.dll, libiconv.dll и другие .dll из папки bin установленного PostgreSQL в папку bin платформы 1С:Предприятие.

Резюме по решению проблемы

Подведем итог нашему разбору. Если у вас не создается база на PostgreSQL:

  1. Убедитесь, что используете сборку с патчами для 1С (от 1С или Postgres Pro).
  2. Проверьте, что кластер инициализирован с русской локалью.
  3. Убедитесь, что в postgresql.conf параметр standard_conforming_strings установлен в значение off.
  4. Выполните чистую переустановку с удалением папки Data и пользователя postgres, если ранее стояла «ванильная» версия.

Следуя этим шагам, вы обеспечите стабильную и производительную работу связки 1С:Предприятие и PostgreSQL.

← На главную