Перейти к содержанию

SELTA/PostgreSQL

Материал из Etersoft wiki


Сервер PostgreSQL для SELTA@Etersoft

Начиная с версии 1.1.4 SELTA@Etersoft работает с современным PostgreSQL. Собственные сборки Postgre@Etersoft (8.x, 9.2) больше не нужны: свои патчи ядра и модули SELTA не требуются.

Что нужно серверу

  • PostgreSQL 10 или новее. Проверены версии 11, 12, 15, 16 и 18.
  • Модуль mchar (типы mchar/mvarchar). Это единственный модуль из PostgreSQL для 1С, который нужен схеме SELTA. Остальные модули редакции для 1С (fasttrun, fulleq, online_analyze, plantuner) нужны 1С:Предприятию 8; SELTA их не требует, но, если они установлены, их стоит включить.
  • Настройки (их выставляет selta-pg-setup):
standard_conforming_strings = off
escape_string_warning = off
client_min_messages = error
shared_preload_libraries = 'mchar'   # у PostgreSQL для 1С: 'mchar, fasttrun, fulleq, online_analyze, plantuner'
listen_addresses = '*'
  • Базы в кодировке UTF8 с локалью ru_RU.UTF-8; служебная база master со схемой SELTA.
  • Доступ клиентов по сети в pg_hba.conf с паролем (scram-sha-256 или md5) и пароль у пользователя, под которым работает 1С (обычно postgres).

Варианты

1. ALT Linux: PostgreSQL для 1С из репозитория (рекомендуется)

В репозиториях ALT есть PostgreSQL в редакции для 1С (postgresqlNN-1C-server, -contrib) с модулем mchar. Пакет selta-server ставит его сам вместе со скриптом настройки:

Ветка ALT PostgreSQL для 1С
Sisyphus, p11 18
c10f2 16
p10, c10f1 15
p9, c9f2, c9f1 12
p8 11
# epm install ./selta-server-*.rpm
# selta-pg-setup init --allow 192.168.1.0/24
# selta-pg-setup create-db buh

2. Другой дистрибутив: PostgreSQL дистрибутива и postgresql-mchar

На Debian, Astra Linux, Ubuntu, РЕД ОС, Rocky Linux, МСВСфера, AlterOS, РОСА и других дистрибутивах нет PostgreSQL для 1С. Здесь используется обычный PostgreSQL дистрибутива (12 и новее) и наш пакет postgresql-mchar: модуль mchar из PostgreSQL для 1С, перенесённый на обычный PostgreSQL (etersoft/postgresql-mchar). Пакет postgresql-mchar сам ставит сервер PostgreSQL дистрибутива.

# epm install ./postgresql-mchar-*.rpm ./selta-server-*.rpm     (на Debian/Ubuntu — .deb)
# selta-pg-setup init --allow 192.168.1.0/24
# selta-pg-setup create-db buh

Отличия от PostgreSQL для 1С:

  • сравнения, индексы и LIKE по mchar/mvarchar работают так же, в том числе LIKE 'abc%' по индексу (условия на индекс строит сам модуль);
  • индекс для LIKE используется только по обычному (без учёта регистра) индексу;
  • нет модулей fasttrun, fulleq, online_analyze, plantuner — SELTA они не нужны.

3. Другой дистрибутив: PostgreSQL для 1С от 1С или Postgres Pro

Можно поставить PostgreSQL для 1С из дистрибутива 1С (releases.1c.ru) или Postgres Pro для 1С. Тогда ставится только selta-server, без postgresql-mchar: mchar входит в эти сборки. selta-pg-setup находит такие установки сам (/opt/pgpro/1c-N, /usr/pgsql-N, /usr/lib/postgresql/N). Не ставьте рядом PostgreSQL дистрибутива: на Debian он сразу создаёт свой кластер на том же порту 5432.

4. Сервер PostgreSQL на Windows

SELTA работает и с PostgreSQL для 1С под Windows. Скрипта настройки для Windows нет: выставьте настройки из раздела «Что нужно серверу» в postgresql.conf, разрешите доступ клиентов в pg_hba.conf, а базы создайте в Центре управления SELTA (кнопки «Создать БД», «Инициализировать», «Обновить SELTA»). Центр управления при подключении проверяет, что у сервера есть модуль mchar.

Старые серверы Postgre@Etersoft 8.x и 9.2

SELTA 1.1.6 по-прежнему подключается к Postgre@Etersoft 9.2, но этот сервер больше не развивается и не проверяется. Перенесите базы на один из вариантов выше: Действия при обновлении PostgreSQL.

Как проверить сервер

На Linux: selta-pg-setup status — покажет настройки, версию mchar, базы SELTA и их версии, код возврата не 0, если что-то не так. Вручную:

$ psql -U postgres -c "SHOW standard_conforming_strings" -c "SHOW client_min_messages" -c "SHOW shared_preload_libraries"
$ psql -U postgres -c "SELECT name, default_version FROM pg_available_extensions WHERE name = 'mchar'"
$ psql -U postgres -d buh -c "SELECT * FROM pg_selta_version"