Файл обновления CFU: создание в Конфигураторе и установка в базу
Содержание
CFU делают в Конфигураторе через Конфигурация → Поставка конфигурации → Создать файлы поставки и обновления. Ставите флажок «Создать файл обновления
», указываете путь к будущему .cfu и добавляете в список CF-файлы прошлых версий, с которых разрешено обновляться. Без этого списка файл обновления не собрать.
Частое заблуждение: «CFU — это просто CF поменьше, его можно сделать из любой базы». Нет. Файл обновления — это разница между новой версией и конкретными старыми версиями поставки. Он работает только у того, у кого конфигурация стоит на поддержке этого же поставщика и у кого одна из перечисленных версий.
Чем CFU отличается от CF и когда нужен каждый
Оба файла создаются одной командой, но решают разные задачи.
| CF (файл поставки) | CFU (файл обновления) | |
|---|---|---|
| Что внутри | Конфигурация целиком | Изменения относительно указанных версий |
| Для чего | Первая установка, создание базы из шаблона, обновление «с нуля» | Обновление базы, где уже стоит прошлая версия |
| Требование к базе | Нет | Конфигурация на поддержке этого поставщика, версия из списка в CFU |
| Размер | Полный | Зависит от числа версий в списке |
| Чем загружают | Загрузить конфигурацию из файла или Обновить конфигурацию | Только Обновить конфигурацию |
Типовые конфигурации фирма 1С выпускает именно так: релиз приходит с 1Cv8.cf и 1Cv8.cfu. Тот же механизм доступен любому разработчику, который ведёт свою конфигурацию или отраслевое решение.
💡 Если пользователи вашей разработки сидят на разных версиях, CFU удобнее: им не нужно сравнивать всю конфигурацию, платформа сама применит изменения поверх их версии.
Что проверить в конфигурации до сборки файла обновления
CFU собирают из конфигурации разработчика, а не из рабочей базы пользователей. Перед сборкой пройдите по четырём пунктам.
1. Свойства конфигурации: поставщик и версия
Откройте дерево конфигурации, вызовите свойства корневого элемента. Заполните:
- 🏷 Поставщик — одна и та же строка во всех версиях. Сменили поставщика — у пользователей обновление не встанет.
- 🔢 Версия — например,
1.0.3.12. Каждый новый выпуск получает новый номер, больше предыдущего. - 📝 Авторские права и адрес информации — по желанию.
Если в конфигурации есть Библиотека стандартных подсистем, номер версии дублируется в общем модуле обновления информационной базы вашей подсистемы (процедура ПриДобавленииПодсистемы, свойство Описание.Версия). Номера в свойствах и в модуле должны совпадать. Иначе после обновления не запустятся обработчики обновления или запустятся не те.
2. Настройка поставки
Команда Конфигурация → Поставка конфигурации → Настройка поставки. Здесь для каждого объекта задаётся правило для получателя:
- ✅ Изменения разрешены — пользователь может дорабатывать объект, при обновлении его правки объединяются с вашими.
- 🔒 Не редактируется — объект закрыт от изменений, пока пользователь не включит возможность изменения.
- 🚫 Не поставляется — объект не попадёт в поставку (служебные обработки разработчика, тестовые данные).
Обычно правило ставят на корень конфигурации и не трогают отдельные объекты, если нет причины.
3. Архив прошлых CF
Для CFU нужны файлы поставки предыдущих версий — те самые CF, которые вы когда-то отдали пользователям. Без старых CF собрать обновление с этих версий нельзя. Заведите правило: каждый выпуск сохраняется в папку с номером версии, например D:\Releases\1.0.3.11\1Cv8.cf.
4. Резервная копия
Сборка файла базу не меняет. Но перед выпуском разумно выгрузить .dt и сохранить исходники в хранилище или Git, чтобы потом точно знать, из чего собран выпуск.
Как сделать CFU файл: пошагово в Конфигураторе
Шаг 1. Откройте команду создания файлов
В Конфигураторе: Конфигурация → Поставка конфигурации → Создать файлы поставки и обновления. Если пункт недоступен, сначала сохраните конфигурацию.
Шаг 2. Отметьте, какие файлы нужны
В окне два флажка:
- «Создать файл поставки» — путь к новому
1Cv8.cf. Его тоже лучше собрать сразу: он понадобится, когда выйдет следующая версия. - «Создать файл обновления» — путь к
1Cv8.cfu.
Шаг 3. Заполните список дистрибутивов для обновления
Под флажком CFU есть таблица дистрибутивов. Кнопкой добавления укажите CF-файлы прошлых версий. После выбора файла платформа сама прочитает из него номер версии.
Сколько версий включать — решать вам:
| Сколько версий в списке | Плюсы | Минусы |
|---|---|---|
| Только предыдущая | Маленький файл, быстрая сборка | Отставшим пользователям придётся ставить обновления по цепочке |
| 3–5 последних | Обычный компромисс | Файл растёт |
| Все версии с начала | Обновится любой | Тяжёлый файл, долгая сборка |
Фирма 1С в типовых релизах обычно тоже держит несколько последних версий, а не все.
Шаг 4. Запустите создание
Нажмите «Выполнить». Сборка с несколькими версиями в списке может идти несколько минут. В результате в папке появятся 1Cv8.cf и 1Cv8.cfu.
Шаг 5. Проверьте файл
Скопируйте базу на прошлой версии и обновите её новым CFU. Только после этого отдавайте файл пользователям.
Если нужен установщик с setup.exe, как у типовых релизов, загляните в то же подменю Поставка конфигурации: там есть команды для описания и создания комплекта поставки. Комплект ставится в каталог шаблонов, как релиз фирмы 1С. Для простой передачи обновления достаточно CFU.
Как нумеровать версии
Формат номера — четыре числа через точку. Удобная схема, близкая к той, что у типовых решений:
- первое число — поколение конфигурации, меняется редко;
- второе — редакция с крупными изменениями;
- третье — функциональный выпуск;
- четвёртое — исправления внутри выпуска.
Пример: после 1.0.3.12 исправление ошибки получает 1.0.3.13, новый функционал — 1.0.4.1. Главное — номер каждого следующего выпуска больше предыдущего, и ни один номер не повторяется.
Сборка CFU из командной строки
Если выпуски собираются регулярно, руками каждый раз неудобно. Конфигуратор умеет делать то же в пакетном режиме:
"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER /F"D:\Dev\MyBase" /N"Admin" /P"" ^
/CreateDistributionFiles -cffile "D:\Releases\1.0.3.12\1Cv8.cf" ^
-cfufile "D:\Releases\1.0.3.12\1Cv8.cfu" ^
-f "D:\Releases\1.0.3.11\1Cv8.cf" -f "D:\Releases\1.0.3.10\1Cv8.cf" ^
/Out "D:\Releases\build.log"
Каждый ключ -f добавляет одну прошлую версию в список. Номер платформы в пути подставьте свой. Результат смотрите в файле из /Out.
Обновление типовой конфигурации файлом CFU
Теперь сторона получателя. Подходит и для релизов фирмы 1С, и для вашего собственного CFU.
Через Конфигуратор
- Сделайте резервную копию:
Администрирование → Выгрузить информационную базув.dt. - Откройте конфигурацию:
Конфигурация → Открыть конфигурацию. - Запустите
Конфигурация → Поддержка → Обновить конфигурацию. - Выберите «Выбор файла обновления» и укажите
1Cv8.cfu. - Платформа сравнит версии. Если правок в конфигурации нет, обновление поставщика применится сразу. Если есть, откроется окно сравнения и объединения.
- Выполните
Конфигурация → Обновить конфигурацию базы данных(F7). Для этого шага нужен монопольный доступ к базе. - Запустите 1С:Предприятие и дождитесь обработчиков обновления.
Перед шагом 6 предупредите пользователей: на время реструктуризации им придётся выйти из базы. В клиент-серверном варианте закройте сеансы в нерабочее время.
Что делать, если CFU не подходит, а версия отстала сильно? Есть два пути: ставить промежуточные релизы по цепочке или взять CF новой версии и обновиться через ту же команду, указав CF вместо CFU. Второй путь работает, но сравнение будет полным и дольше.
Через режим 1С:Предприятие
В конфигурациях на БСП (Бухгалтерия, ЗУП, УТ и другие) обновление из файла есть в пользовательском режиме: Администрирование → Интернет-поддержка и сервисы → Обновление версии программы. В форме выберите обновление из файла и укажите CFU. Программа сама сделает резервную копию (если включить), применит обновление и запустит обработчики.
Этот путь удобен для файловой базы без доработок. Если конфигурация изменена, надёжнее Конфигуратор: там видно, что объединяется.
В пакетном режиме
"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Admin" /P"" ^
/UpdateCfg "D:\Releases\1Cv8.cfu" /UpdateDBCfg /Out "D:\update.log"
Так обновляют базы без доработок по расписанию. Для базы с изменениями пакетный режим не годится: объединение требует решений человека.
Расширения и доработки при обновлении через CFU
Доработки в самой конфигурации
Если конфигурация стоит на поддержке с включённой возможностью изменения, при обновлении откроется окно сравнения. Главное в нём:
- 🔍 смотрите объекты, изменённые и у поставщика, и у вас — там конфликты;
- 🧩 для модулей выбирайте объединение с приоритетом поставщика или с приоритетом вашей конфигурации, а затем проверяйте код вручную;
- 📋 после объединения запустите синтаксическую проверку модулей.
Если конфигурацию когда-то сняли с поддержки, CFU не применится вовсе. Придётся заново ставить её на поддержку через сравнение с CF той версии, на которой она основана, и только потом обновлять.
Расширения
CFU не содержит расширений и не трогает их. Расширения хранятся отдельно и после обновления основной конфигурации остаются на месте. Но то, что они перехватывают, могло измениться.
После обновления:
- Откройте
Конфигурация → Расширения конфигурации. - Для каждого расширения выполните проверку применимости.
- Если объекты, которые расширение заимствовало, переименованы или удалены, расширение отключится при запуске. Его нужно открыть и поправить заимствования.
💡 Это главный довод в пользу доработок через расширения: основная конфигурация остаётся без изменений, обновление CFU идёт без объединения, а исправлять приходится только расширение.
Если вы — разработчик CFU
Учитывайте пользователей с доработками. Не переименовывайте объекты без нужды и не меняйте имена реквизитов в каждом выпуске. Любое такое изменение ломает чужие расширения и создаёт конфликты при объединении.
Ошибки при создании и установке CFU
Ещё несколько промахов, которые встречаются у разработчиков:
- ❌ Собрали CFU, но не сохранили CF текущей версии. Через месяц следующий выпуск не будет поддерживать обновление с этой версии.
- ❌ Поменяли строку «Поставщик» (опечатку исправили, добавили «ООО»). Для платформы это другой поставщик.
- ❌ Собрали CFU из рабочей базы пользователя, где есть его правки. Они уедут всем остальным.
- ❌ Не увеличили номер версии. Платформа сочтёт выпуск той же версией.
Частые вопросы
Можно ли сделать CFU из CF, если исходной базы уже нет?
Конфигурация → Загрузить конфигурацию из файла, сохраните и соберите CFU, указав прошлые CF. Свойства «Поставщик» и «Версия» придут из файла.