Как выгрузить конфигурационный файл (cf-ник) из 1С:Предприятия?

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

В работе с 1С:Предприятием часто возникает необходимость выгрузить конфигурационный файл (.cf) информационной базы. Это может быть нужно для резервного копирования, переноса конфигурации между базами, анализа изменений или для автоматизации процессов развертывания. Мы рассмотрим два основных подхода к решению этой задачи: с использованием запуска конфигуратора и при помощи мощной консольной утилиты ibcmd.

Метод 1: Выгрузка CF-файла через запуск конфигуратора

Традиционный и наиболее известный способ выгрузки конфигурации — это использование платформы 1С:Предприятие в режиме конфигуратора. Этот метод подразумевает запуск графического интерфейса конфигуратора, что может быть не всегда удобно, особенно при необходимости работы с множеством баз. Однако, для разовых операций он вполне подходит. Для безошибочного формирования параметров запуска можно использовать конструктор командной строки 1С.

Для реализации этого метода нам понадобится исполняемый файл платформы 1С (обычно 1cv8.exe или 1cv8c.exe) и набор специальных ключей командной строки. Давайте разберем его по шагам, чтобы понять, как сформировать правильную команду.

  1. Определение режима запуска. Первым шагом мы указываем, что 1С должна запуститься в режиме конфигуратора. За это отвечает ключевое слово DESIGNER. Это критически важно, так как именно в конфигураторе доступны операции по работе с конфигурацией базы данных. Без этого ключа платформа может попытаться запуститься в режиме "Предприятие", где функции выгрузки конфигурации недоступны.
  2. Параметры подключения к информационной базе. Далее нам необходимо передать параметры для подключения к нужной информационной базе. Эти параметры включают:
    • /S <Сервер\><ИмяБазыНаСервере>: Этот ключ используется для клиент-серверной базы. Здесь <Сервер> — это имя или IP-адрес сервера 1С:Предприятия, а <ИмяБазыНаСервере> — имя базы, под которым она зарегистрирована на сервере 1С. Например, /S localhost\UT_Demo.
    • /F <ПутьКФайловойБазе>: Этот ключ используется для файловой базы. Здесь <ПутьКФайловойБазе> — это полный путь к каталогу файловой базы данных. Например, /F "C:\1C_Bases\MyFileBase".
    • /N <ИмяПользователя>: Имя пользователя для входа в информационную базу. Пользователь должен иметь права на запуск конфигуратора и работу с конфигурацией (например, роль "Полные права" или аналогичную).
    • /P <ПарольПользователя>: Пароль указанного пользователя. Если пароль не задан, этот ключ можно опустить.
  3. Указание действия: выгрузка конфигурации. Самым важным ключом для нашей задачи является /DumpCfg <ПутьКФайлуCF>. Этот ключ указывает платформе, что необходимо выгрузить текущую конфигурацию информационной базы в указанный файл .cf. Мы должны указать полный путь и имя файла, куда будет сохранена конфигурация. Например, "C:\Temp\MyConfig.cf".

Давайте посмотрим на пример полной команды для клиент-серверной базы. Предположим, у нас есть база sb_demo на сервере localhost, пользователь Администратор с паролем test_pwd_123, и мы хотим сохранить файл в C:\Temp\sb_demo.cf:


"C:\Program Files\1cv8\8.3.ХХ.ХХХХ\bin\1cv8.exe" DESIGNER /S localhost\sb_demo /N Администратор /P test_pwd_123 /DumpCfg "C:\Temp\sb_demo.cf"

Для файловой базы команда будет выглядеть так. Предположим, база находится по пути C:\1C_Bases\MyFileBase:


"C:\Program Files\1cv8\8.3.ХХ.ХХХХ\bin\1cv8.exe" DESIGNER /F "C:\1C_Bases\MyFileBase" /N Администратор /P MyPassword /DumpCfg "C:\Temp\MyFileBaseConfig.cf"

Важные замечания:

Метод 2: Автоматизированная выгрузка CF-файла с помощью утилиты ibcmd

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

Утилита ibcmd входит в состав серверной версии платформы 1С:Предприятие и обычно располагается в каталоге bin установленной платформы. Например, для 32-битной версии это может быть C:\Program Files (x86)\1cv8\8.3.хх.хххх\bin, а для 64-битной — C:\Program Files\1cv8\8.3.хх.хххх\bin. Убедитесь, что у вас установлена серверная версия платформы, иначе ibcmd может отсутствовать.

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

Давайте рассмотрим команду для выгрузки конфигурации с помощью ibcmd для клиент-серверной базы, используя пример из темы форума:


ibcmd infobase config save --db-server=localhost --dbms=MSSQLServer --db-name=sb_demo --db-user=test_db_user --db-pwd=test_pwd_123 "%tmp%\sb_demo.cf"

Разберем параметры этой команды более подробно:

  1. ibcmd: Это вызов самой утилиты. Прежде чем использовать ее, убедитесь, что путь к каталогу bin с ibcmd.exe добавлен в переменную среды PATH, или указывайте полный путь к файлу, например, "C:\Program Files\1cv8\8.3.ХХ.ХХХХ\bin\ibcmd.exe".
  2. infobase config save: Эта часть команды указывает на режим работы с информационной базой (infobase) и конкретное действие, которое нужно выполнить — сохранение конфигурации (config save).
  3. --db-server=<ИмяСервераБД>: Имя или IP-адрес сервера СУБД, на котором расположена база данных (например, localhost для локального сервера, или имя сервера SQL Server, PostgreSQL и т.д.).
  4. --dbms=<ТипСУБД>: Тип используемой системы управления базами данных. Примеры значений: MSSQLServer, PostgreSQL, IBMDB2, OracleDatabase.
  5. --db-name=<ИмяБазыДанных>: Имя базы данных на сервере СУБД. Это не имя базы 1С на сервере 1С, а именно название базы данных в самой СУБД.
  6. --db-user=<ПользовательБД>: Имя пользователя для подключения к СУБД. Этот пользователь должен иметь достаточные права для чтения данных из соответствующей базы данных.
  7. --db-pwd=<ПарольПользователяБД>: Пароль пользователя для подключения к СУБД.
  8. "%tmp%\sb_demo.cf": Полный путь и имя файла, куда будет сохранена конфигурация. Мы рекомендуем всегда использовать полные пути во избежание недоразумений, особенно при работе в скриптах. Пример: "D:\Archives\MyConfig_date.cf".

Для файловых баз команда будет значительно проще, так как не требуется указывать параметры СУБД:


ibcmd infobase config save --file "C:\1C_Bases\MyFileBase" "D:\Archives\sb_demo_file.cf"

В этом случае --file "<ПутьКФайловойБазе>" указывает на каталог файловой информационной базы 1С. Путь к файлу .cf также указывается последним параметром.

Автоматизация выгрузки конфигураций из множества баз

Одно из наиболее востребованных применений ibcmd — это автоматизация. Если вам необходимо регулярно выгружать .cf файлы из списка баз, которые к тому же могут постоянно меняться, ibcmd становится незаменимым инструментом. Возможность выполнять операции без запуска графического интерфейса конфигуратора существенно упрощает создание регламентных заданий и интеграцию в системы мониторинга. Для удобного управления списком баз и сохранения конфигураций подойдёт стартер 1С с поддержкой выгрузки DT и CF.

Мы можем создать скрипт (например, пакетный файл .bat, скрипт на PowerShell или Python), который будет содержать список целевых баз и последовательно выполнять команды ibcmd для каждой из них. Такой подход позволяет:

  1. Работать без GUI: Отсутствие необходимости запускать конфигуратор для каждой базы значительно экономит время и ресурсы сервера, а также позволяет выполнять операции на серверах без графической оболочки.
  2. Избегать блокировок: ibcmd может работать даже в том случае, если конфигуратор базы занят или база находится в активной работе пользователей. Однако, для полной консистентности выгружаемой конфигурации и избежания возможных проблем, рекомендуется выполнять такие операции, когда в базе нет активных изменений структуры или данных.
  3. Гибко управлять списком баз: Скрипт легко адаптировать для чтения списка баз из внешнего файла (например, CSV, TXT или XML), что позволит разным сотрудникам оперативно редактировать этот список без изменения самого скрипта или создания отдельной служебной базы 1С. Это решает проблему постоянно меняющегося списка баз и параметров.
  4. Интегрировать в системы мониторинга и резервного копирования: Автоматизированная выгрузка .cf может быть частью комплексной стратегии резервного копирования и контроля версий конфигураций, позволяя отслеживать изменения и восстанавливаться к предыдущим версиям.

Например, часть пакетного файла (.bat) может выглядеть так, демонстрируя принцип последовательного выполнения команд для разных баз:


@echo off
set "PLATFORM_BIN=C:\Program Files\1cv8\8.3.ХХ.ХХХХ\bin"
set "CFG_PATH=D:\1C_CF_Archives"

if not exist "%CFG_PATH%" mkdir "%CFG_PATH%"

echo.
echo --- Начало выгрузки конфигураций ---
echo.

echo Выгрузка конфигурации для клиент-серверной базы sb_demo (MSSQL)...
"%PLATFORM_BIN%\ibcmd.exe" infobase config save --db-server=localhost --dbms=MSSQLServer --db-name=sb_demo --db-user=test_db_user --db-pwd=test_pwd_123 "%CFG_PATH%\sb_demo_%date:~-4,4%%date:~-7,2%%date:~-10,2%_%time:~0,2%%time:~3,2%.cf"
if %errorlevel% neq 0 (
    echo Ошибка выгрузки sb_demo. Код ошибки: %errorlevel%
) else (
    echo sb_demo выгружена успешно.
)
echo.

echo Выгрузка конфигурации для клиент-серверной базы another_demo (PostgreSQL)...
"%PLATFORM_BIN%\ibcmd.exe" infobase config save --db-server=AnotherServer --dbms=PostgreSQL --db-name=another_demo_db --db-user=pg_user --db-pwd=pg_pwd "%CFG_PATH%\another_demo_%date:~-4,4%%date:~-7,2%%date:~-10,2%_%time:~0,2%%time:~3,2%.cf"
if %errorlevel% neq 0 (
    echo Ошибка выгрузки another_demo. Код ошибки: %errorlevel%
) else (
    echo another_demo выгружена успешно.
)
echo.

echo Выгрузка конфигурации для файловой базы file_base...
"%PLATFORM_BIN%\ibcmd.exe" infobase config save --file "C:\1C_Bases\FileBase" "%CFG_PATH%\file_base_%date:~-4,4%%date:~-7,2%%date:~-10,2%_%time:~0,2%%time:~3,2%.cf"
if %errorlevel% neq 0 (
    echo Ошибка выгрузки file_base. Код ошибки: %errorlevel%
) else (
    echo file_base выгружена успешно.
)
echo.

echo --- Все конфигурации выгружены. ---
echo.

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

Заключение

Мы рассмотрели два основных метода выгрузки конфигурационного файла .cf из 1С:Предприятия. Выбор метода зависит от ваших конкретных потребностей и условий. Если вам нужна разовая выгрузка из одной базы, и вы предпочитаете интерактивный режим, запуск конфигуратора с ключом /DumpCfg будет достаточным и понятным решением.

Однако для задач автоматизации, массовой выгрузки из множества баз, работы без графического интерфейса или в условиях, где сервер 1С недоступен/нежелателен, утилита ibcmd является предпочтительным и более мощным решением. Она предоставляет прямой доступ к данным конфигурации в СУБД, что открывает широкие возможности для интеграции и автоматизации административных задач. Мы рекомендуем освоить оба подхода, чтобы иметь полный арсенал инструментов для эффективной работы с конфигурациями 1С.

← На главную