Как обновить конфигурацию 1С из командной строки и устранить ошибки пакетного обновления

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

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

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

Основные ключи командной строки для обновления конфигурации

Для автоматизации задач в пакетном режиме запускается исполняемый файл платформы в режиме CONFIG. Каждая операция требует использования конкретных ключей:

  1. Загрузка конфигурации из файла (/LoadCfg) — полностью замещает основную конфигурацию файлом .cf. Этот ключ подходит для нетиповых конфигураций или баз, снятых с поддержки. Если база находится на поддержке с возможностью изменения, полная загрузка может потребовать дополнительных условий или предварительного снятия с поддержки.
  2. Обновление конфигурации на поддержке (/UpdateCfg) — штатный ключ для обновления типовых и находящихся на поддержке конфигураций. Принимает файлы поставок .cf или файлы обновлений .cfu. При его использовании платформа корректно отслеживает связи поставщика и версии.
  3. Сравнение и объединение (/MergeCfg) — выполняет процедуру сравнения и объединения с файлом .cf. Важно учитывать, что ключ /MergeCfg при работе из командной строки требует передачи файла настроек объединения через параметр -Settings <путь_к_файлу.xml>, сформированного заранее в конфигураторе. Без данного файла автоматическое объединение не выполняется.
  4. Применение изменений к базе данных (/UpdateDBCfg) — реструктурирует и обновляет конфигурацию базы данных (аналог нажатия клавиши F7 в конфигураторе). Применяется после любой из команд изменения конфигурации (/LoadCfg, /UpdateCfg или /MergeCfg).

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

Проанализируем пример командного файла (bat-скрипта) для полной загрузки конфигурации из файла и последующего обновления базы данных:


echo off
"C:\Program Files (x86)\1cv8\8.3.23.1865\bin\1cv8.exe" CONFIG /F "Z:\1C\BAZA1\" /N "1CAdmin" /P "Pass123" /LoadCfg "Z:\arhiv_2017\abt.cf" /UpdateDBCfg

Посмотрим на особенности этого скрипта:

  1. Запуск выполняется от имени пользователя с административными правами (параметры /N и /P).
  2. Параметр /F задает путь к файловой информационной базе (для серверных баз используется параметр /S).
  3. Ключ /LoadCfg указывает путь к полному файлу конфигурации .cf.
  4. Ключ /UpdateDBCfg обновляет конфигурацию базы данных после успешной загрузки.

Разбор причин сбоев при автоматическом обновлении

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

  1. Рассинхронизация версий конфигурации и поставщика: Если база находится в режиме «Редактируется с сохранением поддержки», платформа проверяет соответствие версии конфигурации поставщика и основной конфигурации. Если версия поставщика отличается от основной конфигурации, операции загрузки или объединения могут блокироваться встроенными проверками платформы. В таком случае помогает коррекция настроек поддержки или снятие базы с поддержки.
  2. Запуск через 1cestart.exe вместо 1cv8.exe: Использование утилиты стартера 1cestart.exe в автоматизированных сценариях может приводить к искажению передачи параметров командной строки или выбору не той версии платформы. Рекомендуется прописывать прямой путь к исполняемому файлу 1cv8.exe конкретного релиза.
  3. Наличие активных сеансов или блокировок: Выполнение ключа /UpdateDBCfg требует полного отсутствия пользовательских сеансов и фоновых заданий. Если в базе присутствуют фоновые процессы, применение изменений конфигурации базы данных не выполняется.
  4. Модальные диалоги и предупреждения: Если процедура обновления требует подтверждения критических изменений (например, удаления объектов или изменения структуры таблиц), пакетный режим завершается с ошибкой, так как интерактивный выбор пользователя недоступен.

Диагностика и логирование выполнения

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


"C:\Program Files (x86)\1cv8\8.3.23.1865\bin\1cv8.exe" CONFIG /F "Z:\1C\BAZA2\" /N "1CAdmin" /P "Pass123" /LoadCfg "Z:\arhiv_2017\abt.cf" /UpdateDBCfg /Out "Z:\logs\update_baza2.log" -NoTruncate /DumpResult "Z:\logs\result.xml"

Разберем параметры диагностирования подробнее:

  1. /Out <путь_к_файлу> -NoTruncate — записывает все системные сообщения конфигуратора в текстовый файл без перезаписи предыдущего содержимого. Это позволяет проанализировать ошибку, остановившую процесс.
  2. /DumpResult <путь_к_файлу> — выгружает результат выполнения операции в формате XML с цифровым кодом завершения.

Таким образом, для успешной автоматизации обновлений необходимо чётко разграничивать использование ключа /UpdateCfg для баз на поддержке и ключа /LoadCfg для доработанных баз, указывать прямые пути к 1cv8.exe и обязательно подключать логирование для оперативной диагностики возможны сбоев.

← На главную