Как настроить автоматическую выгрузку конфигурации (.cf) по расписанию в 1С?

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

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

Метод 1: Использование пакетного режима запуска Конфигуратора

Самый прямой и надежный способ — это использование штатных возможностей платформы 1С для работы через командную строку. Рассмотрим этот вариант для серверной информационной базы. Основная задача заключается в написании сценария (бат-файла), который будет запускаться планировщиком задач Windows (Task Scheduler).

Проанализируем параметры, которые нам понадобятся для формирования команды. Основной флаг для выгрузки конфигурации в файл — это /DumpCfg. Пример типовой команды для запуска процесса выглядит следующим образом:


"C:\Program Files\1cv8\common\1cv8.exe" DESIGNER /S "ИмяСервера\ИмяБазы" /N "Администратор" /P "Пароль" /DumpCfg "D:\Backups\ConfigBackup.cf" /Out "D:\Backups\log.txt"

Разберем по шагам ключевые параметры этой команды:

  1. DESIGNER — указывает платформе, что необходимо запустить систему в режиме «Конфигуратор».
  2. /S — путь к информационной базе на сервере. Формат записи: "ИмяСервера\ИмяБазы".
  3. /N и /P — имя пользователя и пароль с правами администратора. Эти данные необходимы для авторизации в системе.
  4. /DumpCfg — основной параметр, указывающий путь к создаваемому .cf файлу.
  5. /Out — путь к лог-файлу. Настоятельно рекомендуем использовать этот параметр, так как в пакетном режиме ошибки не выводятся на экран, и без лога вы не узнаете, почему выгрузка не удалась.

Для повышения надежности в скрипт стоит добавить формирование уникального имени файла с датой, чтобы каждый новый запуск не перезаписывал старый бэкап. На языке командного интерпретатора Windows это можно сделать так:


set filename=Config_%date:~6,4%_%date:~3,2%_%date:~0,2%.cf
"C:\Program Files\1cv8\common\1cv8.exe" DESIGNER /S "Server\Base" /N "Admin" /P "Pass" /DumpCfg "C:\Backup\%filename%"

Метод 2: Автоматизация через OneScript

Современным стандартом автоматизации в мире 1С является OneScript. Как было отмечено в обсуждении, этот инструмент позволяет писать более гибкие сценарии на языке, максимально похожем на встроенный язык 1С. Рассмотрим, почему это удобно.

При использовании OneScript нам не нужно воевать с синтаксисом .bat файлов. Мы можем использовать готовые библиотеки, которые умеют определять путь к последней версии платформы, корректно обрабатывать завершение процессов и отправлять уведомления о результатах работы скрипта в Telegram или на почту. Выясним, как выглядит логика простого скрипта на OneScript для нашей задачи:


ПараметрыЗапуска = "DESIGNER /S ""Server\Base"" /N ""Admin"" /P ""Pass"" /DumpCfg ""C:\Backups\Current.cf""";
ПутьК1С = "C:\Program Files\1cv8\8.3.22.1750\bin\1cv8.exe";
ЗапуститьПриложение(ПутьК1С + " " + ПараметрыЗапуска);

Преимущество OneScript в том, что он позволяет легко добавить логику проверки: успешно ли завершился процесс. Мы можем проанализировать код возврата приложения и, если он не равен нулю, запустить процедуру оповещения администратора.

Метод 3: Работа через Хранилище конфигурации

Многие участники обсуждения справедливо указывают на то, что лучшим «бэкапом» конфигурации является Хранилище конфигурации. Рассмотрим ситуацию автора: админ еженедельно восстанавливает тестовую базу из рабочей, из-за чего настройки хранилища «слетают». Посмотрим на эту проблему под другим углом.

Если ваша задача — сохранить историю изменений и иметь возможность откатиться на любую дату, то ежедневная выгрузка .cf — это лишь временная мера. Правильный процесс разработки выглядит так:

  1. Разработчик ведет работу в выделенной базе разработки (Dev). Эту базу админ не должен трогать или обновлять без согласования.
  2. Все изменения помещаются в Хранилище конфигурации. Само Хранилище (его файлы в папке или база данных) бэкапится средствами файловой системы или SQL.
  3. Тестовая база, которую обновляет админ, должна служить только для проверки функционала на актуальных данных. После того как админ восстановил ее из рабочей базы, разработчику достаточно выполнить команду «Хранилище — Установить связь с хранилищем» и обновить конфигурацию из него.

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

Нюансы при работе с расширениями

Проанализируем ситуацию, которая часто упускается из виду. Если ваша конфигурация использует расширения, то стандартная команда /DumpCfg выгрузит только основную конфигурацию. Ваши доработки в расширениях в этот файл не попадут!

Выясним, как сохранить расширения. Для этого используется отдельный параметр запуска конфигуратора — /DumpExtensionCfg. Если вы автоматизируете процесс, вам необходимо добавить в скрипт выгрузку каждого расширения по отдельности:


1cv8.exe DESIGNER /S "Server\Base" /N "Admin" /P "Pass" /DumpExtensionCfg "МоеРасширение" "C:\Backup\Ext_My.cfe"

Это критически важно, так как при восстановлении системы из обычного .cf без расширений вы можете потерять значительную часть логики приложения.

Рекомендации по организации процесса

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

  1. Используйте Dev-базу: Никогда не ведите разработку в базе, которая подвергается автоматическому затиранию со стороны администратора.
  2. Настройте ежедневный скрипт: Даже если вы используете Хранилище, дополнительная выгрузка .cf по расписанию в 23:00 не будет лишней. Это «план Б» на случай повреждения самого Хранилища.
  3. Проверяйте логи: Настройте скрипт так, чтобы при возникновении ошибки (например, не хватило места на диске или база была заблокирована в монопольном режиме) вы получали уведомление.
  4. Храните бэкапы вне сервера: Копирование .cf файла на тот же диск, где лежит рабочая база, не является надежным бэкапом. Используйте сетевые хранилища или облачные сервисы.

Рассмотренные методы позволяют полностью исключить человеческий фактор («забыл нажать три кнопки») и гарантируют, что у вас всегда будет под рукой актуальная структура вашей системы для восстановления или анализа.

← На главную