Как перевести 1С:Предприятие 8.3 на PostgreSQL: сервер, роль, база в кластере

· 10 мин

Содержание

Подключить 1С к PostgreSQL можно только в клиент-серверном варианте: базу создаёт и обслуживает сервер 1С:Предприятия, а не клиент. Порядок такой: ставите сборку PostgreSQL с патчами для 1С, создаёте роль с паролем, открываете доступ в pg_hba.conf, затем в консоли кластера или в окне запуска создаёте информационную базу с типом СУБД PostgreSQL.

Файловую базу «подключить» к PostgreSQL напрямую нельзя. Её переносят выгрузкой: в Конфигураторе сохраняете .dt, создаёте пустую серверную базу на PostgreSQL и загружаете файл туда.

Что подготовить до установки PostgreSQL

Сначала соберите три вещи: совместимую сборку СУБД, сервер 1С и сеть между ними.

Сборка СУБД: только с патчами для 1С

Обычный PostgreSQL из репозитория дистрибутива для 1С не подходит. Платформа использует собственные типы данных mchar и mvarchar и ряд расширений (fasttrun, fulleq, online_analyze, plantuner). Их нет в «ванильной» сборке, и база не создастся.

Варианты, которые работают:

  • 📦 сборка PostgreSQL, которую фирма 1С выкладывает для своих партнёров и пользователей с подпиской;
  • 📦 бесплатные сборки «PostgreSQL для 1С» от компании Postgres Professional;
  • 📦 коммерческая Postgres Pro (Standard или Enterprise) — для крупных баз с требованиями к поддержке.

Версию СУБД подбирайте под версию платформы. В документации к каждому релизу платформы есть список поддерживаемых версий PostgreSQL. Номер СУБД должен входить в этот список, иначе сервер 1С откажется работать с базой или поведёт себя непредсказуемо.

Сервер 1С и лицензии

На машине (или соседней машине) должен работать сервер 1С:Предприятия 8.3 той же разрядности, что и клиенты, которые к нему подключаются. Для работы нужна лицензия на сервер 1С и клиентские лицензии на пользователей.

Сеть и порты

КомпонентПорт по умолчаниюКто подключается
PostgreSQL5432рабочие процессы сервера 1С
Агент сервера 1С (ragent)1540клиенты, консоль кластера
Менеджер кластера (rmngr)1541клиенты после агента
Рабочие процессы (rphost)1560–1591клиенты

К PostgreSQL обращаются не пользователи, а сервер 1С. Значит, порт 5432 достаточно открыть только для адреса сервера 1С. Если оба сервиса стоят на одной машине, СУБД можно вообще не выставлять наружу.

На Linux заранее проверьте, что в системе есть локаль ru_RU.UTF-8 (команда locale -a). Без неё кластер PostgreSQL и базы 1С с русской сортировкой создаются с ошибками.

Установка PostgreSQL для 1С на Windows и Linux

Windows

  1. Запустите установщик выбранной сборки от имени администратора.
  2. Укажите каталог данных на быстром диске (SSD), отдельно от системного, если есть такая возможность.
  3. Задайте пароль суперпользователя postgres и запишите его.
  4. Оставьте порт 5432, если на сервере нет другого экземпляра PostgreSQL.
  5. Выберите локаль Russian, Russia и кодировку UTF8.
  6. После установки проверьте, что служба PostgreSQL запущена и стартует автоматически.

Linux (Debian/Ubuntu, РЕД ОС, Astra)

Подключите репозиторий выбранной сборки по инструкции её поставщика и установите пакеты сервера. Затем инициализируйте кластер с русской локалью. Для сборок, где кластер создаётся вручную, команда выглядит так:

sudo -u postgres /usr/lib/postgresql/<версия>/bin/initdb \
  -D /var/lib/postgresql/<версия>/main \
  --locale=ru_RU.UTF-8 --encoding=UTF8

Путь к initdb и каталогу данных зависит от сборки: у Postgres Pro он свой, у сборок на базе пакетов Debian — свой. Проверьте его в документации к пакету.

Убедитесь, что служба запущена:

sudo systemctl status postgresql

Роль для 1С и доступ к базе данных PostgreSQL

Создайте отдельную роль

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

CREATE ROLE usr1c WITH LOGIN SUPERUSER PASSWORD 'СложныйПароль_2x';

Права суперпользователя нужны потому, что платформа при создании базы сама создаёт в ней расширения и служебные объекты. С урезанной ролью создание базы обычно падает на этом шаге. Если политика безопасности запрещает суперпользователя, базу и расширения заранее создаёт администратор СУБД, а роль 1С делают владельцем этой базы — но такой вариант нужно проверить на тестовом стенде.

Пароль роли попадёт в настройки информационной базы в кластере 1С. Не используйте пароль, который совпадает с паролями других систем.

Разрешите подключение в pg_hba.conf

Файл лежит в каталоге данных PostgreSQL (на Windows — в папке data установки). Добавьте строку для адреса сервера 1С:

# TYPE  DATABASE  USER   ADDRESS          METHOD
host    all       usr1c  192.168.10.15/32  scram-sha-256

Если сервер 1С стоит на той же машине, укажите 127.0.0.1/32.

Метод scram-sha-256 — стандарт для современных версий PostgreSQL. Старые сборки платформы 1С не поддерживали SCRAM и падали на аутентификации. В этом случае для адреса сервера 1С временно ставят md5 и задают пароль роли заново (пароль хранится в том формате, который был активен в момент его установки).

Откройте прослушивание сети

В postgresql.conf проверьте параметр:

listen_addresses = '*'

Можно перечислить конкретные адреса вместо *. После правки pg_hba.conf достаточно перечитать конфигурацию, а смена listen_addresses требует перезапуска службы.

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

Создание информационной базы 1С на PostgreSQL в кластере серверов

Базу регистрируют одним из двух способов. Результат одинаковый.

Способ 1. Через консоль администрирования серверов 1С

  1. Откройте консоль, разверните Центральные серверы 1С:Предприятия 8.3 → <имя сервера> → Кластеры → <кластер>.
  2. На ветке Информационные базы вызовите контекстное меню Создать → Информационная база.
  3. Заполните поля:
    • Имя — как база будет называться в кластере, например buh_main;
    • Защищённое соединение — выключено, если вы не настраивали шифрование;
    • Сервер баз данных — имя или IP машины с PostgreSQL;
    • Тип СУБД — PostgreSQL;
    • База данных — имя базы в PostgreSQL (лучше латиницей, строчными буквами);
    • Пользователь сервера БД и Пароль — роль usr1c и её пароль.
  4. Поставьте флажок Создать базу данных в случае её отсутствия.
  5. При необходимости включите Установить блокировку регламентных заданий — это полезно для копий рабочих баз, чтобы они не загружали банк и не слали отчёты.
  6. Нажмите ОК.

Способ 2. Из окна запуска 1С

  1. В списке баз нажмите Добавить → Создание новой информационной базы.
  2. Выберите пустую базу или шаблон, затем вариант расположения На сервере 1С:Предприятия.
  3. Заполните те же поля: кластер серверов , имя базы в кластере, тип СУБД PostgreSQL, сервер баз данных, имя базы данных, пользователь и пароль.
  4. Отметьте создание базы данных при её отсутствии и завершите мастер.

Нестандартный порт PostgreSQL

Если СУБД слушает не 5432, порт указывают в поле сервера баз данных через пробел:

pgserver port=5433

Перенос существующей базы

Когда пустая база создана, откройте её в Конфигураторе и выполните Администрирование → Загрузить информационную базу, указав .dt. Загрузка требует монопольного доступа и заменяет всё содержимое базы. На базах в десятки гигабайт она идёт от десятков минут до нескольких часов.

Настройки postgresql.conf и производительность 1С на PostgreSQL

Параметры по умолчанию рассчитаны на слабую машину. Для 1С их стоит поднять. Ориентиры для выделенного сервера СУБД:

ПараметрОриентирЗачем
shared_buffers25% ОЗУкеш страниц самой СУБД
effective_cache_size50–75% ОЗУподсказка планировщику о кеше ОС
work_mem32–128 МБсортировки и соединения в запросах
maintenance_work_mem512 МБ–2 ГБVACUUM, создание индексов, загрузка .dt
max_connectionsс запасом под рабочие процессы 1Скаждое соединение сервера 1С — отдельный процесс
max_locks_per_transaction256 и выше1С держит много временных таблиц в транзакции
random_page_cost1.1–1.5 для SSDпланировщик чаще выбирает индексы

Пример для сервера с 16 ГБ ОЗУ, где кроме PostgreSQL ничего нет:

shared_buffers = 4GB
effective_cache_size = 11GB
work_mem = 64MB
maintenance_work_mem = 1GB
max_locks_per_transaction = 256
random_page_cost = 1.1

work_mem выделяется на каждую операцию сортировки, а не на соединение. При 100 соединениях и сложных отчётах 128 МБ легко превращаются в нехватку памяти, поэтому начинайте с 32–64 МБ.

Для сборок под 1С проверьте, что включены параметры расширения online_analyze (обычно уже прописаны поставщиком сборки). Оно обновляет статистику по временным таблицам, без этого отчёты 1С на PostgreSQL заметно тормозят.

Если сервер 1С и PostgreSQL стоят на одной машине, делите память: ориентир — половина ОЗУ на СУБД, остальное процессам rphost. Тогда shared_buffers берите от этой половины, а не от всего объёма.

Если базы большие, держите каталог данных и WAL на SSD. Медленный диск на PostgreSQL проявляется сразу: долгие проведения и зависания при закрытии месяца.

Ошибки при подключении 1С к PostgreSQL

Большинство отказов видно по тексту, который сервер 1С возвращает при создании или открытии базы. Найдите в нём фразу на английском — это ответ PostgreSQL.

Диагностика: выберите симптом

Если база создалась, но не открывается

  • 🔍 Ошибка про локаль или сортировку — кластер PostgreSQL инициализирован без ru_RU.UTF-8. Проще пересоздать кластер СУБД с нужной локалью на новом сервере и перенести базы через .dt, чем чинить на месте.
  • 🔍 Клиент не видит сервер 1С — это уже не PostgreSQL: проверьте порты 1540, 1541 и диапазон рабочих процессов на брандмауэре.
  • 🔍 Медленно работает всё — посмотрите, включён ли autovacuum и не стоят ли параметры памяти по умолчанию (shared_buffers = 128MB).

Обслуживание и резервное копирование базы 1С на PostgreSQL

Регулярное обслуживание

PostgreSQL не удаляет старые версии строк сразу: это делает VACUUM. Держите autovacuum = on — его хватает для повседневной работы. После крупных операций (загрузка .dt, закрытие года, свёртка базы) запустите обслуживание вручную:

vacuumdb -U postgres -d buh_main --analyze --verbose

VACUUM FULL переписывает таблицы целиком и блокирует их на всё время работы. Для базы 1С это значит остановку работы пользователей, поэтому запускайте его только в окно обслуживания.

Резервные копии средствами PostgreSQL

Логическая копия одной базы в сжатом формате:

pg_dump -U postgres -Fc -f /backup/buh_main_$(date +%F).dump buh_main

Восстановление в новую пустую базу:

createdb -U postgres -T template0 buh_restore
pg_restore -U postgres -d buh_restore -j 4 /backup/buh_main_2026-10-07.dump

После восстановления зарегистрируйте buh_restore в кластере 1С как новую информационную базу, без флажка создания базы данных.

Для больших баз и восстановления на момент времени используют физическое копирование: pg_basebackup и архивирование WAL. Это сложнее в настройке, но позволяет откатиться на конкретную минуту.

Сравнение способов

СпособКогда подходитОграничения
pg_dump / pg_restoreежедневные копии баз до сотен ГБкопия на момент запуска, восстановление долгое
pg_basebackup + WALкрупные базы, точка во временинужно место под архив WAL и отработанная процедура
Выгрузка .dt из Конфигуратораперенос между СУБД, передача базынужен монопольный доступ, медленно на больших базах

Копия, которую ни разу не восстанавливали, — не копия. Раз в месяц разворачивайте дамп в тестовую базу и открывайте её в 1С.

Частые вопросы

Можно ли подключить файловую базу 1С к PostgreSQL без сервера 1С?
Нет. Работа с PostgreSQL идёт только через сервер 1С:Предприятия. Файловую базу переносят выгрузкой в .dt и загрузкой в серверную базу.
Нужно ли ставить PostgreSQL на тот же сервер, что и 1С?
Не обязательно. Для небольших баз удобна одна машина: меньше сетевых задержек. Для крупных баз СУБД выносят на отдельный сервер с быстрыми дисками.
Как узнать, на какой СУБД работает база?
Откройте свойства базы в консоли кластера серверов: поле «Тип СУБД» покажет PostgreSQL или другую СУБД. В строке подключения клиента это не видно.
Можно ли поднять версию PostgreSQL под существующей базой 1С?
Да, но только до версии, которую поддерживает ваша платформа. Надёжный путь — новый кластер СУБД, перенос через pg_dump/pg_restore или .dt и проверка на копии.
Хватит ли бесплатной сборки PostgreSQL для 1С?
Для большинства организаций — да. Коммерческие сборки берут ради техподдержки и функций для очень больших баз.