В процессе работы с базами данных 1С у разработчиков и системных администраторов иногда возникает задача выгрузить файл конфигурации (.cf), имея доступ только к режиму «1С:Предприятие». Разберем подробно, возможно ли это сделать штатно, с какими ограничениями платформы придется столкнуться и какие обходные технические решения существуют.
Проанализируем устройство встроенного языка 1С. В режиме «1С:Предприятие» доступен объект Метаданные, который позволяет программно обойти структуру базы данных: получить имена справочников, документов, реквизитов, макетов и печатных форм. Однако платформа устроена по принципу «черного ящика» с точки зрения программного кода.
Главное ограничение: исходный код модулей (модулей объектов, менеджеров, форм, команд и глобальных модулей) в объекте Метаданные недоступен для чтения. Режим «Предприятие» не предоставляет функций для выгрузки структуры базы вместе с исполняемым кодом в файл .cf.
Тем не менее, если в системе есть возможность запускать внешний код или использовать другие технологические каналы, задачу можно решить несколькими способами.
Если у пользователя в режиме «1С:Предприятие» есть возможность вызова внешних обработок или выполнения произвольного кода (например, через консоль кода), можно запустить исполняемый файл 1С в режиме Конфигуратора в фоновом режиме с командой выгрузки конфигурации.
Для этого применяется функция встроенного языка ЗапуститьПриложение() или КомандаСистемы() с параметром ключ запуска /DumpCfg.
Рассмотрим пример кода для выгрузки конфигурации в пакетном режиме:
КомандаЗапуска = """" + КаталогПрограммы() + "1cv8.exe"" DESIGNER"
+ " /S ""ИмяСервера\ИмяБазы"""
+ " /N ""Администратор"""
+ " /P ""Пароль"""
+ " /DumpCfg ""C:\temp\UnpackedConfig.cf""";
ЗапуститьПриложение(КомандаЗапуска, , Истина);
Выясним ключевые условия для успешного выполнения этого способа:
1cv8.exe).Если прямого доступа к Конфигуратору нет, но есть возможность выполнять SQL-запросы к базе данных (например, через ADODB-соединение из внешнего скрипта или обработки), можно выгрузить содержимое служебной таблицы config.
В клиент-серверном режиме работы структура и программный код конфигурации хранятся в таблице базы данных СУБД с именем config (или configsave для несохраненной конфигурации). Записи таблицы представляют собой сжатые контейнеры внутренних данных 1С.
Посмотрим на порядок действий при использовании этого метода:
config из рабочей базы в созданную пустую базу данных.Этот способ позволяет полностью обойти ограничения прав внутри 1С, так как вся структура и код восстанавливаются напрямую из таблицы СУБД.
Если ни один из перечисленных способов не подхоит из-за жестких ограничений безопасности, рассмотрим альтернативы:
.cf будет являться полный файл поставки или обновления той же версии, скачанный с официального сайта портала ИТС.Метаданные в режиме «Предприятие» и выгрузить его в XML или JSON.