В процессе разработки и сопровождения крупных систем на базе 1С:Предприятие часто возникает необходимость иметь актуальную копию структуры метаданных без самих данных. Это полезно для быстрого развертывания новых тестовых баз, анализа изменений или восстановления конфигурации после неудачных экспериментов. Разберем подробно, как автоматизировать процесс создания файла .cf в серверном варианте работы 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"
Разберем по шагам ключевые параметры этой команды:
"ИмяСервера\ИмяБазы"..cf файлу.Для повышения надежности в скрипт стоит добавить формирование уникального имени файла с датой, чтобы каждый новый запуск не перезаписывал старый бэкап. На языке командного интерпретатора 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%"
Современным стандартом автоматизации в мире 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 в том, что он позволяет легко добавить логику проверки: успешно ли завершился процесс. Мы можем проанализировать код возврата приложения и, если он не равен нулю, запустить процедуру оповещения администратора.
Многие участники обсуждения справедливо указывают на то, что лучшим «бэкапом» конфигурации является Хранилище конфигурации. Рассмотрим ситуацию автора: админ еженедельно восстанавливает тестовую базу из рабочей, из-за чего настройки хранилища «слетают». Посмотрим на эту проблему под другим углом.
Если ваша задача — сохранить историю изменений и иметь возможность откатиться на любую дату, то ежедневная выгрузка .cf — это лишь временная мера. Правильный процесс разработки выглядит так:
Важный момент: использование Хранилища позволяет не просто хранить .cf, а видеть историю каждого изменения (кто, когда и зачем изменил конкретный модуль). Это на порядок эффективнее, чем поиск отличий между двумя огромными бинарными файлами .cf.
Проанализируем ситуацию, которая часто упускается из виду. Если ваша конфигурация использует расширения, то стандартная команда /DumpCfg выгрузит только основную конфигурацию. Ваши доработки в расширениях в этот файл не попадут!
Выясним, как сохранить расширения. Для этого используется отдельный параметр запуска конфигуратора — /DumpExtensionCfg. Если вы автоматизируете процесс, вам необходимо добавить в скрипт выгрузку каждого расширения по отдельности:
1cv8.exe DESIGNER /S "Server\Base" /N "Admin" /P "Pass" /DumpExtensionCfg "МоеРасширение" "C:\Backup\Ext_My.cfe"
Это критически важно, так как при восстановлении системы из обычного .cf без расширений вы можете потерять значительную часть логики приложения.
Подводя итог, разберем оптимальный алгоритм действий для системного администратора или ведущего разработчика:
.cf по расписанию в 23:00 не будет лишней. Это «план Б» на случай повреждения самого Хранилища..cf файла на тот же диск, где лежит рабочая база, не является надежным бэкапом. Используйте сетевые хранилища или облачные сервисы.Рассмотренные методы позволяют полностью исключить человеческий фактор («забыл нажать три кнопки») и гарантируют, что у вас всегда будет под рукой актуальная структура вашей системы для восстановления или анализа.