Интеграция 1С:Предприятие с PostgreSQL — популярное решение для компаний, стремящихся снизить затраты на лицензирование Microsoft SQL Server или повысить производительность баз данных. Однако процесс подключения требует точной настройки как со стороны сервера СУБД, так и конфигурации платформы 1С 8.3. В этой статье мы разберём все этапы: от установки необходимых компонентов до оптимизации соединения и решения типичных ошибок.

Важно понимать, что PostgreSQL не является "родной" СУБД для — в отличие от MS SQL, её поддержка реализована через дополнительные драйверы. Это накладывает ограничения на некоторые функции (например, полнотекстовый поиск или репликацию), но открывает возможности для работы с открытым ПО. Статья актуальна для версий 1С:Предприятие 8.3.20+ и PostgreSQL 12-16.

Почему PostgreSQL для 1С: плюсы и минусы

Переход на PostgreSQL часто мотивирован экономией — отсутствием лицензионных платежей за MS SQL Server. Но есть и технические преимущества:

  • 🔹 Производительность на операциях чтения/записи при правильной настройке индексов.
  • 🔹 Масштабируемость — поддержка кластеров и репликации "из коробки".
  • 🔹 Открытый исходный код — возможность модификации под специфические задачи.
  • 🔹 Кросс-платформенность — работает на Linux, Windows, macOS.

Однако есть и недостатки, о которых стоит знать заранее:

  • ⚠️ Ограниченная поддержка со стороны — некоторые отраслевые конфигурации (например, 1С:ERP) могут требовать доработок.
  • ⚠️ Сложность администрирования — для настройки кластера потребуются знания Linux или опыт работы с pg_hba.conf.
  • ⚠️ Отсутствие "родных" инструментов — нет аналога SQL Server Management Studio с полной интеграцией в .
📊 Какую СУБД вы используете с 1С?
Microsoft SQL Server
PostgreSQL
Oracle
Другую
Пока не подключал внешнюю СУБД

Для небольших компаний с базой до 50 ГБ PostgreSQL может стать оптимальным решением, но для крупных предприятий с высоконагруженными системами потребуется тщательное тестирование производительности.

Требования к системе и предварительная подготовка

Перед подключением убедитесь, что ваша инфраструктура соответствует минимальным требованиям:

Компонент Минимальные требования Рекомендуемая конфигурация
1С:Предприятие Версия 8.3.10+ 8.3.20+ (с последними обновлениями платформы)
PostgreSQL Версия 9.6+ 12-16 (с патчами безопасности)
Операционная система Windows 7+/Linux (Ubuntu 18.04+) Windows Server 2019+/Ubuntu 22.04 LTS
ОЗУ 4 ГБ 16+ ГБ (для баз >100 ГБ)

Особое внимание уделите сетевым настройкам:

  • 🌐 Откройте порты 5432 (по умолчанию для PostgreSQL) в фаерволле.
  • 🔒 Настройте аутентификацию по паролю или сертификатам (не используйте trust в продуктивной среде!).
  • 📡 Проверьте стабильность соединения — чувствительна к обрывам связи с СУБД.
💡

Если вы планируете использовать PostgreSQL на Linux, установите пакет postgresql-contrib — он содержит дополнительные утилиты для мониторинга и оптимизации, полезные при работе с 1С.

Для тестирования можно развернуть PostgreSQL на локальной машине, но для продуктивной работы рекомендуется выделенный сервер. Виртуализация (например, VMware или Hyper-V) допустима, но требует резервирования ресурсов.

Установка и настройка PostgreSQL для 1С

Процесс установки зависит от операционной системы. Рассмотрим вариант для Windows Server 2019 — наиболее распространённый в корпоративной среде.

Шаг 1: Установка PostgreSQL

Скачайте дистрибутив с официального сайта (выбирайте версию 12-16). Во время установки:

  • 📁 Укажите каталог для данных (по умолчанию C:\Program Files\PostgreSQL\14\data).
  • 🔐 Задайте пароль для пользователя postgres (запомните его — потребуется для подключения из 1С!).
  • 🌍 Выберите локаль Russian_Russia (или C, если планируете мультиязычные базы).
  • 🔧 Оставьте порт 5432 (или измените, если он занят).

Шаг 2: Настройка конфигурационных файлов

После установки отредактируйте два ключевых файла в каталоге данных (например, C:\Program Files\PostgreSQL\14\data):

  1. postgresql.conf — раскомментируйте и измените параметры:
    listen_addresses = '*'  # Разрешить подключения со всех IP
    

    max_connections = 200 # Увеличить лимит соединений (по умолчанию 100)

    shared_buffers = 4GB # Выделить 25% от ОЗУ сервера

    work_mem = 16MB # Память для сортировки

  2. pg_hba.conf — добавьте строку для подключения 1С:
    host    all             all             192.168.1.0/24         md5

    (замените 192.168.1.0/24 на вашу подсеть).

Установлен сервер PostgreSQL 12+|Создан пользователь с правами суперпользователя|Открыт порт 5432 в фаерволле|Отредактированы postgresql.conf и pg_hba.conf|Сервис PostgreSQL запущен и работает-->

После изменений перезапустите службу PostgreSQL через Services.msc или командой:

net stop postgresql-x64-14

net start postgresql-x64-14

Шаг 3: Создание базы данных и пользователя для 1С

Подключитесь к PostgreSQL через psql (или pgAdmin) и выполните команды:

CREATE USER usr_1c WITH PASSWORD 'ВашСложныйПароль123';

CREATE DATABASE db_1c OWNER usr_1c ENCODING 'UTF8' LC_COLLATE 'ru_RU.UTF-8' LC_CTYPE 'ru_RU.UTF-8';

GRANT ALL PRIVILEGES ON DATABASE db_1c TO usr_1c;

Критично! Укажите кодировку UTF8 и локаль ru_RU.UTF-8 — иначе возможны проблемы с кириллицей в отчётах и документах.

Установка драйверов для подключения 1С к PostgreSQL

Платформа 1С:Предприятие не содержит встроенных драйверов для PostgreSQL, поэтому потребуется установить дополнительные компоненты. Существует два основных варианта:

Вариант 1: Официальный драйвер от 1С (рекомендуется)

Скачайте драйвер взаимодействия с PostgreSQL с сайта (раздел "Технологическая поддержка"). На момент написания статьи актуальная версия — 8.3.22.1854. Установка проста:

  1. Запустите установщик 1C_Enterprise_8.3_PostgreSQL_Driver.exe.
  2. Укажите путь к каталогу (обычно C:\Program Files\1cv8\8.3.20.1549\bin).
  3. Перезапустите службу 1С:Предприятие.

Вариант 2: Драйвер от сообщества (для опытных пользователей)

Альтернативные драйверы (например, PostgreSQL ODBC или npgsql) могут потребоваться для нестандартных задач, но их использование не поддерживается . Для установки:

  • 🔌 Скачайте ODBC-драйвер с сайта PostgreSQL.
  • 📋 Настройте ODBC Data Source Administrator (64-bit!) для создания DSN.
  • 🔧 В укажите тип СУБД — PostgreSQL (ODBC).
Чем опасно использование неофициальных драйверов?

Неофициальные драйверы могут приводить к нестабильной работе 1С, особенно при:

- одновременной работе более 50 пользователей;

- использовании транзакций с длительными блокировками;

- генерации сложных отчётов с большим количеством JOIN-ов.

В некоторых случаях возможна потеря данных при аварийном завершении сеанса.

После установки драйвера проверьте его работу через Тестовое подключение в конфигураторе .

Настройка подключения в 1С: пошаговая инструкция

Теперь перейдём к непосредственной настройке соединения. Инструкция актуальна для 1С:Предприятие 8.3 в режиме Конфигуратор.

Шаг 1: Создание информационной базы

Запустите 1С:Предприятие в режиме конфигуратора и выполните:

  1. Выберите Файл → Новая информационная база.
  2. Укажите тип расположения — На сервере 1С:Предприятия (или На этом компьютере или компьютере в локальной сети для тестирования).
  3. В поле Сервер баз данных выберите PostgreSQL.
  4. Заполните параметры подключения:
    Имя сервера: 192.168.1.100 (или localhost для локального подключения)
    

    Порт: 5432

    Имя базы данных: db_1c

    Имя пользователя: usr_1c

    Пароль:

Шаг 2: Проверка соединения

После создания базы:

  • 🔍 Нажмите Тестировать соединение — должно появиться окно с сообщением Соединение установлено.
  • 📋 Если возникает ошибка, проверьте:
    • 🔥 Работает ли служба PostgreSQL?
    • 🔒 Правильно ли указаны IP/порт/пароль?
    • 📡 Доступен ли порт 5432 из сети?
💡

При первом подключении 1С автоматически создаст служебные таблицы в PostgreSQL. Не удаляйте их вручную — это приведёт к неработоспособности базы!

Шаг 3: Настройка прав доступа

По умолчанию пользователь имеет ограниченные права. Для корректной работы:

  1. Подключитесь к PostgreSQL как суперпользователь (postgres).
  2. Выполните команды:
    ALTER USER usr_1c CREATEDB;
    

    GRANT ALL ON SCHEMA public TO usr_1c;

Это позволит создавать временные таблицы и выполнять служебные операции.

Оптимизация производительности

По умолчанию PostgreSQL настроен на универсальную нагрузку, но для требуются специфические оптимизации. Рассмотрим ключевые параметры.

1. Настройка памяти

Откройте postgresql.conf и скорректируйте:

shared_buffers = 8GB          # 25-30% от ОЗУ сервера

effective_cache_size = 16GB # Оценка кэша ОС

maintenance_work_mem = 1GB # Память для VACUUM и CREATE INDEX

work_mem = 32MB # Память для сортировки (увеличьте при сложных отчётах)

2. Автонастройка VACUUM

активно использует временные таблицы, что приводит к фрагментации. Настройте автоочистку:

autovacuum = on

autovacuum_vacuum_scale_factor = 0.05 # Чаще запускать очистку

autovacuum_analyze_scale_factor = 0.02

3. Индексы и статистика

Для ускорения запросов:

  • 📊 Регулярно обновляйте статистику: ANALYZE db_1c;
  • 🔍 Создайте индексы для часто используемых полей (например, по датам документов).
  • 🚫 Избегайте индексов по полям с низкой селективностью (например, ПометкаУдаления).
💡

Для мониторинга производительности используйте утилиту pgBadger. Она анализирует лог PostgreSQL и показывает "тяжёлые" запросы от 1С, которые можно оптимизировать.

После изменений перезапустите PostgreSQL и проверьте производительность в с помощью Тест производительности (доступно в конфигураторе).

Типичные ошибки и их решение

Даже при правильной настройке могут возникать ошибки. Рассмотрим самые распространённые и способы их устранения.

Ошибка Причина Решение
Ошибка соединения с сервером баз данных Неверные параметры подключения или фаервол блокирует порт. Проверьте IP, порт, пароль. Откройте порт 5432 в фаерволле.
Недостаточно прав для операции Пользователь 1С не имеет прав на создание объектов. Выполните GRANT ALL ON SCHEMA public TO usr_1c;.
Кодировка базы данных не поддерживается База создана с кодировкой WIN1251 или KOI8-R. Пересоздайте базу с кодировкой UTF8.
Таймаут ожидания блокировки Долгие транзакции или недостаточный lock_timeout. Увеличьте lock_timeout = '30s' в postgresql.conf.

Если ошибка не указана в таблице, проверьте логи PostgreSQL (C:\Program Files\PostgreSQL\14\data\log\) и журнал регистрации 1С (1Cv8.log).

Как включить детальное логирование в PostgreSQL?

В файле postgresql.conf раскомментируйте и измените строки:

log_statement = 'all'       # Логировать все SQL-запросы

log_min_duration_statement = 1000 # Логировать запросы длительнее 1с

log_line_prefix = '%t [%p]: '% # Формат лога с временем и PID

После этого перезапустите службу. Логи помогут выявить медленные запросы от 1С.

Резервное копирование и восстановление

Резервное копирование базы на PostgreSQL имеет особенности. Нельзя просто скопировать файлы — требуются специализированные инструменты.

Способ 1: Утилита pg_dump

Самый надёжный метод — использование pg_dump:

pg_dump -U usr_1c -h 192.168.1.100 -p 5432 -F c -b -v -f "C:\Backup\db_1c.dump" db_1c

Ключи:

  • -F c — формат кастомный (сжимается и поддерживает восстановление на других версиях).
  • -b — включить BLOB-объекты (важно для 1С!).
  • -v — подробный вывод.

Способ 2: Резервирование через 1С

В конфигураторе доступна функция Администрирование → Выгрузить информационную базу. Однако она:

  • 🔹 Медленнее, чем pg_dump.
  • 🔹 Не сохраняет настройки PostgreSQL (роли, права).
  • 🔹 Может не корректно работать с большими базами (>50 ГБ).
💡

Для автоматического резервного копирования настройте задачу в Планировщике Windows или cron (Linux) с вызовом pg_dump. Храните не менее 3-х последних бэкапов!

Восстановление из бэкапа:

pg_restore -U usr_1c -h 192.168.1.100 -p 5432 -d db_1c -v "C:\Backup\db_1c.dump"

FAQ: Частые вопросы по подключению 1С к PostgreSQL

Можно ли использовать PostgreSQL с 1С:Зарплата и Управление Персоналом?

Да, но с оговорками. Конфигурация 1С:ЗУП официально поддерживает PostgreSQL начиная с версии 3.1.12. Однако некоторые отчёты (например, с использованием полнотекстового поиска) могут работать медленнее, чем на MS SQL. Перед переходом протестируйте критичные операции на тестовой базе.

Как перенести базу из MS SQL в PostgreSQL?

Официального инструмента миграции нет, но можно использовать:

  1. Выгрузку/загрузку через DT-файл в конфигураторе.
  2. Специализированные утилиты, например, SQLines или pgloader.
  3. Ручной перенос данных с помощью UNLOAD/LOAD DATA (для опытных администраторов).

Важно: после переноса проверьте целостность данных и пересчитайте итоги!

Почему 1С тормозит после подключения к PostgreSQL?

Частые причины:

  • 🔹 Недостаточные ресурсы сервера (ОЗУ, CPU).
  • 🔹 Отсутствие индексов на часто используемых полях.
  • 🔹 Неоптимальные настройки postgresql.conf (например, маленький shared_buffers).
  • 🔹 Сетевые задержки (если сервер PostgreSQL находится в другом дата-центре).

Используйте EXPLAIN ANALYZE для анализа медленных запросов.

Как обновить PostgreSQL без потери данных?

Порядок действий:

  1. Создайте бэкап базы через pg_dump.
  2. Установите новую версию PostgreSQL в отдельный каталог.
  3. Инициализируйте новый кластер: initdb -D "C:\Program Files\PostgreSQL\15\data".
  4. Восстановите данные: pg_upgrade --old-bindir="..." --new-bindir="..." --old-datadir="..." --new-datadir="...".
  5. Обновите конфигурационные файлы (postgresql.conf, pg_hba.conf).

Подробную инструкцию смотрите в документации PostgreSQL.

Можно ли использовать PostgreSQL в облаке (AWS, Yandex Cloud)?

Да, но с нюансами:

  • 🔹 В AWS RDS или Yandex Managed PostgreSQL нет доступа к pg_hba.conf — настройка подключения ведётся через веб-интерфейс.
  • 🔹 Облачные провайдеры могут ограничивать ресурсы (например, количество соединений).
  • 🔹 Рекомендуется использовать выделенные инстансы (не shared) для стабильной работы.

Пример строки подключения для облака:

Имя сервера: rc1a-xxxx.mdb.yandexcloud.net

Порт: 6432 (вместо 5432)

SSL: включить (обязательно!)

💡

Если вы планируете использовать PostgreSQL в облаке, выберите тариф с SSD-накопителями — это значительно ускорит операции ввода-вывода, критичные для 1С.