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

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

При работе с информационной базой 1С через тонкий клиент или веб-сервер специалисты часто сталкиваются с ситуацией, когда прямого доступа к серверу по RDP нет, а для доработки требуется файл конфигурации (.cf). Попытка запустить режим конфигуратора прямо из клиентского приложения не приносит успеха, так как исполняемый файл тонкого клиента 1cv8c.exe не содержит функционала разработки и выгрузки метаданных.

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

Анализ ограничений тонкого клиента и платформы 1С

Проанализируем архитектуру взаимодействия клиентского приложения с базой данных:

  1. Отсутствие встроенных функций: В встроенном языке «1С:Предприятие» (как на клиенте, так и на сервере) нет функций, позволяющих напрямую объектами метаданных сформировать бинарный файл .cf.
  2. Ограниченность исполняемых файлов: Тонкий клиент работает через файл 1cv8c.exe, в котором вызов Конфигуратора физически отсутствует. Полноценный Конфигуратор доступен только в исполняемом файле 1cv8.exe (или 1cestart.exe при установленном полном дистрибутиве).
  3. Работа через веб-сервер: При подключении к базе по HTTP/HTTPS клиент взаимодействует с веб-сервером, а не напрямую с файловой базой или сервером 1С по технологическому порту.

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

Решение: Запуск пакетного режима на стороне сервера

Если у пользователя есть учетная запись с полными правами в 1С, решение задачи сводится к вызову исполняемого файла платформы на стороне сервера приложений с помощью функции ЗапуститьПриложение().

Для выгрузки конфигурации применяются следующие ключи командной строки пакетного режима:

  1. /DumpCfg <имя файла.cf> — выгрузка основной конфигурации базы.
  2. /DumpDBCfg <имя файла.cf> — выгрузка конфигурации базы данных (актуальной исполняемой версии).
  3. /N "<Логин>" и /P "<Пароль>" — параметры аутентификации пользователя с правами администратора.

Разберем по шагам реализацию выгрузки

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

  1. На стороне сервера формируется команда запуска файла 1cv8.exe или 1cestart.exe.
  2. В параметрах указываются ключи пакетного режима выгрузки /DumpDBCfg и путь во временный каталог на сервере.
  3. Программа выполняет фоновый запуск, сохраняет файл .cf во временную директорию.
  4. Сформированный файл считывается в двоичные данные и передается на клиент или помещается в доступную сетевую шару.

Рассмотрим пример серверного кода, который можно поместить во внешнюю обработку или модуль:


&НаСервере
Функция ВыгрузитьКонфигурациюНаСервере(Логин1С, Пароль1С) Экспорт

    // Формируем путь к временному файлу cf на сервере
    ИмяФайлаCF = КаталогВременныхФайлов() + "UnloadedConfig.cf";
    
    // Путь к исполняемому файлу платформы на сервере
    ПутьКПлатформе = "C:\Program Files\1cv8\8.3.23.1688\bin\1cv8.exe";
    
    // Формируем строку командной строки для пакетного запуска
    // Для файловой базы используется /F, для серверной — /S
    ПараметрыЗапуска = СтрШаблон("DESIGNER /S""ServerName\BaseName"" /N""%1"" /P""%2"" /DumpDBCfg ""%3""", 
        Логин1С, Пароль1С, ИмяФайлаCF);
    
    // Отключаем безопасный режим для вызова внешних программ
    УстановитьБезопасныйРежим(Ложь);
    
    // Запускаем процесс и ждем его завершения
    КодВозврата = 0;
    ЗапуститьПриложение(ПутьКПлатформе + " " + ПараметрыЗапуска, , Истина, КодВозврата);
    
    Если КодВозврата = 0 И ФайлСуществует(ИмяФайлаCF) Тогда
        // Считываем файл в ДвоичныеДанные для передачи на тонкий клиент
        Возврат Новый ДвоичныеДанные(ИмяФайлаCF);
    Иначе
        ВызватьИсключение "Ошибка выгрузки конфигурации в пакетном режиме. Код возврата: " + КодВозврата;
    КонецЕсли;

КонецФункции

Важные технические нюансы и условия выполнения

При использовании данного метода нужно учитывать несколько критически важных условий:

  1. Установленный толстый клиент на сервере: На сервере приложений 1С должен быть физически установлен дистрибутив, содержащий Конфигуратор (файлы 1cv8.exe или 1cestart.exe). Если сервер работает под управлением OS Linux, помимо серверных пакетов должен быть установлен пакет клиентской части 1С.
  2. Права пользователя ОС: Учетная запись операционной системы, от имени которой запущен служба ragent (например, usr1cv8), должна иметь права на запуск исполняемых файлов 1С и права на запись в КаталогВременныхФайлов().
  3. Безопасный режим: Если код исполняется в контексте внешней обработки, платформа по умолчанию включает безопасный режим, при котором метод ЗапуститьПриложение() заблокирован. Обязательно требуется программно отключить безопасный режим вызовом УстановитьБезопасныйРежим(Ложь) или открыть обработку с соответствующим разрешением.
  4. Монопольный доступ: Выгрузка конфигурации базы данных через /DumpDBCfg не требует монопольного режима, но на базе не должно быть блокировок реструктуризации.

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

← На главную