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

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

PostgreSQL для 1С: что это и как работает связка

PostgreSQL для 1С — что это за СУБД, чем отличается от файлового режима и MS SQL, как установить, настроить и обслуживать базу 1С на PostgreSQL.

PostgreSQL — это свободно распространяемая объектно-реляционная система управления базами данных (СУБД), которую платформа 1С:Предприятие поддерживает в качестве одного из вариантов хранения информационных баз в клиент-серверном режиме. Когда говорят «PostgreSQL для 1С», обычно имеют в виду связку: сервер 1С:Предприятия обращается к СУБД PostgreSQL, где физически лежат все данные — документы, справочники, регистры, настройки.

В отличие от файлового режима, где база хранится в одном файле 1Cv8.1CD на диске, клиент-серверный вариант с PostgreSQL рассчитан на одновременную работу десятков и сотен пользователей, большие объёмы данных и централизованное резервное копирование. При этом сама конфигурация 1С (Бухгалтерия, Управление торговлей, ЗУП и другие) не меняется — меняется только способ хранения данных.

Важный нюанс: 1С официально поддерживает не «ванильную» сборку PostgreSQL с сайта postgresql.org, а специальные сборки — от фирмы «1С» (1С:PostgreSQL) и от Postgres Professional (Postgres Pro, в том числе сертифицированная версия). Эти сборки содержат патчи, необходимые для корректной работы платформы 1С, в частности для поддержки нужного поведения при блокировках и совместимости типов данных.

Что такое PostgreSQL в контексте 1С и как устроена связка

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

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

Когда стоит переводить 1С на PostgreSQL

Переход с файлового режима на клиент-серверный оправдан при росте нагрузки. Типичные признаки: с базой одновременно работают больше 5–10 пользователей, размер файла 1Cv8.1CD превышает несколько гигабайт, регулярно возникают конфликты блокировок или ошибки «Файл базы данных повреждён», отчёты формируются минутами.

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

Сравнение вариантов СУБД для 1С

PostgreSQL (1С:PostgreSQL / Postgres Pro)

Бесплатная СУБД, работает на Linux и Windows. Подходит для большинства средних баз. Требует грамотной настройки и обслуживания, меньше готовых инструментов мониторинга.

MS SQL Server

Платная СУБД от Microsoft. Удобные средства администрирования, привычна многим администраторам Windows. Высокая стоимость лицензий при большом числе пользователей.

Файловый режим

Без отдельной СУБД, база в одном файле. Подходит для 1–5 пользователей и небольших объёмов. Не масштабируется, уязвим при сбоях сети и питания.

IBM Db2 / Oracle Database

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

Какие сборки PostgreSQL подходят для 1С

Стандартный PostgreSQL с официального сайта не совместим с 1С «из коробки»: платформа при создании базы выдаст ошибку о несовместимости. Причина — 1С требует специфического поведения при работе с курсорами, блокировками и некоторыми типами данных, что реализовано только в адаптированных сборках.

Доступны два основных варианта. Первый — сборка от фирмы «1С», распространяемая через портал 1С:Обновление программ для зарегистрированных пользователей. Второй — Postgres Pro Standard и Postgres Pro Enterprise от компании Postgres Professional; сертифицированная версия Postgres Pro Certified востребована в организациях с требованиями к защите информации. Обе линейки выпускаются под Linux и Windows.

Как установить и подключить базу 1С к PostgreSQL

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

После установки обязательно проверьте параметры подключения: сервер 1С обращается к PostgreSQL по TCP/IP (по умолчанию порт 5432), поэтому в pg_hba.conf должна быть разрешена аутентификация с адреса сервера 1С. Если обе службы на одной машине, достаточно локального доступа, но при разнесении серверов нужно явно открыть подключение и защитить канал, как минимум ограничив его межсетевым экраном.

Какие настройки PostgreSQL критичны для производительности 1С

Конфигурация PostgreSQL по умолчанию рассчитана на слабое оборудование и для 1С не подходит. Основные параметры, которые принято увеличивать в postgresql.conf: shared_buffers (обычно 25–30% оперативной памяти сервера), work_mem (влияет на сортировки и соединения в запросах), maintenance_work_mem (ускоряет обслуживание индексов), effective_cache_size (подсказка планировщику о доступном кэше), а также настройки WAL — wal_buffers и checkpoint-интервалы.

Точные значения зависят от объёма ОЗУ, числа одновременных пользователей и профиля нагрузки, поэтому универсальной «правильной» конфигурации не существует. Разумный подход — начать с рекомендованных в документации сборки значений, а затем наблюдать за метриками: долей попаданий в кэш, временем выполнения тяжёлых запросов, интенсивностью записи WAL.

sql
-- Проверка доли попаданий в буферный кэш (нормально — выше ~98-99%)
SELECT round(100.0 * blks_hit / (blks_hit + blks_read), 2) AS cache_hit_ratio
FROM pg_stat_database WHERE datname = current_database();

Отдельное внимание — локали базы данных. Базу 1С следует создавать с корректной локалью сортировки (для русского языка обычно ru_RU.UTF-8), иначе возможны ошибки сравнения строк и нарушение порядка в списках. Локаль задаётся при создании базы и впоследствии не меняется без пересоздания.

Как обслуживать базу: вакуум, бэкапы, мониторинг

Из-за механизма MVCC в PostgreSQL накапливаются устаревшие версии строк. За их очистку отвечает фоновый процесс autovacuum — он включён по умолчанию, но при интенсивной записи в базы 1С его стандартных настроек может не хватать, и таблицы начинают «разбухать». Признак проблемы: база растёт быстрее, чем прибавляется реальных данных, а запросы постепенно замедляются. В таких случаях autovacuum делают агрессивнее (снижают пороги срабатывания) и периодически выполняют полный VACUUM ANALYZE в окне обслуживания.

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

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

Как проверить здоровье базы

Рост размера базы
Норма

Размер растёт пропорционально вводимым данным

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

База растёт заметно быстрее данных — вероятно, autovacuum не справляется

Скорость типовых операций
Норма

Проведение документов и отчёты работают стабильно изо дня в день

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

Постепенная деградация скорости без роста нагрузки

Резервные копии
Норма

Бэкап создаётся по расписанию и периодически проверяется восстановлением

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

Копии есть, но восстановление ни разу не проверялось

Логи PostgreSQL
Норма

Единичные предупреждения, нет повторяющихся ошибок

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

Регулярные ошибки checkpoint, deadlock или переполнения

Типичные ошибки и ограничения связки 1С + PostgreSQL

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

Из ограничений стоит помнить: 1С не использует возможности PostgreSQL напрямую (хранимые процедуры, представления пишутся только через механизмы платформы), прямое изменение данных в таблицах SQL-запросами запрещено — оно нарушает целостность структуры, которую контролирует платформа. Читать данные напрямую для интеграций можно, но с пониманием того, что структура таблиц недокументирована и меняется при обновлениях конфигурации.

Типичные ошибки администраторов
01
Установка ванильного PostgreSQL — база не создаётся или работает с ошибками.
02
Конфигурация по умолчанию — низкая производительность при росте числа пользователей.
03
Нет мониторинга autovacuum — раздувание таблиц и деградация скорости.
04
Изменение данных напрямую в SQL — повреждение структуры базы и потеря поддержки.
05
Бэкап только в .dt — долгое восстановление и отсутствие point-in-time recovery.
06
Размещение СУБД на том же диске, что и система, без отдельного массива — деградация при росте WAL и данных.

Частые вопросы о PostgreSQL и 1С

Можно ли использовать бесплатный PostgreSQL с официального сайта для 1С?

Нет. Платформа 1С:Предприятие требует адаптированные сборки: 1С:PostgreSQL с портала 1С или Postgres Pro. Они тоже бесплатны в базовых редакциях, но содержат патчи совместимости, без которых платформа откажется работать с базой.

Сколько пользователей выдержит 1С на PostgreSQL?

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

Что быстрее для 1С: PostgreSQL или MS SQL Server?

Однозначного ответа нет: результаты зависят от версии платформы, конфигурации и качества настройки каждой СУБД. MS SQL часто прощает неоптимальную настройку благодаря своим механизмам, PostgreSQL при грамотном тюнинге показывает сопоставимые результаты. Выбор обычно определяется бюджетом и компетенциями администраторов.

Можно ли перенести базу с файлового режима на PostgreSQL без потери данных?

Да. Стандартный путь: выгрузить базу в файл .dt через конфигуратор (Администрирование → Выгрузить информационную базу), создать пустую базу на сервере PostgreSQL и загрузить в неё этот файл. Перед операцией сделайте копию исходной базы и убедитесь, что версии платформы совместимы.

Нужно ли отдельно лицензировать PostgreSQL для коммерческого использования?

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

Как понять, что базе нужен переход с файлового режима на клиент-серверный?

Сигналы: больше 5–10 одновременных пользователей, файл базы вырос до нескольких гигабайт, частые конфликты блокировок, медленные отчёты, ошибки при одновременной записи. Если база маленькая и пользователей двое-трое, переход не даст выигрыша, а добавит затрат на администрирование.

Итог

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

PostgreSQL для 1С — это бесплатная СУБД для клиент-серверного режима, требующая специальной сборки (1С:PostgreSQL или Postgres Pro), осмысленной настройки памяти и WAL, контроля autovacuum и регулярных проверяемых бэкапов. Прямое изменение данных в таблицах запрещено, а переход с файлового режима выполняется через выгрузку и загрузку .dt.