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

SELTA/Обновление

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


Обновление SELTA@Etersoft с прошлой версии

SELTA состоит из клиентской части (MSI на каждом рабочем месте) и схемы SELTA в каждой базе PostgreSQL (устройство). Версии клиента и схемы должны совпадать: клиент 1.1.6 работает со схемой 116. Если схема в базе старше клиента, драйвер не выполняет запросы 1С и возвращает ошибку SELTA need update. Если схема новее клиента — SELTA not success. Поэтому клиентов и базы обновляют вместе.

Порядок обновления

  1. Завершите работу всех пользователей 1С с базами SELTA.
  2. Сделайте резервную копию каждой базы:
    # su - postgres -c "pg_dump -Fc -f /var/backup/buh.dump buh"
  3. Обновите серверную часть и схему в базах:
    • Linux с пакетом selta-server: обновите пакет (epm upgrade или epm install ./selta-server-*.rpm) и выполните
      # selta-pg-setup upgrade
      Команда обновит все базы SELTA, включая master. Проверка — selta-pg-setup status.
    • Без selta-server (сервер на Windows или настроенный вручную): на любом клиенте с новой версией SELTA откройте Центр управления → Инициализация БД, выберите базу и нажмите «Обновить SELTA». Так обновите каждую базу, включая master.
  4. На каждом рабочем месте удалите старую SELTA (Панель управления → Программы, или msiexec /x selta.msi) и установите новую (установка). Файл лицензии selta.lic при удалении остаётся в каталоге SELTA; если его нет — добавьте заново (лицензия).
  5. Запустите 1С. После обновления, затронувшего конфигурацию, выполните действия при обновлении конфигурации 1С.

Обновление схемы идёт цепочкой скриптов 8308selta_up_A_to_B.sql от версии базы до текущей, одной транзакцией на базу. При ошибке база остаётся в прежней версии, а данные 1С не меняются.

Особенности версий

  • Новая ревизия той же версии (например, 1.1.6-eter1 → 1.1.6-eter2): схема не меняется, обновляется только клиент. Перед установкой удалите предыдущую ревизию: у них одинаковый код продукта, и установщик иначе откажет.
  • 32 и 64 бита: обновляйте selta.msi и selta64.msi по отдельности; удаление одной не трогает другую.
  • С 1.1.4 и старше на 1.1.5 и новее: модуль сервера seltapgaddon больше не нужен, host_name() написана на SQL. При восстановлении дампа такой базы на новый сервер будут две ошибки про host_name(): их исправляет обновление схемы.
  • С 1.1.0–1.1.3: схемы 111–113 исправляли LIKE; после обновления LIKE работает по правилам MS SQL Server (хвостовые пробелы, [...], ESCAPE).
  • С 1.0.x: обновите сначала до 1.1.x на старом сервере кнопкой «Обновить SELTA», затем переносите базу на новый сервер (ниже).

Переход со старого сервера Postgre@Etersoft на новый PostgreSQL

SELTA 1.1.4 и новее работает с PostgreSQL 10+ (варианты сервера). Базы со старого сервера Postgre@Etersoft 8.x/9.x переносят дампом:

  1. На старом сервере: pg_dump -Fc -f buh.dump buh (лучше утилитой pg_dump новой версии, подключившись к старому серверу по сети).
  2. На новом сервере подготовьте PostgreSQL: selta-pg-setup init ... (скрипт настройки).
  3. Создайте пустую базу в UTF8 и восстановите дамп:
    # su - postgres -c "createdb -E UTF8 -l ru_RU.UTF-8 -T template0 buh && pg_restore -d buh buh.dump"
  4. Обновите схему: # selta-pg-setup upgrade buh
  5. В Конфигураторе 1С укажите новый сервер в параметрах SQL.

Если дамп сделан более новой версией PostgreSQL, чем сервер, на который его восстанавливают (например, дамп 18 на сервер 15), pg_restore его не читает. Переведите дамп в SQL утилитой версии дампа (pg_restore -f buh.sql buh.dump) и загрузите его psql -d buh -f buh.sql; ошибку про неизвестный параметр transaction_timeout можно пропустить.

Базу, в которой типы mchar созданы старым скриптом, а не расширением, перевести в расширение нельзя (на PostgreSQL 13+); она работает как есть.

История требований к прежним версиям PostgreSQL — Действия при обновлении PostgreSQL.