В этой статье описываются практические примеры работы с файловой базой с использованием автономного сервера 1С.

Создание базы

Про автономный сервер я писал в этой статье, а здесь попрактикуемся в работе с ним на примере файловой базы.

Инструкция по автономному серверу есть на сайте ИТС.

Автономный сервер (ibsrv) и утилита для управления им (ibcmd) будут установлены вместе с сервером 1С. Про установку сервера 1С я писал здесь. И так, если у вас уже установлен сервер 1С, то начинаем.

Создадим в своём домашнем каталоге следующие подкаталоги:

  • base1/data — для хранения служебных файлов базы;
  • base1/db — для хранения файловой базы.
$ mkdir -p base1/data
$ mkdir -p base1/db

Перейдем в каталог установленной платформы:

$ cd /opt/1cv8/x86_64/8.3.25.1374/

И с помощью утилиты ibcmd создадим конфиг для базы, который назовём conf.yml:

$ ./ibcmd server config init --name=base1 --base=/base1 --port=8080 --address=192.168.0.25 --db-path='/home/alex/base1/db' > /home/alex/base1/conf.yml

Посмотрим на созданный конфиг:

$ cat /home/alex/base1/conf.yml
server:
  address: 192.168.0.25
  port: 8080
database:
  path: /home/alex/base1/db
infobase:
  id: d4f34069-6731-4c0c-b791-148a4174b6b7
  name: base1
  distribute-licenses: yes
  schedule-jobs: allow
  disable-local-speech-to-text: no
http:
  base: /base1

Разберём его:

  • server: — параметры автономного сервера
    • address: — адрес сервера
    • port: — порт сервера (по нему база будет доступна по протоколу http)
  • database: — параметры базы данных
    • path: — путь к каталогу, в котором находится файловая база
  • infobase: — параметры информационной базы
    • id: — идентификатор базы
    • name: — имя базы
    • distribute-licenses: (yes/ no) — управление раздачей лицензий
    • schedule-jobs: (deny / allow) — управление регламентными заданиями
    • disable-local-speech-to-text: (yes / ne) — управление распознаванием речи
  • http: — параметры публикации базы на встроенном веб сервере
    • base: — имя публикации базы на встроенном веб сервере

При запуске автономного сервера необходимо указать каталог служебных файлов и конфиг. Запустим:

$ ./ibsrv --data='/home/alex/base1/data' --config /home/alex/base1/conf.yml

Так как мы запустили сервер в обычном режиме, то мы можем выключить его нажав Ctrl+C.

Создание службы SystemD

Для удобства мы можем сделать службу SystemD, с помощью которой будем включать и выключать автономный сервер . Теорию написания юнитов для служб SystemD я описывал — здесь.

И так, создадим файл службы:

$ sudo nano /etc/systemd/system/1c-base1.service
[Unit]
Description=Standalone server 1C for base1
Requires=network.target

[Service]
ExecStart=/opt/1cv8/x86_64/8.3.25.1374/ibsrv --daemon --data='/home/alex/base1/data' --config /home/alex/base1/conf.yml
Type=forking
User=alex
Group=alex
Restart=on-failure
RestartSec=1

[Install]
DefaultInstance=default
WantedBy=multi-user.target

После создания службы применим изменения и запустим службу:

$ sudo systemctl daemon-reload
$ sudo systemctl start 1c-base1.service

Затем, посмотрим её статус:

$ sudo systemctl status 1c-base1.service
● 1c-base1.service - Standalone server 1C for base1
     Loaded: loaded (/etc/systemd/system/1c-base1.service; disabled; preset: enabled)
     Active: active (running) since Wed 2024-09-11 11:32:21 MSK; 17min ago
    Process: 31624 ExecStart=/opt/1cv8/x86_64/8.3.25.1374/ibsrv --daemon --data=/home/alex/base1/data --config /home/alex/base1/conf.yml (code=exited, status=0/SUCCESS)
   Main PID: 31625 (ibsrv)
      Tasks: 203 (limit: 4644)
     Memory: 326.5M
        CPU: 9.963s
     CGroup: /system.slice/1c-base1.service
             ├─31625 /opt/1cv8/x86_64/8.3.25.1374/ibsrv
             └─31729 /opt/1cv8/x86_64/8.3.25.1374/jre/bin/java

Как видим, запускается процесс автономного сервера ibsrv и java.

Теперь, если нам нужно что-то поменять, например выключить регламентные задания, то просто редактируем конфиг ( в моём случае — /home/alex/base1/conf.yml) и перезапускаем службу.

Доступ к базе по http

Для проверки подключимся к базе с помощью тонкого клиента (у вас должна быть клиентская лицензия 1С).

При добавлении базы, говорим что она у нас располагается на веб-сервере:

Вот скриншот запущенной базы:

Доступ к базе по tcp

При запуске автономного сервера, по умолчанию, он слушает стандартные порты: 1541 и 1560:1591 для доступа по tcp. Поэтому мы можем подключиться к автономному серверу указав расположение базы на сервере:

Дальше можем подключаться хоть клиентом, хоть конфигуратором:

Изменение диапазона портов

Чтобы изменить диапазон портов, нужно поправить параметры запуска автономного сервера. К сожалению в конфиг это прописать пока нельзя. Отредактируем службу SystemD добавив в параметр запуска следующие опции --direct-regport=1641 и --direct-range=1660:1691.

$ sudo nano /etc/systemd/system/1c-base1.service
[Unit]
Description=Standalone server 1C for base1
Requires=network.target

[Service]
ExecStart=/opt/1cv8/x86_64/8.3.25.1374/ibsrv --daemon --data='/home/alex/base1/data' --config /home/alex/base1/conf.yml --direct-regport=1641 --direct-range=1660:1691
Type=forking
User=alex
Group=alex
Restart=on-failure
RestartSec=1

[Install]
DefaultInstance=default
WantedBy=multi-user.target

Применим изменения, перезапустим службу и посмотрим какие порты слушает наш сервер:

$ sudo systemctl daemon-reload
$ sudo systemctl restart 1c-base1.service
$ sudo ss -t4lpn | grep ibsrv
LISTEN 0      4096    192.168.0.25:8080       0.0.0.0:*    users:(("ibsrv",pid=1454,fd=63))
LISTEN 0      128          0.0.0.0:1660       0.0.0.0:*    users:(("ibsrv",pid=1454,fd=72))
LISTEN 0      128          0.0.0.0:1661       0.0.0.0:*    users:(("ibsrv",pid=1454,fd=308))
LISTEN 0      128          0.0.0.0:1641       0.0.0.0:*    users:(("ibsrv",pid=1454,fd=60))

Теперь, чтобы подключиться по tcp нужно явно указать порт — 1641:

Вот скриншот запущенной базы:

Загрузка и выгрузка архива

Для загрузки и выгрузки архива (dt) вы можете использовать конфигуратор или утилиту ibcmd. Но для этой операции, перед использованием утилиты ibcmd нужно выключать экземпляр автономного сервера.

Загрузка с помощью ibcmd

Выключим службу:

$ sudo systemctl stop 1c-base1.service

Загрузим архив:

$ ./ibcmd infobase restore --config /home/alex/base1/conf.yml --data="/home/alex/base1/data" /home/alex/base1/1Cv8new.dt

Включим службу:

$ sudo systemctl start 1c-base1.service

Выгрузка с помощью ibcmd

Выключим службу:

$ sudo systemctl stop 1c-base1.service

Выгрузим архив:

$ ./ibcmd infobase dump --config /home/alex/base1/conf.yml --data="/home/alex/base1/data" /home/alex/base1/1C-archive.dt

Включим службу:

$ sudo systemctl start 1c-base1.service

Работа с сессиями с помощью ibcmd

Для того, чтобы посмотреть список сессий, подключенных к базе, необходимо знать PID сервера. Его можно узнать посмотрев на статус службы:

$ systemctl status 1c-base1.service | grep PID
   Main PID: 2341 (ibsrv)

Теперь можем посмотреть список сессий:

$ ./ibcmd --pid=2341 session list

Каждая сессия имеет множество параметров, значения которых выводятся. Я не показываю вывод так как он слишком большой.

Чтобы завершить сессию нужно смотреть на параметр сессии session. Вот пример завершения сессии:

$ ./ibcmd --pid=2341 session terminate --session=09141b18-92d2-4a97-8e5e-3640974aa423

Остальные мои статьи по серверам 1С доступны здесь.

Если понравилась статья, подпишись на мой канал в VK.

Сводка
Работа автономного сервера 1С с файловой базой
Имя статьи
Работа автономного сервера 1С с файловой базой
Описание
В этой статье описываются практические примеры работы с файловой базой с использованием автономного сервера 1С.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *