Администрирование · 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Откройте консоль кластера и выберите пункт «Информационные базы» → «Создать»
- 2Укажите имя базы, тип СУБД PostgreSQL, адрес сервера и имя базы данных латиницей
- 3Введите пользователя и пароль СУБД с правом создавать базы
- 4Отметьте флаг «Создать базу данных в случае её отсутствия» и нажмите ОК
- 5Проверьте, что база появилась в списке кластера и в самом PostgreSQL
Учётная запись СУБД, указанная в форме, должна обладать правом CREATEDB, иначе автоматическое создание завершится ошибкой. После успешного создания база появится одновременно в списке кластера и в PostgreSQL — можно проверить через pgAdmin или запросом к системному каталогу.
Способ 2: создание базы вручную через psql или pgAdmin
Ручной способ нужен, когда политика безопасности запрещает давать учётной записи 1С право создавать базы, либо когда требуются нестандартные параметры — отдельное табличное пространство, конкретный владелец. Сначала администратор СУБД создаёт пользователя и пустую базу, затем база регистрируется в кластере 1С без флага автоматического создания.
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 по объектам не требуются.
Затем в консоли кластера создайте информационную базу, укажите те же имя базы данных, пользователя и пароль, но не ставьте флаг создания — платформа подключится к уже существующей пустой базе.
Два способа создания базы
Быстро и без ошибок в параметрах; требует права CREATEDB у учётной записи 1С
Полный контроль над локалью, владельцем и табличными пространствами; выше риск опечатки в параметрах
Загрузка конфигурации и первый запуск
Зарегистрированная в кластере база пуста: в ней нет ни таблиц конфигурации, ни данных. Следующий шаг — запустить конфигуратор, выбрать эту базу и загрузить конфигурацию из файла .cf (Конфигурация → Загрузить конфигурацию из файла) или развернуть демонстрационную выгрузку .dt (Загрузить информационную базу).
После загрузки платформа предложит обновить конфигурацию базы данных — именно на этом шаге в PostgreSQL создаются таблицы, индексы и последовательности. Для типовых конфигураций процесс занимает от нескольких минут до часа и более в зависимости от объёма метаданных и мощности сервера. Не прерывайте процесс: обрыв реструктуризации может оставить базу в рассогласованном состоянии.
Финальная проверка — запуск базы в режиме предприятия под пользователем, созданным при загрузке dt, либо добавление пользователя в конфигураторе. Если база открывается и справочники доступны, добавление завершено.
Как проверить результат
База видна, свойства открываются без ошибок
Ошибка соединения с СУБД при открытии свойств
SELECT datname FROM pg_database показывает базу, владелец — рабочий пользователь
Базы нет или владелец postgres при рабочем пользователе без прав
База открывается, списки документов и справочников доступны
Ошибка аутентификации СУБД или отсутствие таблиц
Типичные ошибки и их устранение
Ошибка «Ошибка СУБД: database ... does not exist» означает, что база не создана в PostgreSQL, а флаг автоматического создания не установлен или у учётной записи нет права CREATEDB. Ошибка аутентификации (password authentication failed) указывает на неверный пароль или отсутствие разрешающей строки в pg_hba.conf для адреса сервера 1С.
Сообщение о несоответствии локали или кодировки возникает, если база создана вручную с параметрами по умолчанию. Лечится только пересозданием базы с корректными ENCODING и LC_COLLATE — изменить эти параметры у существующей базы нельзя.
Резервное копирование сразу после добавления
Сразу после развёртывания настройте резервное копирование средствами СУБД: 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. Продуктивные и тестовые базы рекомендуется разносить по разным серверам, чтобы тесты не конкурировали за ресурсы с работой пользователей.