Как выполнить выборочную выгрузку объектов конфигурации 1С в файлы?

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

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

Основы механизма выгрузки в файлы

Платформа 1С предоставляет возможность декомпозиции конфигурации на текстовые и XML-файлы. Это необходимо для интеграции с системами контроля версий (Git, SVN) и автоматизации процессов сборки (CI/CD) (поможет автоматизация CI/CD и интеграция 1С с GitLab). Основной командой для этого процесса является запуск конфигуратора в пакетном режиме с ключом /DumpConfigToFiles. Однако по умолчанию эта команда обрабатывает всю конфигурацию. Чтобы ограничить список объектов, мы будем использовать специальный параметр -listFile.

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

Шаг 1. Подготовка файла со списком объектов (-listFile)

Для того чтобы платформа «поняла», какие именно объекты нам нужны, необходимо создать текстовый файл (например, objdump.txt). Этот файл должен быть сохранен в кодировке UTF-8. Рассмотрим подробнее правила его наполнения:

  1. Имена объектов: Необходимо указывать внутренние имена метаданных (Name), а не их синонимы.
  2. Формат записи: Объекты записываются в формате ТипОбъекта.ИмяОбъекта.
  3. Иерархия: Если нам нужно выгрузить подчиненный объект (например, конкретную форму), мы можем указать путь через точку.

Проанализируем пример содержимого такого файла:


Configuration
Document.БольничныйЛист
Catalog.Сотрудники.Form.ФормаЭлемента
CommonModule.ОбщегоНазначения

Важное примечание: Обратите внимание на объект Configuration. Его включение в список позволяет выгрузить корень конфигурации, что включает в себя модули управляемого приложения, сеанса, а также общие свойства конфигурации. Если его не указать, будут выгружены только файлы самих объектов (документов, справочников), но общая структура проекта может оказаться неполной.

Шаг 2. Формирование команды для выгрузки

Теперь разберем структуру команды для запуска из командной строки (cmd) или PowerShell. Нам потребуется указать путь к исполняемому файлу платформы, параметры авторизации и ключи выгрузки.

Посмотрим на пример командной строки:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" DESIGNER /S "Server\Base" /N "Admin" /P "Password" /DumpConfigToFiles "C:\Export\Files" -listFile "C:\Scripts\objdump.txt" /Out "C:\Logs\dump.log"

Разберем основные параметры этой команды:

Использование инкрементальной выгрузки (ключ -update)

Одной из недокументированных в базовых примерах, но крайне важных особенностей является ключ -update. Если вы выполняете выгрузку в папку, где уже лежат ранее выгруженные файлы, использование этого ключа заставит платформу сравнивать текущее состояние метаданных с файлами на диске. В этом случае будут обновлены только те XML и BSL файлы, в которых действительно произошли изменения.

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

Шаг 3. Обратная загрузка объектов (-LoadConfigFromFiles)

Если вы отредактировали файлы модулей или форм во внешнем редакторе и хотите загрузить их обратно в конфигурацию, используется симметричная команда /LoadConfigFromFiles. Здесь также крайне желательно использовать -listFile, чтобы случайно не затереть другие объекты конфигурации старыми версиями из файлов.

Пример команды для частичной загрузки:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" DESIGNER /S "Server\Base" /N "Admin" /P "Password" /LoadConfigFromFiles "C:\Export\Files" -listFile "C:\Scripts\objload.txt" -update

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

Работа с хранилищем конфигурации

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

  1. Обновляем конфигурацию из хранилища (/ConfigurationRepositoryUpdateCfg).
  2. Захватываем необходимые объекты в хранилище (/ConfigurationRepositoryLock).
  3. Выполняем выгрузку в файлы для редактирования.
  4. После внесения изменений загружаем файлы обратно в конфигурацию.
  5. Помещаем измененные объекты в хранилище (/ConfigurationRepositoryCommit).

Рассмотрим пример комплексной строки, учитывающей работу с хранилищем:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" DESIGNER /DisableStartupMessages /S "DEV1C\Base" /N "User" /P "Pass" /ConfigurationRepositoryS "tcp://Server/Repo" /ConfigurationRepositoryN "User" /ConfigurationRepositoryP "Pass" /DumpConfigToFiles "C:\Cache" -listFile "C:\Scripts\objects.xml" /Out "C:\Logs\report.log"

Особенности расширений конфигурации

Механизм выборочной выгрузки применим и к расширениям. Для этого используются специализированные ключи:

Параметр -listFile работает здесь точно так же, позволяя обновлять только заимствованные или новые объекты внутри конкретного расширения.

Технические тонкости и типичные ошибки

Разберем несколько важных моментов, которые часто упускают новички:

1. Кодировка и BOM. Платформа 1С чувствительна к наличию метки BOM (Byte Order Mark) в файлах UTF-8. Если при попытке выгрузки вы получаете ошибку «Файл списка не найден», хотя путь указан верно, попробуйте пересохранить -listFile в кодировке UTF-8 без BOM.

2. Служебный файл ConfigDumpInfo.xml. При каждой выгрузке в целевом каталоге создается файл ConfigDumpInfo.xml. Это своего рода индекс, в котором хранится информация о версии конфигурации и времени выгрузки каждого объекта. Никогда не удаляйте его вручную, если планируете использовать инкрементальную выгрузку с ключом -update.

3. Разделение файлов. Помните, что платформа при выгрузке разбивает один объект 1С на множество файлов. Например, для формы будут созданы:

Это очень удобно для анализа изменений кода (code review), так как в Git будет видно изменение только в .bsl файле, а не во всем огромном XML-описании объекта — для этих целей есть нейросетевой помощник для разработки на 1С.

4. Пустые строки. Проанализируем структуру -listFile: в нем не должно быть пустых строк в начале или в середине списка. Каждая строка должна содержать ровно одно имя объекта. Лишние пробелы также могут привести к сбою парсинга.

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

← На главную