Файл обновления конфигурации .cfu: сборка в конфигураторе и из командной строки
Содержание
Файл 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 в конфигураторе пошагово
Это основной способ для разовой сборки.
- Откройте базу разработки в режиме «Конфигуратор».
- Откройте основную конфигурацию:
Конфигурация → Открыть конфигурацию. - Перейдите в
Конфигурация → Поставка конфигурации → Создать файлы поставки и обновления. - Если нужен и полный дистрибутив, отметьте «Создавать файл поставки» и укажите путь к
.cf. - Отметьте «Создавать файл обновления» и задайте путь к
.cfu, напримерD:\build\1.0.3.7\1cv8.cfu. - В списке версий, для которых создаётся обновление, нажмите кнопку добавления и выберите
.cfпрежних релизов. Можно добавить несколько: один CFU обновит базы с любой из них. - Нажмите «Выполнить» и дождитесь сообщения о завершении.
Сколько прежних версий включать
Каждая добавленная версия увеличивает размер файла. Разумный компромисс — две-три последние версии, которые реально стоят у клиентов.
| Сценарий | Что включить в CFU |
|---|---|
| Все клиенты обновляются каждый релиз | Только предыдущую версию |
| Часть клиентов отстаёт на 1–2 релиза | Две-три последние версии |
| Клиенты на очень старых версиях | Отдать полный .cf, а не CFU |
Как проверить готовый файл
Не отдавайте CFU клиентам, пока не обновили им копию базы на прежней версии:
- Возьмите копию базы, где стоит одна из включённых версий.
- В конфигураторе откройте
Конфигурация → Поддержка → Обновить конфигурацию. - Выберите «Выбор файла обновления» и укажите свой
.cfu. - Пройдите сравнение и примите обновление.
- Выполните
Конфигурация → Обновить конфигурацию базы данныхи запустите базу в режиме предприятия.
Если версия в свойствах после обновления стала новой, а база стартует без ошибок, файл годен.
Сборка 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 клиент применяет вручную через конфигуратор. Если обновлений много и клиентов десятки, удобнее комплект поставки: тогда обновление ставится в каталог шаблонов и появляется в списке при обновлении конфигурации, как у типовых решений.
- В том же подменю
Конфигурация → Поставка конфигурациинайдите команды для описания и создания комплекта поставки. Описание сохраняется отдельным файлом с расширением.edf. - В описание включите собранные
1cv8.cf,1cv8.cfuи файл описания. - Соберите комплект: на выходе получится программа установки, которая раскладывает файлы в каталог шаблонов клиента.
Клиент запускает установку, а затем в окне обновления конфигурации выбирает свою конфигурацию из списка шаблонов, без поиска файла по папкам.
Для одного-двух клиентов этот шаг лишний: передайте .cfu архивом и коротким письмом, с какой версии он обновляет и что делать после применения.
Что увидит клиент при применении
После выбора .cfu платформа сверяет версию базы с файлом и показывает окно сравнения. Если конфигурация клиента не дорабатывалась, обновление принимается целиком. Если дорабатывалась с включённой возможностью изменений, клиент увидит конфликты по своим объектам и решит их при объединении. Об этом стоит предупредить заранее: неожиданное окно с сотнями отличий пугает.
Монопольный режим: когда он нужен, а когда нет
Сама сборка файлов поставки только читает основную конфигурацию. Пользователей из базы разработки ради неё выгонять не нужно.
Монопольный доступ требуется в другие моменты:
- 🔒 при
Обновить конфигурацию базы данных, если изменилась структура данных; - 🔒 при загрузке выгрузки
.dt; - 🔒 при тестировании и исправлении информационной базы.
Поэтому база разработки, где сразу после сборки запускают /UpdateDBCfg, должна быть свободна. В пакетном режиме конфигуратор не сможет получить монопольный доступ, если в базе висят сеансы.
Если для монопольного режима вы завершаете сеансы на сервере, у пользователей оборвётся работа и пропадут несохранённые данные. Делайте это в согласованное окно, после предупреждения.
У клиента похожая история. Само применение CFU в конфигураторе меняет основную конфигурацию и монополии не требует. А вот последующее обновление конфигурации базы данных — обычно требует. Планируйте его на нерабочее время.
Ошибки при создании и применении CFU
Подводные камни, которые всплывают позже
- 🧩 Потерян .cf прежней версии. Обновление с неё собрать уже нельзя. Клиенту на этой версии остаётся полный
.cf. - 🧩 Клиент снял конфигурацию с поддержки. Файл обновления применяется к конфигурации на поддержке. Если клиент полностью снял её с поддержки, автоматическое обновление не пройдёт, понадобится сравнение и объединение с
.cf. - 🧩 Объекты «не поставляются». Если в настройке поставки объект исключён, клиент его не получит. Перед релизом пролистайте настройку поставки.
- 🧩 Выпуск собран из несохранённой конфигурации. Сборка берёт сохранённое состояние. Изменения в открытых окнах в файл не попадут.
Как наладить выпуск обновлений без сюрпризов
Чтобы сборка CFU не превращалась в ночное приключение, закрепите порядок:
- Каждый релиз — новый номер версии, без исключений.
- Сразу после сборки полный
.cfуходит в архив релизов. - В CFU включаются две-три последние версии из архива.
- Готовый файл проверяется обновлением копии клиентской базы.
- Вместе с файлом клиент получает список версий, с которых он применим.
Если выпусков много, оформите сборку bat-скриптом или задачей в системе сборки. Команда из раздела выше выполняется без участия человека и пишет журнал.