Решение задач 1С:Предприятие 8 на примерах

PostgreSQL для 1С: установка на Windows и Linux, настройка и создание базы

Базы данных и СУБДОпубликовано

PostgreSQL — бесплатная альтернатива MS SQL для клиент-серверной 1С, но работает она только в специальных сборках и с правильной локалью. В статье — какой Postgres подходит для 1С, установка на Linux и Windows, настройка pg_hba.conf и основных параметров postgresql.conf, создание базы в кластере через консоль и rac, обслуживание, резервное копирование и типичные ошибки.

Какой PostgreSQL подходит для 1С

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

СборкаКто выпускаетОсобенности
PostgreSQL с патчем от 1СФирма «1С»Бесплатна, в том числе для коммерческих систем. Публикуется на портале «1С:Обновление программ» для Windows и Linux
Postgres Pro 1С, Standard, EnterprisePostgres ProfessionalКоммерческие редакции с поддержкой вендора, условия лицензирования уточняйте у Postgres Professional
Tantor, Jatoba, Pangolin и другиеРоссийские вендорыСертифицированные варианты, конкретные версии перечислены в требованиях 1С

По состоянию на ноябрь 2026 года в требованиях 1С перечислены сборки PostgreSQL с патчем от 1С основных версий с 14 по 18. Каждая версия платформы поддерживает свой диапазон версий СУБД, поэтому перед установкой сверьте номер релиза платформы и номер сборки PostgreSQL. Если базу переводите с MS SQL или файлового варианта, порядок переноса через выгрузку .dt описан в статье про файловую и клиент-серверную базу.

Подготовка сервера

  • Отдельный сервер или общий. Для небольших баз PostgreSQL и сервер 1С можно поставить на одну машину. При росте нагрузки СУБД выносят на отдельный сервер с быстрыми дисками.
  • Диски. Под каталог данных используйте SSD. Временные таблицы, которые 1С создаёт очень активно, полезно вынести на отдельный быстрый диск через temp_tablespaces.
  • Локаль. Кластер баз данных должен быть инициализирован с русской локалью ru_RU.UTF-8 и кодировкой UTF8. От локали зависит сортировка строк в запросах 1С, и поменять её у готового кластера нельзя.
  • Энергосбережение. Отключите режимы энергосбережения процессора в BIOS и в ОС — Postgres Professional рекомендует это в документации по настройке для 1С.

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

Порядок для Debian и Ubuntu. Сначала включите русскую локаль:

sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=ru_RU.UTF-8
locale -a | grep ru_RU

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

sudo mkdir -p /var/lib/pgsql/data
sudo chown postgres:postgres /var/lib/pgsql/data
sudo -u postgres /путь/к/bin/initdb --locale=ru_RU.UTF-8 --encoding=UTF8 -D /var/lib/pgsql/data

Для Postgres Pro инициализация выполняется утилитой pg-setup из каталога /opt/pgpro/<редакция>/bin после экспорта переменной LANG="ru_RU.UTF-8". Затем включите автозапуск службы и задайте пароль суперпользователю:

sudo systemctl enable --now postgresql   # имя юнита зависит от сборки
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'СложныйПароль';"
sudo -u postgres psql -c "SHOW lc_collate;"

Последняя команда должна вернуть ru_RU.UTF-8. Если вы видите C или en_US.UTF-8, кластер инициализирован неправильно — пересоздайте его до загрузки данных.

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

Сборка для Windows поставляется с установщиком. При установке:

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

PostgreSQL на Windows работает с 1С полноценно, но для нагруженных баз чаще выбирают Linux: под эту ОС больше опыта эксплуатации и инструментов.

Сетевой доступ: postgresql.conf и pg_hba.conf

Если сервер 1С и СУБД на разных машинах, разрешите PostgreSQL принимать сетевые подключения и пропишите правило доступа для сервера 1С:

# postgresql.conf
listen_addresses = '*'        # или конкретный адрес интерфейса
port = 5432

# pg_hba.conf: доступ с сервера 1С по паролю
# TYPE  DATABASE  USER      ADDRESS           METHOD
host    all       usr1c     192.168.10.21/32  scram-sha-256

Метод аутентификации должен поддерживаться вашей версией платформы. Если подключение не проходит именно на этапе проверки пароля, проверьте, каким методом сохранён пароль пользователя (password_encryption), и при необходимости задайте пароль заново. Изменения pg_hba.conf применяются без перезапуска: SELECT pg_reload_conf();. Для 1С удобно завести отдельного пользователя с правом создавать базы:

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

Настройка PostgreSQL для 1С: основные параметры

Стандартный postgresql.conf рассчитан на маленький сервер и для 1С не подходит. Ниже параметры, которые меняют в первую очередь. Отправная точка — методика 1С на ИТС и рекомендации Postgres Professional для решений 1С; конкретные значения подбирайте под объём памяти и нагрузку.

ПараметрОриентирЗачем
shared_buffersRAM/4Общий кэш страниц данных
effective_cache_sizeОбъём памяти, который реально остаётся под кэш ОСОценка для планировщика, память не выделяет
work_memНачните с умеренного значения и увеличивайте под контролем памятиПамять на сортировку и хеширование в одной операции запроса
temp_buffersдо 256MBБуферы временных таблиц сеанса — 1С использует их постоянно
maintenance_work_memRAM/16Ускоряет VACUUM и создание индексов
max_connectionsС запасом к числу соединений рабочих процессов 1СКаждый рабочий процесс держит собственные соединения
max_locks_per_transactionУвеличьте при ошибке «out of shared memory»Транзакции 1С затрагивают много временных таблиц
random_page_cost1.1 для NVMe, около 1.3 для SATA SSD, 4 для HDDПодсказывает планировщику, что случайное чтение на SSD дешёвое
autovacuumonОчистка «мёртвых» строк и обновление статистики
fsynconОтключение грозит потерей базы при сбое питания

Пример фрагмента для выделенного сервера с 32 ГБ памяти и SSD (значения — стартовые, а не окончательные):

shared_buffers = 8GB
effective_cache_size = 20GB
work_mem = 64MB
temp_buffers = 256MB
maintenance_work_mem = 2GB
max_connections = 500
max_locks_per_transaction = 256
random_page_cost = 1.1
autovacuum = on

После изменения параметров памяти и max_connections нужен перезапуск службы. Проверить применённые значения можно запросом SELECT name, setting, unit FROM pg_settings WHERE name IN ('shared_buffers','work_mem');.

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

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

  • Имя — имя информационной базы в кластере (его указывают клиенты в строке соединения);
  • Защищённое соединение — по необходимости;
  • Сервер баз данных — адрес сервера PostgreSQL, при нестандартном порте укажите его в формате, принятом в вашей версии;
  • Тип СУБД — PostgreSQL;
  • База данных, Пользователь, Пароль — имя базы в PostgreSQL и учётные данные созданной роли;
  • Разрешить выдачу лицензий сервером 1С:Предприятия — обычно «Да»;
  • Создать базу данных в случае ее отсутствия — отметьте для новой базы.

То же самое из командной строки на Linux выполняет утилита rac (сервер администрирования ras должен быть запущен):

rac cluster list
rac infobase --cluster=<id_кластера> create --create-database \
  --name=trade --dbms=PostgreSQL --db-server=pg01 --db-name=trade \
  --db-user=usr1c --db-pwd='СложныйПароль' --locale=ru --license-distribution=allow

Третий способ — окно запуска 1С: «Добавить → Создание новой информационной базы → На сервере 1С:Предприятия» с теми же полями. После создания загрузите конфигурацию или выгрузку .dt через Конфигуратор.

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

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

vacuumdb --all --analyze --jobs=4 -U postgres

Резервную копию базы средствами СУБД делают утилитой pg_dump в формате custom, а восстанавливают через pg_restore:

pg_dump -h pg01 -U postgres -Fc -f /backup/trade_2026-11-11.dump trade
pg_restore -h pg01 -U postgres -d trade_test -j 4 /backup/trade_2026-11-11.dump

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

Какие таблицы занимают место: код на встроенном языке

Имена таблиц в PostgreSQL обезличены (_document123, _accumrg456). Сопоставить их с объектами конфигурации и оценить размер можно средствами платформы. Функция ПолучитьРазмерДанныхБазыДанных доступна начиная с версии 8.3.15:

&НаСервере
Процедура ПоказатьКрупныеОбъекты()

    Объекты = Новый Массив;
    Объекты.Добавить("РегистрНакопления.ТоварыНаСкладах");
    Объекты.Добавить("Документ.РеализацияТоваровУслуг");

    Для Каждого ИмяОбъекта Из Объекты Цикл
        Массив = Новый Массив;
        Массив.Добавить(ИмяОбъекта);
        РазмерБайт = ПолучитьРазмерДанныхБазыДанных(Новый Массив, Массив);
        Сообщить(ИмяОбъекта + ": " + Формат(РазмерБайт / 1024 / 1024, "ЧДЦ=1") + " МБ");
    КонецЦикла;

    // Соответствие объектов метаданных и таблиц СУБД
    Структура = ПолучитьСтруктуруХраненияБазыДанных(Объекты, Истина);
    Для Каждого Строка Из Структура Цикл
        Сообщить(Строка.Метаданные + " → " + Строка.ИмяТаблицыХранения);
    КонецЦикла;

КонецПроцедуры

Второй параметр Истина возвращает имена в терминах СУБД — в таком виде они видны в psql. Как читать данные 1С прямыми SQL-запросами и почему не стоит в них писать, рассказано в статье про SQL-запросы к базе 1С.

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

ОшибкаПричина и решение
no pg_hba.conf entry for hostНет правила доступа для адреса сервера 1С. Добавьте строку в pg_hba.conf и выполните pg_reload_conf().
password authentication failed for userНеверный пароль или несовместимый метод аутентификации. Задайте пароль заново и проверьте метод в pg_hba.conf.
Неверная сортировка строк, ошибки при загрузке .dtКластер создан не с локалью ru_RU.UTF-8. Пересоздайте кластер с правильной локалью.
out of shared memory с подсказкой про max_locks_per_transactionНе хватает слотов блокировок. Увеличьте параметр и перезапустите службу.
Медленная работа после переноса с MS SQLНе настроены параметры памяти, не собрана статистика. Выполните vacuumdb --analyze и пересмотрите postgresql.conf.
Сервер 1С не создаёт базуУ роли нет права CREATEDB или указана сборка PostgreSQL, не поддерживаемая вашим релизом платформы.

Актуальность для новых версий

Список поддерживаемых сборок PostgreSQL меняется с выходом новых релизов платформы: в системных требованиях 1С на ноябрь 2026 года указаны сборки PostgreSQL с патчем от 1С основных версий 14–18, а также Postgres Pro и другие российские дистрибутивы. Перед обновлением СУБД или платформы сверяйте пару «релиз платформы — версия PostgreSQL» по требованиям на v8.1c.ru. Функция ПолучитьРазмерДанныхБазыДанных доступна с версии 8.3.15.

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

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

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

Сколько стоит PostgreSQL для 1С?

PostgreSQL с патчем от 1С бесплатен, в том числе в коммерческих системах; его скачивают с портала «1С:Обновление программ». Редакции Postgres Pro и другие коммерческие дистрибутивы лицензируются по условиям своих вендоров.

Какую локаль выбрать при установке PostgreSQL для 1С?

Русскую локаль ru_RU.UTF-8 с кодировкой UTF8. Её задают при инициализации кластера, и поменять её потом нельзя. Проверить текущую локаль можно командой SHOW lc_collate.

Нужно ли создавать базу в PostgreSQL заранее?

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

Как часто нужно делать VACUUM для базы 1С?

Основную работу выполняет autovacuum, его отключать нельзя. Ручной vacuumdb с анализом полезно запускать раз в неделю в период низкой нагрузки, а также после массовой загрузки или удаления данных.

Кэш сервера 1С и кэш клиента: как правильно очистить

Базы данных и СУБД

Где хранится кэш клиента и кэш сервера 1С, как очистить его параметром /ClearCache, вручную и скриптом, как безопасно удалить сеансовые данные snccntx на сервере и когда очистка не поможет.

SQL-запросы к базе 1С: таблицы, структура хранения и внешние источники

Базы данных и СУБД

Как устроены таблицы 1С в СУБД, как найти соответствие объектов и таблиц, писать SELECT для чтения и почему не стоит менять данные SQL-ом; плюс чтение внешней SQL-базы из 1С.

Ошибки при запуске 1С и «Непредвиденная ошибка»: как исправить

Базы данных и СУБД

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

База данных 1С: файловая и клиент-серверная, перенос между ними

Базы данных и СУБД

Сравнение файловой и клиент-серверной базы 1С: устройство, ограничения, выбор СУБД, создание новой базы, перенос через выгрузку .dt и резервное копирование.