При автоматизации сборки конфигураций или интеграции 1С с системами контроля версий (например, Git) программисты часто сталкиваются с необходимостью частичной загрузки изменений. Команда /LoadConfigFromFiles с использованием ключа -files кажется идеальным инструментом, однако на практике она нередко игнорирует изменения, внесенные в файлы модулей. Рассмотрим подробнее, почему это происходит и как правильно организовать процесс обновления конфигурации из файлов.
Первая и самая важная причина, по которой команда загрузки может «проигнорировать» ваш файл Module.bsl, заключается в том, как платформа 1С воспринимает объекты метаданных. В отличие от обычных текстовых модулей (например, общих модулей), модули форм не являются самостоятельными объектами. Они жестко привязаны к описанию формы (XML-файлу).
Проанализируем ситуацию: когда вы выгружаете конфигурацию в файлы, форма документа или справочника представляется в виде папки, внутри которой находятся:
Form.xml).Ext, где в подпапке Form лежит собственно Module.bsl.Для платформы «точкой входа» является именно XML-файл объекта. Если вы указываете в параметре -files путь только к Module.bsl, загрузчик может не опознать его как корректный объект для обновления, так как иерархия нарушена. Выясним, как это исправить.
Чтобы изменения в коде подтянулись, необходимо указывать в списке загружаемых файлов основной файл формы, а не только файл модуля. Рассмотрим пример правильной строки запуска для командного файла:
"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" DESIGNER /IBName "Test" /LoadConfigFromFiles "D:\Dump" -files "Documents\РасходнаяНакладная\Forms\ФормаДокумента\Form.xml"
В этом случае платформа проанализирует XML-описание формы и автоматически подтянет связанные с ней файлы, включая измененный Module.bsl. Обратите внимание, что даже если вы не меняли саму визуальную часть формы, указание Form.xml является обязательным условием для корректной инициализации процесса загрузки этого объекта.
Еще одна распространенная ошибка — использование абсолютных путей (с указанием диска) внутри ключа -files. Посмотрим на логику работы параметра: основной путь к каталогу выгрузки уже указан сразу после /LoadConfigFromFiles. Поэтому в ключе -files пути должны быть строго относительными.
Рассмотрим разницу:
-files "D:\Dump\Documents\MyDoc\Forms\MyForm\Form.xml"-files "Documents\MyDoc\Forms\MyForm\Form.xml"Если платформа встречает абсолютный путь там, где она ожидает относительный (от корня каталога выгрузки), она зачастую просто пропускает этот файл без вывода критической ошибки в консоль, что и создает ощущение игнорирования команды.
Проанализируем роль файла ConfigDumpInfo.xml, который создается в корне папки выгрузки при выполнении команды /DumpConfigToFiles. Этот файл содержит информацию о версиях всех выгруженных объектов и их контрольных суммах.
Если вы пытаетесь загрузить изменения в базу, которая «не знает» о предыдущей выгрузке, или если файл ConfigDumpInfo.xml отсутствует/поврежден, частичная загрузка может не сработать. Платформа использует этот файл для сопоставления текущего состояния конфигурации в базе и файлов на диске. При ручной правке BSL-файлов убедитесь, что структура каталога полностью соответствует той, которая была создана самой платформой при выгрузке.
Если вам нужно загрузить не один файл, а сразу несколько (например, после слияния веток в Git), перечисление их через запятую в командной строке может привести к ошибке из-за ограничения длины строки в ОС Windows. В такой ситуации мы рекомендуем использовать ключ -listfile.
Создадим текстовый файл (например, changed_files.txt) в кодировке UTF-8 и перечислим в нем пути:
Documents\РасходнаяНакладная\Forms\ФормаДокумента\Form.xml
Catalogs\Товары\Forms\ФормаСписка\Form.xml
CommonModules\ОбщийМодульСервер\Ext\Module.bsl
Теперь запустим загрузку следующим образом:
"C:\Program Files\1cv8\8.3.12.1714\bin\1cv8.exe" DESIGNER /IBName "Test" /LoadConfigFromFiles "D:\Dump" -listfile "D:\changed_files.txt"
Этот способ гораздо надежнее и позволяет избежать проблем с кодировками спецсимволов в путях.
Часто программисты забывают, что /LoadConfigFromFiles — это аналог внесения изменений в Конфигураторе, но не нажатия клавиши F7. После успешной загрузки файлов изменения попадают в «основную конфигурацию», но не в «конфигурацию базы данных».
Выясним, как завершить процесс. Чтобы изменения вступили в силу для пользователей, необходимо выполнить команду обновления БД:
"C:\Program Files\1cv8\8.3.12.1714\bin\1cv8.exe" DESIGNER /IBName "Test" /UpdateDBCfg
Только после этого код в режиме «1С:Предприятие» будет соответствовать вашим правкам в Module.bsl.
Если загрузка всё равно не происходит, воспользуемся ключом вывода лога. Это поможет понять, видит ли 1С ваши файлы или спотыкается на какой-то внутренней ошибке (например, несоответствии метаданных).
Добавим в команду ключ /Out:
"C:\Program Files\1cv8\8.3.12.1714\bin\1cv8.exe" DESIGNER /IBName "Test" /LoadConfigFromFiles "D:\Dump" -files "..." /Out "D:\log.txt"
После выполнения команды откроем файл log.txt. Если в нем пусто или указано «Загрузка завершена успешно», но изменений нет — значит, проблема в относительных путях или в том, что вы указали Module.bsl вместо Form.xml. Если же есть ошибки формата — проблема в структуре самих XML-файлов после ручной правки.
Стоит отметить, что механизмы выгрузки и загрузки конфигурации в файлы активно развивались в ветке 8.3. В релизах 8.3.12 наблюдались определенные нестабильности при работе с частичной загрузкой (ошибки кэширования контрольных сумм). Мы рекомендуем использовать платформу версии 8.3.14 и выше, где данные механизмы были существенно переработаны для поддержки полноценного цикла разработки через Git и выгрузки расширений.
Подводя итог, для успешной частичной загрузки модуля формы выполните следующие шаги: проверьте относительность путей, указывайте основной XML-файл формы, используйте файл-список для надежности и не забывайте про команду /UpdateDBCfg.