Файл обновления конфигурации .cfu: сборка в конфигураторе и из командной строки

· 9 мин

Содержание

Файл CFU в 1С 8.3 создают в конфигураторе через меню Конфигурация → Поставка конфигурации → Создать файлы поставки и обновления. В окне отмечают «Создавать файл обновления», указывают путь к будущему .cfu и добавляют .cf предыдущих версий, от которых пойдёт обновление. Без этих старых .cf файл обновления не собрать.

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

Чем файл CFU отличается от CF

Оба файла выпускает поставщик конфигурации. Но устроены и используются они по-разному.

  • 📦 CF — полная конфигурация целиком. Из неё можно создать новую базу или обновить существующую с любой версии.
  • 🔄 CFU — только разница между новой версией и одной или несколькими прежними. Применить его можно лишь к базе, где стоит одна из этих прежних версий.
ПризнакФайл .cfФайл .cfu
Что внутриВся конфигурацияИзменения относительно указанных версий
РазмерБольшойОбычно заметно меньше
Создание новой базыДаНет
Обновление базыС любой версииТолько с версий, для которых собран
Нужны прежние .cf для сборкиНетДа

Отсюда главное правило: CFU выгоден, когда у клиентов стоят известные версии и обновление нужно передать компактно. Если у кого-то версия старше всех, что вы включили в файл, ему придётся отдавать полный .cf.

В комплектах поставки типовых решений файл обновления лежит под именем 1cv8.cfu рядом с 1cv8.cf и описанием 1cv8.mft. Тот же формат собирает и разработчик своей конфигурации.

Что подготовить перед созданием файла обновления

Ошибки при сборке почти всегда растут из пропущенной подготовки. Проверьте пять пунктов.

1. Свойства конфигурации

Откройте палитру свойств корня дерева конфигурации и заполните:

  • Поставщик — название разработчика;
  • Версия — номер в формате из четырёх чисел, например 1.0.3.7.

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

2. Архив прежних релизов

Для каждого выпуска храните его полный .cf. Это главный приём практика: CFU собирается только относительно реальных файлов прежних версий.

Заведите папку вида releases\1.0.2.5\1cv8.cf, releases\1.0.3.0\1cv8.cf и складывайте туда каждый выпущенный .cf в день релиза. Восстановить старую версию задним числом обычно нечем.

3. Настройка поставки

Меню Конфигурация → Поставка конфигурации → Настройка поставки. Здесь для объектов задают правила поставки: поставлять с возможностью изменения, без неё или не поставлять вообще. Это определит, сможет ли клиент дорабатывать объекты после обновления.

4. Сохранённая основная конфигурация

Сборка идёт из основной конфигурации. Сохраните её (Ctrl+S) до запуска. Иначе в файл попадёт не то, что вы видите на экране.

5. Права и место на диске

Нужен пользователь базы с правом на конфигуратор (роль администратора) и папка с правом записи. Пути лучше без пробелов и кириллицы: это избавит от проблем в пакетном режиме.

Готовность к сборке CFU
Выполнено: 0 / 6

Как создать CFU в конфигураторе пошагово

Это основной способ для разовой сборки.

  1. Откройте базу разработки в режиме «Конфигуратор».
  2. Откройте основную конфигурацию: Конфигурация → Открыть конфигурацию.
  3. Перейдите в Конфигурация → Поставка конфигурации → Создать файлы поставки и обновления.
  4. Если нужен и полный дистрибутив, отметьте «Создавать файл поставки» и укажите путь к .cf.
  5. Отметьте «Создавать файл обновления» и задайте путь к .cfu, например D:\build\1.0.3.7\1cv8.cfu.
  6. В списке версий, для которых создаётся обновление, нажмите кнопку добавления и выберите .cf прежних релизов. Можно добавить несколько: один CFU обновит базы с любой из них.
  7. Нажмите «Выполнить» и дождитесь сообщения о завершении.

Сколько прежних версий включать

Каждая добавленная версия увеличивает размер файла. Разумный компромисс — две-три последние версии, которые реально стоят у клиентов.

СценарийЧто включить в CFU
Все клиенты обновляются каждый релизТолько предыдущую версию
Часть клиентов отстаёт на 1–2 релизаДве-три последние версии
Клиенты на очень старых версияхОтдать полный .cf, а не CFU

Как проверить готовый файл

Не отдавайте CFU клиентам, пока не обновили им копию базы на прежней версии:

  1. Возьмите копию базы, где стоит одна из включённых версий.
  2. В конфигураторе откройте Конфигурация → Поддержка → Обновить конфигурацию.
  3. Выберите «Выбор файла обновления» и укажите свой .cfu.
  4. Пройдите сравнение и примите обновление.
  5. Выполните Конфигурация → Обновить конфигурацию базы данных и запустите базу в режиме предприятия.

Если версия в свойствах после обновления стала новой, а база стартует без ошибок, файл годен.

Сборка CFU из командной строки

Тут частая путаница: файл 1cv8c.exe — это тонкий клиент. Конфигуратора в нём нет, и собрать поставку он не может. Для пакетной сборки нужен 1cv8.exe с ключом DESIGNER.

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

Команда для файловой базы

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER ^
  /F "D:\dev\mybase" ^
  /N "Администратор" /P "пароль" ^
  /CreateDistributionFiles ^
  -cffile "D:\build\1.0.3.7\1cv8.cf" ^
  -cfufile "D:\build\1.0.3.7\1cv8.cfu" ^
  -f "D:\releases\1.0.3.0\1cv8.cf" ^
  -f "D:\releases\1.0.2.5\1cv8.cf" ^
  /Out "D:\build\log.txt"

Номер платформы в пути замените на свой.

Что означают ключи:

  • /F — каталог файловой базы. Для клиент-серверной вместо него /S "сервер\имя_базы".
  • /N и /P — пользователь и пароль.
  • /CreateDistributionFiles — режим создания файлов поставки и обновления.
  • -cffile — куда положить полный .cf. Если он не нужен, ключ опустите.
  • -cfufile — куда положить .cfu.
  • -f — .cf прежней версии. Повторяется столько раз, сколько версий включаете.
  • /Out — файл журнала. Без него ошибки пакетного режима не увидеть.

Вместо -f можно указать номер версии ключом -v, если прежние дистрибутивы сохранены в самой базе разработки. Подробности для вашей платформы — в справке по параметрам командной строки.

Проверка результата в скрипте

if %ERRORLEVEL% NEQ 0 (
  echo Сборка завершилась с ошибкой, смотрите D:\build\log.txt
  exit /b 1
)

Перед сборкой в скрипте полезно выгрузить конфигурацию из хранилища или из файлов в базу разработки и выполнить /UpdateDBCfg. Так в поставку гарантированно попадёт последняя версия кода.

Как упаковать CFU для клиентов

Голый файл .cfu клиент применяет вручную через конфигуратор. Если обновлений много и клиентов десятки, удобнее комплект поставки: тогда обновление ставится в каталог шаблонов и появляется в списке при обновлении конфигурации, как у типовых решений.

  1. В том же подменю Конфигурация → Поставка конфигурации найдите команды для описания и создания комплекта поставки. Описание сохраняется отдельным файлом с расширением .edf.
  2. В описание включите собранные 1cv8.cf, 1cv8.cfu и файл описания.
  3. Соберите комплект: на выходе получится программа установки, которая раскладывает файлы в каталог шаблонов клиента.

Клиент запускает установку, а затем в окне обновления конфигурации выбирает свою конфигурацию из списка шаблонов, без поиска файла по папкам.

Для одного-двух клиентов этот шаг лишний: передайте .cfu архивом и коротким письмом, с какой версии он обновляет и что делать после применения.

Что увидит клиент при применении

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

Монопольный режим: когда он нужен, а когда нет

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

Монопольный доступ требуется в другие моменты:

  • 🔒 при Обновить конфигурацию базы данных, если изменилась структура данных;
  • 🔒 при загрузке выгрузки .dt;
  • 🔒 при тестировании и исправлении информационной базы.

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

Если для монопольного режима вы завершаете сеансы на сервере, у пользователей оборвётся работа и пропадут несохранённые данные. Делайте это в согласованное окно, после предупреждения.

У клиента похожая история. Само применение CFU в конфигураторе меняет основную конфигурацию и монополии не требует. А вот последующее обновление конфигурации базы данных — обычно требует. Планируйте его на нерабочее время.

Ошибки при создании и применении CFU

Диагностика: выберите симптом

Подводные камни, которые всплывают позже

  • 🧩 Потерян .cf прежней версии. Обновление с неё собрать уже нельзя. Клиенту на этой версии остаётся полный .cf.
  • 🧩 Клиент снял конфигурацию с поддержки. Файл обновления применяется к конфигурации на поддержке. Если клиент полностью снял её с поддержки, автоматическое обновление не пройдёт, понадобится сравнение и объединение с .cf.
  • 🧩 Объекты «не поставляются». Если в настройке поставки объект исключён, клиент его не получит. Перед релизом пролистайте настройку поставки.
  • 🧩 Выпуск собран из несохранённой конфигурации. Сборка берёт сохранённое состояние. Изменения в открытых окнах в файл не попадут.

Как наладить выпуск обновлений без сюрпризов

Чтобы сборка CFU не превращалась в ночное приключение, закрепите порядок:

  1. Каждый релиз — новый номер версии, без исключений.
  2. Сразу после сборки полный .cf уходит в архив релизов.
  3. В CFU включаются две-три последние версии из архива.
  4. Готовый файл проверяется обновлением копии клиентской базы.
  5. Вместе с файлом клиент получает список версий, с которых он применим.

Если выпусков много, оформите сборку bat-скриптом или задачей в системе сборки. Команда из раздела выше выполняется без участия человека и пишет журнал.

Частые вопросы

Можно ли создать CFU для типовой конфигурации, которую я доработал?
Файл поставки и обновления собирается из основной конфигурации базы. Технически собрать его можно, но поставщиком в нём останется исходный разработчик, а у клиентов типовое обновление начнёт конфликтовать с вашим. Для доработок типовых решений удобнее расширения.
Можно ли из CFU получить полную конфигурацию?
Нет. CFU содержит только изменения и без базы на одной из прежних версий бесполезен. Для новой базы нужен полный .cf.
Почему один CFU весит почти как CF?
В файл включено много прежних версий или изменения затронули большую часть объектов. Уберите из списка давние версии: клиентам на них отдайте .cf.
Как узнать, для каких версий собран CFU?
При применении в конфигураторе платформа сравнивает версию базы со списком в файле и откажет, если подходящей нет. Надёжнее вести этот список самому и передавать его вместе с файлом.
Обязательно ли выпускать CF вместе с CFU?
Нет, флажки независимы. Но полный .cf всё равно нужно сохранить в архив: без него следующий CFU не собрать.