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

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

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

Ограничения платформы: почему нельзя выгрузить CF штатно

Проанализируем устройство встроенного языка 1С. В режиме «1С:Предприятие» доступен объект Метаданные, который позволяет программно обойти структуру базы данных: получить имена справочников, документов, реквизитов, макетов и печатных форм. Однако платформа устроена по принципу «черного ящика» с точки зрения программного кода.

Главное ограничение: исходный код модулей (модулей объектов, менеджеров, форм, команд и глобальных модулей) в объекте Метаданные недоступен для чтения. Режим «Предприятие» не предоставляет функций для выгрузки структуры базы вместе с исполняемым кодом в файл .cf.

Тем не менее, если в системе есть возможность запускать внешний код или использовать другие технологические каналы, задачу можно решить несколькими способами.

Способ 1. Пакетный запуск Конфигуратора из кода 1С

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

Для этого применяется функция встроенного языка ЗапуститьПриложение() или КомандаСистемы() с параметром ключ запуска /DumpCfg.

Рассмотрим пример кода для выгрузки конфигурации в пакетном режиме:


КомандаЗапуска = """" + КаталогПрограммы() + "1cv8.exe"" DESIGNER"
    + " /S ""ИмяСервера\ИмяБазы"""
    + " /N ""Администратор"""
    + " /P ""Пароль"""
    + " /DumpCfg ""C:\temp\UnpackedConfig.cf""";

ЗапуститьПриложение(КомандаЗапуска, , Истина);

Выясним ключевые условия для успешного выполнения этого способа:

  1. На машине, где выполняется код, должно быть установлено клиентское приложение 1С (файл 1cv8.exe).
  2. Учетная запись 1С должна обладать правами на запуск Конфигуратора и административными правами.
  3. У процесса 1С должны быть права на запись файла в указанную директорию файловой системы.

Способ 2. Извлечение таблицы config через СУБД

Если прямого доступа к Конфигуратору нет, но есть возможность выполнять SQL-запросы к базе данных (например, через ADODB-соединение из внешнего скрипта или обработки), можно выгрузить содержимое служебной таблицы config.

В клиент-серверном режиме работы структура и программный код конфигурации хранятся в таблице базы данных СУБД с именем config (или configsave для несохраненной конфигурации). Записи таблицы представляют собой сжатые контейнеры внутренних данных 1С.

Посмотрим на порядок действий при использовании этого метода:

  1. Создаем новую пустую базу данных того же формата СУБД (например, MS SQL Server).
  2. Средствами СУБД копируем содержимое таблицы config из рабочей базы в созданную пустую базу данных.
  3. Открываем созданную пустую базу через Конфигуратор 1С.
  4. Штатно выгружаем файл конфигурации через меню: Конфигурация — Сохранить конфигурацию в файл...

Этот способ позволяет полностью обойти ограничения прав внутри 1С, так как вся структура и код восстанавливаются напрямую из таблицы СУБД.

Альтернативные варианты

Если ни один из перечисленных способов не подхоит из-за жестких ограничений безопасности, рассмотрим альтернативы:

← На главную