Ситуация, когда после внезапного отключения электричества или некорректного завершения работы сервера PostgreSQL отказывается запускаться или становится «невидимым» для 1С, является классической проблемой системного администрирования. В этой статье мы подробно разберем, почему это происходит, как правильно восстановить работу сервера без радикальных мер (вроде полной переустановки) и как настроить конфигурационные файлы, чтобы 1С успешно подключалась к базе данных.
Проанализируем ситуацию: сервер работал исправно, но после перезагрузки служба postgresql не стартовала. Прежде чем «сносить» все данные, важно понять механизм защиты PostgreSQL. При запуске сервер создает в каталоге data специальный файл-блокировщик — postmaster.pid. Он содержит идентификатор процесса и предотвращает запуск нескольких экземпляров сервера на одних и тех же данных.
Если произошло аварийное отключение, сервер не успевает удалить этот файл. При следующей попытке запуска служба видит postmaster.pid, «думает», что сервер уже запущен, и завершает работу с ошибкой. Решение здесь максимально простое: нужно просто зайти в каталог с данными (обычно это папка data внутри директории установки PostgreSQL) и вручную удалить файл postmaster.pid. После этого служба запустится в штатном режиме без потери данных.
Если вы уже переустановили сервер и столкнулись с тем, что 1С выдает «сервер баз данных не обнаружен», хотя через pgAdmin подключение проходит, значит, проблема кроется в сетевых настройках. Разберем по шагам настройку основного конфигурационного файла postgresql.conf.
По умолчанию PostgreSQL часто настроен на прослушивание только локального адреса (loopback). Для корректной работы с 1С (даже если они стоят на одном физическом сервере) необходимо явно разрешить сетевые соединения. Найдем в файле postgresql.conf параметр listen_addresses.
Рекомендуется установить значение «звездочка», что означает «слушать все доступные сетевые интерфейсы»:
# В файле postgresql.conf
listen_addresses = '*'
port = 5432
Также обратите внимание на порт. Если вы переустанавливали PostgreSQL несколько раз, новая установка могла автоматически занять порт 5433 или выше, если 5432 был чем-то занят или помечен системой как зарезервированный. Проверьте, чтобы порт в настройках сервера совпадал с тем, который вы указываете в консоли кластера 1С.
Теперь проанализируем файл pg_hba.conf, который отвечает за аутентификацию (Host-Based Authentication). Именно здесь настраивается, кому, откуда и с какими правами разрешено подключаться к базам. Рассмотрим, как разрешить подключения максимально открыто для отладки, а затем сузить их до безопасных.
Для того чтобы разрешить подключения всем пользователям со всех IP-адресов внутри локальной сети (или с самого сервера), добавим следующие строки в конец файла:
# TYPE DATABASE USER ADDRESS METHOD
# Разрешаем все локальные подключения IPv4
host all all 127.0.0.1/32 trust
# Разрешаем подключения из локальной сети (например, 192.168.1.x)
host all all 192.168.1.0/24 trust
# Разрешаем подключения с любых адресов (только для тестов!)
host all all 0.0.0.0/0 trust
# Не забываем про IPv6, так как 1С часто обращается по ::1
host all all ::1/128 trust
Важное пояснение: метод trust означает, что сервер будет доверять любому пользователю без пароля. Это удобно для первичной настройки, но крайне небезопасно для рабочих сред. Как только связь между 1С и PostgreSQL будет установлена, замените trust на md5 или scram-sha-256 и укажите пароли для пользователей.
Выясним важный технический нюанс: обычная («ванильная») версия PostgreSQL, скачанная с официального сайта postgresql.org, не всегда корректно работает с 1С. Фирма 1С использует собственные патчи для обеспечения совместимости с механизмами блокировок и типами данных платформы.
Если вы установили стандартную версию, вы можете столкнуться с ошибкой «сервер баз данных не обнаружен» просто потому, что 1С не может распознать специфические ответы сервера или не находит нужных расширений. Рассмотрим правильные варианты дистрибутивов:
Если у вас установлена обычная версия, настоятельно рекомендуем заменить её на специализированную сборку для 1С.
Посмотрим на ситуацию со стороны операционной системы. Даже если PostgreSQL настроен идеально, подключения могут блокироваться на уровне Windows. Разберем основные моменты:
postgres.exe. Старые правила в брандмауэре могут быть привязаны к конкретному пути или ID процесса. Проверьте, разрешен ли входящий трафик по порту 5432 (TCP).Visual C++ Redistributable. Без них сервер может запускаться, но работать некорректно при попытке обработки запросов от клиента.При создании информационной базы в поле «Сервер баз данных» можно указывать разные значения. Если localhost не работает, попробуйте проанализировать альтернативные варианты записи:
127.0.0.1 — явное указание локального адреса IPv4.::1 — локальный адрес IPv6.Имя_Компьютера — иногда разрешение имен через DNS/WINS работает стабильнее, чем прямой IP.Помните, что 1С чувствительна к регистру символов. Если пользователь базы данных в PostgreSQL создан как Postgres (с большой буквы), то и в настройках 1С он должен быть указан точно так же.
Подводя итог: в большинстве случаев проблема «не обнаруженного сервера» решается либо удалением postmaster.pid после сбоя, либо корректной пропиской listen_addresses = '*' и настройкой доверенных сетей в pg_hba.conf. Совместное использование этих методов гарантирует стабильное подключение 1С к базе данных.