Как создать файловую базу 1С и загрузить в нее DT-файл на Linux без графической оболочки

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Работа с 1С:Предприятие в среде Linux, особенно на серверах без графического интерфейса (Headless), часто вызывает вопросы даже у опытных администраторов. Одной из типовых задач является развертывание новой файловой базы из имеющегося файла выгрузки .dt. Рассмотрим подробно, как это сделать, используя только терминал, и разберем нюансы, которые позволяют обойти ограничения отсутствия GUI.

Подготовка окружения: имитация графической оболочки

Основная сложность заключается в том, что штатные пакетные команды Конфигуратора 1С (режим DESIGNER) зачастую требуют наличия графической подсистемы для инициализации определенных библиотек, даже если само окно не отрисовывается. Проанализируем ситуацию: на «голом» сервере выполнение команды может завершиться ошибкой или зависанием. Для решения этой проблемы мы рекомендуем использовать виртуальный фреймбуфер Xvfb.

Разберем по шагам процесс подготовки:

  1. Установим необходимые компоненты: sudo apt-get install xvfb libfontconfig1 libfreetype6.
  2. Запустим виртуальный дисплей: Xvfb :99 -screen 0 1024x768x24 &.
  3. Укажем системе использовать этот дисплей для команд 1С: export DISPLAY=:99.

Теперь система будет «думать», что монитор подключен, и позволит запускать 1cv8 в режиме конфигуратора.

Шаг 1. Создание пустой файловой базы

Прежде чем загружать данные из .dt, нам необходимо создать структуру файловой базы. В Linux это делается с помощью ключа CREATEINFOBASE. Выясним причину, по которой это важно: команда /RestoreIB требует наличия уже существующей (пусть и пустой) базы. Рассмотрим пример команды для создания базы в определенном каталоге:

/opt/1C/v8.3/x86_64/1cv8 CREATEINFOBASE File="/home/user/1c_bases/new_base";

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

Шаг 2. Загрузка данных из файла DT

Теперь, когда у нас есть пустая база, мы можем приступить к загрузке данных. Для этого используется ключ /RestoreIB. Проанализируем необходимые параметры запуска:

Посмотрим на пример полной команды:


/opt/1C/v8.3/x86_64/1cv8 DESIGNER /F"/home/user/1c_bases/new_base" /RestoreIB"/home/user/backups/data.dt" /Out"/home/user/1c_logs/restore.log" /DisableStartupMessages /DisableStartupDialogs

Шаг 3. Использование критически важных флагов для работы без GUI

Рассмотрим подробнее ключи /DisableStartupMessages и /DisableStartupDialogs. В среде без графики любое всплывающее окно (например, предложение подтвердить легальность получения обновления или сообщение о несовпадении версий) приведет к тому, что процесс «повиснет» в ожидании реакции пользователя. Поскольку нажать кнопку в терминале невозможно, процесс придется убивать вручную. Данные флаги подавляют подобные диалоги, перенаправляя информацию в лог-файл, указанный через /Out.

Автоматизация через Bash-скрипт

Для удобства мы можем объединить процесс создания и восстановления в один скрипт. Это позволит избежать опечаток и ускорит развертывание новых баз. Создадим файл restore_base.sh:


#!/bin/bash

# Настройки
BASE_PATH="/home/user/1c_bases/my_new_base"
DT_FILE="/home/user/my_data.dt"
LOG_FILE="/home/user/logs/1c_op.log"
BIN_1C="/opt/1C/v8.3/x86_64/1cv8"

# Создаем директорию, если она не существует
mkdir -p "$BASE_PATH"

# Имитация GUI
export DISPLAY=:99

# Создание пустой базы
echo "Создание пустой базы..."
$BIN_1C CREATEINFOBASE File="$BASE_PATH";

# Загрузка DT
echo "Загрузка данных из DT..."
$BIN_1C DESIGNER /F"$BASE_PATH" /RestoreIB"$DT_FILE" /Out"$LOG_FILE" /DisableStartupMessages /DisableStartupDialogs

echo "Операция завершена. Проверьте лог: $LOG_FILE"

Не забудьте дать права на исполнение скрипту командой chmod +x restore_base.sh.

Альтернативный метод: Копирование папки базы

Если работа через конфигуратор на Linux кажется избыточной, рассмотрим способ, предложенный участниками обсуждения: развертывание базы на локальном компьютере под управлением Windows или Linux с GUI. После загрузки .dt в конфигураторе на локальной машине, достаточно просто скопировать всю папку с базой (содержащую файл 1Cv8.1CD) на сервер Linux.

Важный момент: при копировании файлов между Windows и Linux необходимо убедиться, что права доступа на файлы установлены корректно. Пользователь, под которым запущен веб-сервер (например, www-data или usr1cv8), должен иметь полные права (чтение, запись, выполнение для папок) на каталог базы.

Используйте команду chown для смены владельца:


sudo chown -R usr1cv8:grp1cv8 /home/user/1c_bases/new_base
sudo chmod -R 770 /home/user/1c_bases/new_base

Решение проблем с лицензированием

При работе с файловыми базами на Linux часто возникает вопрос активации лицензий без графического интерфейса. Выясним причину: стандартный диалог 1С требует GUI. В современных версиях платформы для этого предусмотрена утилита 1C:Enterprise Ring. Она позволяет активировать программные ключи через консоль, что делает процесс полностью независимым от наличия графической оболочки.

Таким образом, мы проанализировали ситуацию и увидели, что создание и наполнение файловой базы на Linux-сервере — задача вполне решаемая. Использование виртуального фреймбуфера Xvfb и правильных ключей командной строки позволяет автоматизировать процесс и избежать необходимости установки тяжелых графических оболочек на сервер.

← На главную