Как выгрузить базу 1С в формат .dt с помощью утилиты ibcmd и завершить сеансы пользователей

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

С развитием платформы 1С:Предприятие 8.3 (начиная с версии 8.3.14) администраторам стал доступен новый мощный инструмент — утилита ibcmd. Она является частью концепции «Автономного сервера» и позволяет выполнять административные действия над информационными базами без необходимости запуска полноценного толстого клиента или консоли администрирования. В рамках этой статьи мы разберем, как автоматизировать процесс выгрузки базы в формат .dt и как правильно управлять сеансами пользователей в связке с этой утилитой.

Особенности утилиты ibcmd и ее отличие от стандартных методов

Ранее для выгрузки базы в пакетном режиме мы использовали запуск 1cv8.exe с параметрами CONFIG /DumpIB. Рассмотрим, почему переход на ibcmd является оправданным. Проанализируем ситуацию: стандартный конфигуратор требует наличия установленных компонент графического интерфейса и часто потребляет больше ресурсов. Утилита ibcmd ориентирована на серверное использование, она может работать напрямую с СУБД (MS SQL Server, PostgreSQL и др.) и идеально подходит для встраивания в скрипты автоматизации и CI/CD процессы.

Важно понимать, что ibcmd работает в контексте автономного сервера. Это означает, что она может «подцепиться» к базе данных напрямую, используя параметры подключения к СУБД, даже если основной кластер серверов 1С в данный момент остановлен или недоступен. Однако у этого есть и обратная сторона: утилита не имеет встроенной команды для «выгона» пользователей из живого кластера 1С.

Подготовка скрипта для выгрузки в .dt через ibcmd

Разберем конкретный пример реализации выгрузки для клиент-серверного варианта на базе MS SQL Server (для автоматизации также может быть использована специальная конфигурация) — для этого отлично подойдёт программа централизованного администрирования и автоматизации 1С. Посмотрим на структуру командного файла, который позволяет автоматизировать этот процесс. Проанализируем параметры, которые передаются утилите.


:: Настройка путей и переменных
SET $DBServer=SQL-SERVER-NAME
SET $EXEPath=C:\Program Files\1cv8\8.3.20.1789\bin\ibcmd.exe
SET $BackUpPath=D:\Backups\1C\
SET $DataPath=D:\Temp\1C_Standalone\

:: Параметры подключения к 1С и СУБД
SET $1CUser=Admin
SET $1CPassw=AdminPassword
SET $DBUser=sa
SET $DBPassw=SQLPassword
SET $BaseName=Trade_Base
SET $FileName=%$BaseName%_%DATE%.dt

:: Запуск выгрузки
"%$EXEPath%" infobase dump --db-server=%$DBServer% --dbms=MSSQLServer --db-user=%$DBUser% --db-pwd=%$DBPassw% --db-name=%$BaseName% --user=%$1CUser% --password=%$1CPassw% --data=%$DataPath% "%$BackUpPath%%$FileName%"

Рассмотрим подробнее ключевые флаги команды infobase dump:

  1. --db-server — адрес сервера базы данных.
  2. --dbms — тип системы управления базами данных (например, MSSQLServer или PostgreSQL).
  3. --db-user и --db-pwd — учетные данные администратора СУБД, позволяющие утилите прочитать данные на низком уровне.
  4. --user и --password — логин и пароль пользователя 1С с правами «Администратор системы».
  5. --data — путь к служебному каталогу, который ibcmd использует для временных файлов автономного сервера. Это обязательный параметр.

Проблема завершения сеансов: использование RAC

Как выяснилось в ходе обсуждения, сама утилита ibcmd не предназначена для управления сеансами в классическом кластере. Если в базе находятся активные пользователи, выгрузка может завершиться ошибкой или привести к неконсистентности данных (хотя ibcmd старается блокировать таблицы) — решить проблему поможет инструмент управления активными пользователями и процессами 1С. Выясним причину, по которой ibcmd лишена этой функции: она создана для работы «вне» контекста менеджера кластера.

Для корректного завершения работы пользователей перед выгрузкой следует использовать утилиту rac (Remote Administration Client) или WEB приложение для управления сеансами. Рассмотрим последовательность действий для автоматического «выгона» пользователей:

  1. Устанавливаем блокировку новых соединений, чтобы пользователи не могли зайти снова.
  2. Принудительно завершаем все текущие сеансы (например, используя конфигурацию «Управление сеансами»).
  3. Выполняем выгрузку через ibcmd.
  4. Снимаем блокировку после завершения.

Пример команд для управления сеансами через rac:


:: Установка блокировки начала сеансов
rac infobase --cluster=ID-КЛАСТЕРА update --infobase=ID-БАЗЫ --sessions-denied=on --permission-code=12345 --infobase-user=Admin --infobase-pwd=Pass

:: Завершение существующих сеансов (требует итерации по списку сеансов или использования скрипта)
rac session --cluster=ID-КЛАСТЕРА terminate --infobase=ID-БАЗЫ

Проанализируем ситуацию: использование rac требует запущенного сервиса ras (Remote Administration Service) на стороне сервера 1С. Если этот сервис не запущен, команды rac работать не будут.

Использование конфигурационных файлов YAML

Для повышения безопасности и удобства управления параметрами, мы рекомендуем использовать конфигурационные файлы в формате .yml. Это позволяет не передавать пароли в открытом виде через командную строку, где их может перехватить любой пользователь, имеющий доступ к списку процессов.

Посмотрим на пример структуры файла config.yml:


common:
  data: D:\Temp\1C_Standalone\
infobase:
  connection:
    dbms: MSSQLServer
    db-server: SQL-SERVER-NAME
    db-name: Trade_Base
    db-user: sa
    db-pwd: SQLPassword
  credentials:
    user: Admin
    password: AdminPassword

После создания такого файла команда выгрузки значительно упрощается:


ibcmd infobase dump --config="C:\Scripts\config.yml" "D:\Backups\backup.dt"

Разбор типичных ошибок при работе с ibcmd

Рассмотрим ситуацию, когда при запуске утилиты возникает ошибка: «Невозможно запустить это приложение на вашем ПК». Проанализируем возможные причины:

  1. Разрядность (Bitness): Убедитесь, что вы пытаетесь запустить 64-битную версию ibcmd.exe на 64-битной ОС. Часто системные администраторы случайно копируют исполняемые файлы из папки bin 32-битной платформы на 64-битный сервер.
  2. Повреждение файла: Если файл был скопирован с другого сервера через сетевую шару, он может быть заблокирован системой безопасности Windows. В свойствах файла необходимо нажать кнопку «Разблокировать».
  3. Зависимости: Утилита требует наличия определенных библиотек из пакета Microsoft Visual C++ Redistributable. Убедитесь, что на сервере установлены компоненты, соответствующие версии платформы 1С.

Дискуссия о целесообразности выгрузки в .dt

Проанализируем важный спор между специалистами: стоит ли вообще использовать .dt для резервного копирования? Согласно официальной документации вендора, выгрузка в .dt — это логический бэкап, а не физический. Рекомендуется использовать средства СУБД (SQL Backups) для регулярного резервного копирования клиент-серверных баз.

Однако выгрузка через ibcmd неоценима в следующих случаях:

Таким образом, использование ibcmd для создания .dt является отличным дополнением к регулярным SQL-бэкапам, позволяя автоматизировать проверку здоровья информационной базы и упростить процессы миграции данных.

← На главную