1C/MultiClient

Материал из ALT Linux Wiki

Установка и настройка нескольких версий клиентов 1С 8.3

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

Для примера имеются: сервер vm-db2 (192.168.0.10) - c версией платформы 1C 8.3.5-1460 и vm-pg9 (192.168.0.11) - c версией платформы 1C 8.3.9-2033. В данном случае для подключения к базам на одном ПК необходимо установить обе версии. В Windows проблем нет - каждая платформа ставится как отдельная программа. Например, после установки данных платформа - структура папок такова:

C:\Program Files (x86)\1cv8\8.3.5.1460
C:\Program Files (x86)\1cv8\8.3.9.2033
C:\Program Files (x86)\1cv8\common

В последней папке лежит файл 1cestart.exe, который выбирает при запуске базы из списка (он единый, хранится в Users\AppData) платформу, соответствующую установленной на сервере хранения этой базы.

Однако под Linux разработчики 1С не потрудились организовать такую же установку, при установке второй версии - 1С просто обновляется...

Идеальной была бы реализация, как у пакетов ядра kernel-image-*... Но пока справляемся своими силами.

Первичная установка одной из версий

Одну из необходимых версий нужно установить обычным способом, см. 1C/Quick.

В нашем случае выбрана 8.3.9-2033 (так как на данном сервере 1С - vm-pg9 - платформа обновляется намного чаще, чем на vm-db2).

ОС - BaseAlt Рабочая Станция 8.1, x86_64 (установлен 1c-preinstall-full и четыре необходимых RPM-пакета)

Создание архива клиента 1С

Другую версию 1С нужно распаковать в папку /opt/1C/v8.3.x-xxxx. Для удобства был написан скрипт (см.ниже), который намного упростит это действие.

  • Скрипт (можно скачать здесь) положите в папку вместе с распакованными RPM-пакетами
  • Если у архитектура требуемого клиента x86_64 - скрипт менять не нужно. Если же нет - откройте его и измените значение переменной arch на i386.
  • Сделайте его исполняемым (chmod +x 1ctarball.sh)
  • Запустите его в таком формате: ./1ctarball.sh <номер версии 1с в формате 8.3.x-xxxx> (в нашем случае ./1ctarball.sh 8.3.5-1460)
  • Результатом будет архив c именем 1С_8.3.5-1460.tgz
Примечание: Данное действие можно производить на любом компьютере (понадобятся пакеты rpm и tar), не обязательно на котором необходимо установить клиент 1С

Установка дополнительной версии клиента 1С

На клиентской машине (с уже установленной другой версией платформы!) выполняем от рута следующие команды:

tar -xzvf 1С_8.3.5-1460.tgz -C /
chown -R root:root /opt/1C/v8.3.5-1460

Теперь рядом с директорией /opt/1C/v8.3 (в которой установлена версия 8.3.9-2033) есть с другой версией: /opt/1C/v8.3.5-1460. Все, на вашем Линуксе установлено две версии клиента 1С (можно сделать и больше)

Настройка доступа к базам 1С

Затем необходимо настроить подключение к базам 1С. Из одного меню запуска, как в Windows, подключение к базам с разными версиями сделать не получится (так как исполняемый файл 1cestart для каждой из платформ свой), хотя список баз и будет общий - хранится в ~/.1C/1cestart.

Для подключения к серверу БД с версией 1С, которая установлена обычным способом (apt-get install), используется команда: /opt/1C/v8.3/x86_64/1cestart. Для подключения с помощью других имеющихся версий: /opt/1C/v8.3.x-xxxx/x86_64/1cestart

Остается только настроить ярлыки для каждой из версий (самое простое - скопировать из меню существующий и изменить в нем команду)

1сtarball.sh

#!/bin/bash
arch=x86_64
if [ -z $1 ]; then
    echo "Введите номер версии 1С в формате 8.3.x-xxxx"
    exit 1
else
    name="1C_Enterprise83"
    if ! [ -f $name-client-$1.$arch.rpm ]; then
        echo "В текущей директории не найдены необходимые пакеты для указанной версии 1С. 
Убедитесь в наличие всех следующих пакетов:
* $name-client-$1.$arch.rpm
* $name-client-nls-$1.$arch.rpm
* $name-server-$1.$arch.rpm
* $name-common-$1.$arch.rpm"
        exit 1 
    else
    echo -n "Подождите, операция выполняется..."
    rpm2cpio $name-client-$1.$arch.rpm | cpio -idmv 2> /dev/null
    rpm2cpio $name-client-nls-$1.$arch.rpm | cpio -idmv 2> /dev/null
    rpm2cpio $name-server-$1.$arch.rpm | cpio -idmv 2> /dev/null
    rpm2cpio $name-common-$1.$arch.rpm | cpio -idmv 2> /dev/null
    mv opt/1C/v8.3 opt/1C/v$1
    tar -cpzf 1С_$1.tgz opt
    rm -rf opt/ etc/ usr/
    echo; echo "Выполнено, установите сгенерированный архив в систему командой (c правами root):
# tar -xzvf 1С_$1.tgz -C /"
    exit 0
    fi
fi