К статье
Практический материал

Администрирование · 10 мин

Как добавить базу 1С на сервере PostgreSQL

Как добавить базу 1С на PostgreSQL: подготовка сервера, создание базы через консоль кластера и pgAdmin, права, типичные ошибки и проверка результата.

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

Ошибки на этапе создания базы — частая причина того, что 1С отказывается подключаться: не совпадает кодировка, не хватает прав у пользователя СУБД, выбран неверный шаблон. Ниже разобран полный цикл: подготовка PostgreSQL, два способа создания базы (через консоль кластера 1С и напрямую средствами СУБД), проверка результата и типовые проблемы.

Что подготовить перед созданием базы

Для клиент-серверного режима нужны три компонента: установленный и запущенный сервер PostgreSQL (желательно сборка, адаптированная для 1С, либо ванильная версия, совместимая с вашей платформой), сервер 1С:Предприятия и клиент 1С для загрузки конфигурации. Все три могут стоять на одной машине для тестов, но в продуктиве СУБД обычно выносят на отдельный сервер.

Проверьте, что служба PostgreSQL запущена и принимает подключения с сервера 1С. Для этого в файле pg_hba.conf должна быть строка, разрешающая подключение с адреса сервера 1С по паролю (метод md5 или scram-sha-256), а в postgresql.conf параметр listen_addresses не должен ограничиваться только localhost, если серверы разнесены.

Заранее определите учётную запись СУБД, под которой 1С будет работать с базой. Практика «сидеть под postgres» допустима только в тестовой среде: для продуктива создают отдельного пользователя с правами на конкретную базу, чтобы ограничить последствия компрометации пароля, который хранится в настройках кластера 1С.

Требования к параметрам базы PostgreSQL для 1С

Платформа 1С предъявляет к базе данных жёсткие требования, и несоответствие любого из них приводит к ошибке ещё на этапе создания информационной базы. Ключевые параметры: кодировка UTF8, локаль (lc_collate и lc_ctype), соответствующая русской сортировке (например, ru_RU.UTF-8 на Linux или Russian_Russia на Windows), и владелец базы — пользователь, указанный в настройках кластера.

Новую базу создают на основе шаблона template0, а не template1: template0 гарантированно чистый и позволяет переопределить кодировку и локаль при создании. Если создать базу с локалью C или с кодировкой, отличной от UTF8, 1С либо откажется работать, либо начнёт некорректно сортировать строковые данные.

Способ 1: создание базы через консоль кластера серверов 1С

Самый простой путь — позволить платформе создать базу самой. Откройте консоль управления кластером серверов 1С, разверните нужный кластер, кликните правой кнопкой по «Информационные базы» и выберите «Создать» → «Информационная база».

В форме заполните поля: имя базы (так она будет видна пользователям), тип СУБД — PostgreSQL, сервер баз данных (адрес сервера PostgreSQL), имя базы данных в СУБД (латиницей, без пробелов), пользователь и пароль СУБД. Установите флаг «Создать базу данных в случае её отсутствия» — тогда платформа сама выполнит CREATE DATABASE с корректными параметрами.

Порядок действий в консоли кластера
  1. 1
    Откройте консоль кластера и выберите пункт «Информационные базы» → «Создать»
  2. 2
    Укажите имя базы, тип СУБД PostgreSQL, адрес сервера и имя базы данных латиницей
  3. 3
    Введите пользователя и пароль СУБД с правом создавать базы
  4. 4
    Отметьте флаг «Создать базу данных в случае её отсутствия» и нажмите ОК
  5. 5
    Проверьте, что база появилась в списке кластера и в самом PostgreSQL

Учётная запись СУБД, указанная в форме, должна обладать правом CREATEDB, иначе автоматическое создание завершится ошибкой. После успешного создания база появится одновременно в списке кластера и в PostgreSQL — можно проверить через pgAdmin или запросом к системному каталогу.

Способ 2: создание базы вручную через psql или pgAdmin

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

sql
CREATE USER user1c WITH PASSWORD 'StrongPassword';
CREATE DATABASE base1c
  WITH OWNER user1c
  ENCODING 'UTF8'
  LC_COLLATE 'ru_RU.UTF-8'
  LC_CTYPE 'ru_RU.UTF-8'
  TEMPLATE template0;

На Windows локаль указывается иначе — например, 'Russian_Russia.1251' недопустима для UTF8-связки в ряде версий; используйте значение, которое показывает SELECT * FROM pg_collation; и которое принимает ваша версия PostgreSQL. После создания убедитесь, что пользователь является владельцем базы: этого достаточно для работы платформы, дополнительные GRANT по объектам не требуются.

Затем в консоли кластера создайте информационную базу, укажите те же имя базы данных, пользователя и пароль, но не ставьте флаг создания — платформа подключится к уже существующей пустой базе.

Два способа создания базы

Через консоль кластера 1С

Быстро и без ошибок в параметрах; требует права CREATEDB у учётной записи 1С

Вручную через psql/pgAdmin

Полный контроль над локалью, владельцем и табличными пространствами; выше риск опечатки в параметрах

Загрузка конфигурации и первый запуск

Зарегистрированная в кластере база пуста: в ней нет ни таблиц конфигурации, ни данных. Следующий шаг — запустить конфигуратор, выбрать эту базу и загрузить конфигурацию из файла .cf (Конфигурация → Загрузить конфигурацию из файла) или развернуть демонстрационную выгрузку .dt (Загрузить информационную базу).

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

Финальная проверка — запуск базы в режиме предприятия под пользователем, созданным при загрузке dt, либо добавление пользователя в конфигураторе. Если база открывается и справочники доступны, добавление завершено.

Контрольные точки

Как проверить результат

База в списке кластера 1С
Норма

База видна, свойства открываются без ошибок

Тревожный признак

Ошибка соединения с СУБД при открытии свойств

База в PostgreSQL
Норма

SELECT datname FROM pg_database показывает базу, владелец — рабочий пользователь

Тревожный признак

Базы нет или владелец postgres при рабочем пользователе без прав

Запуск в режиме предприятия
Норма

База открывается, списки документов и справочников доступны

Тревожный признак

Ошибка аутентификации СУБД или отсутствие таблиц

Типичные ошибки и их устранение

Ошибка «Ошибка СУБД: database ... does not exist» означает, что база не создана в PostgreSQL, а флаг автоматического создания не установлен или у учётной записи нет права CREATEDB. Ошибка аутентификации (password authentication failed) указывает на неверный пароль или отсутствие разрешающей строки в pg_hba.conf для адреса сервера 1С.

Сообщение о несоответствии локали или кодировки возникает, если база создана вручную с параметрами по умолчанию. Лечится только пересозданием базы с корректными ENCODING и LC_COLLATE — изменить эти параметры у существующей базы нельзя.

Типичные ошибки
01
Создание базы из template1 с локалью C — 1С отказывается работать или неверно сортирует строки; базу приходится пересоздавать
02
Использование кириллицы и пробелов в имени базы данных — ошибки подключения и проблемы с резервным копированием скриптами
03
Работа продуктивной базы под суперпользователем postgres — любой утечке пароля открыт доступ ко всем базам сервера
04
Отсутствие строки для сервера 1С в pg_hba.conf — платформа не может подключиться, хотя локальный psql работает

Резервное копирование сразу после добавления

Сразу после развёртывания настройте резервное копирование средствами СУБД: pg_dump по расписанию или физические копии с WAL-архивацией. Выгрузка .dt из конфигуратора — дополнительный, но не основной инструмент: она требует монопольного доступа и не масштабируется на большие базы.

Проверяйте восстановление копии на тестовом сервере хотя бы при первичной настройке: копия, которая ни разу не была восстановлена, не считается рабочей.

Итог

Что важно запомнить

База 1С на PostgreSQL создаётся в два этапа: пустая база в СУБД и регистрация в кластере 1С. Критичны кодировка UTF8, русская локаль, шаблон template0 и отдельный пользователь-владелец. После загрузки конфигурации проверьте запуск и сразу настройте резервное копирование.

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

Можно ли использовать обычный PostgreSQL, а не сборку от 1С?

Да, платформа работает с ванильным PostgreSQL поддерживаемых версий. Сборки от 1С отличаются патчами производительности и специфическими настройками; для небольших баз разница часто незаметна, но перед выбором сверьтесь с системными требованиями вашей версии платформы.

Нужно ли вручную создавать таблицы в новой базе?

Нет. Все таблицы, индексы и прочие объекты платформа создаёт сама при обновлении конфигурации базы данных после загрузки .cf или .dt. Ручное создание объектов в рабочей базе 1С не поддерживается и может нарушить её работу.

Какое имя можно давать базе данных в PostgreSQL?

Используйте строчные латинские буквы, цифры и подчёркивания, без пробелов и кириллицы. Это исключает проблемы с экранированием в скриптах резервного копирования и подключениях из разных инструментов.

Почему консоль кластера не создаёт базу, хотя пароль верный?

Наиболее вероятная причина — у учётной записи СУБД нет атрибута CREATEDB. Выдайте его командой ALTER USER user1c CREATEDB или создайте базу вручную администратором СУБД и зарегистрируйте её в кластере без флага создания.

Можно ли перенести файловую базу 1С на PostgreSQL?

Да, стандартный путь — выгрузить файловую базу в .dt через конфигуратор, создать пустую базу на PostgreSQL, зарегистрировать её в кластере и загрузить .dt в неё. Прямого преобразования файла 1Cv8.1CD в формат СУБД не существует.

Сколько баз 1С можно держать на одном сервере PostgreSQL?

Жёсткого ограничения нет; на практике предел определяется ресурсами сервера и нагрузкой. Каждая база — отдельная база данных в PostgreSQL. Продуктивные и тестовые базы рекомендуется разносить по разным серверам, чтобы тесты не конкурировали за ресурсы с работой пользователей.