SELTA/Обновление
Обновление SELTA@Etersoft с прошлой версии
SELTA состоит из клиентской части (MSI на каждом рабочем месте) и схемы SELTA в каждой базе PostgreSQL (устройство). Версии клиента и схемы должны совпадать: клиент 1.1.6 работает со схемой 116. Если схема в базе старше клиента, драйвер не выполняет запросы 1С и возвращает ошибку SELTA need update. Если схема новее клиента — SELTA not success. Поэтому клиентов и базы обновляют вместе.
Порядок обновления
- Завершите работу всех пользователей 1С с базами SELTA.
- Сделайте резервную копию каждой базы:
# su - postgres -c "pg_dump -Fc -f /var/backup/buh.dump buh"
- Обновите серверную часть и схему в базах:
- 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.
- Linux с пакетом selta-server: обновите пакет (
- На каждом рабочем месте удалите старую SELTA (Панель управления → Программы, или
msiexec /x selta.msi) и установите новую (установка). Файл лицензииselta.licпри удалении остаётся в каталоге SELTA; если его нет — добавьте заново (лицензия). - Запустите 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 переносят дампом:
- На старом сервере:
pg_dump -Fc -f buh.dump buh(лучше утилитойpg_dumpновой версии, подключившись к старому серверу по сети). - На новом сервере подготовьте PostgreSQL:
selta-pg-setup init ...(скрипт настройки). - Создайте пустую базу в UTF8 и восстановите дамп:
# su - postgres -c "createdb -E UTF8 -l ru_RU.UTF-8 -T template0 buh && pg_restore -d buh buh.dump"
- Обновите схему:
# selta-pg-setup upgrade buh - В Конфигураторе 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.