Выпуск файла обновления конфигурации 1С: от сравнения до cfu
Содержание
Обновление конфигурации
1С выпускают в Конфигураторе: ставите конфигурацию на поддержку, дорабатываете её, сохраняете новую версию и создаёте файлы поставки и обновления (cf и cfu). Заказчик ставит cfu поверх своей базы, не потеряв ваших и своих правок.
Ниже — весь путь выпуска: какие файлы нужны, как сверить версии, что делать с данными, как проверить релиз и что отдать пользователю. Речь о доработанной типовой или собственной конфигурации на 1С 8.3, которую вы сопровождаете для других баз.
Что нужно до начала: версии, копии и режим поддержки
Сначала определитесь, от чего отталкиваетесь. Обновление всегда строится между двумя состояниями конфигурации: «было» и «стало». Без чёткой точки «было» выпустить корректный cfu нельзя.
Что собрать заранее:
- 📁 Эталонную конфигурацию — чистую поставку вендора нужного релиза (файл
cfили шаблон из каталога шаблонов). - 📁 Вашу рабочую конфигурацию — ту, что стоит на поддержке с доработками.
- 📁 Копию боевой базы заказчика — на ней вы будете проверять установку.
- 📝 Список доработок — что изменено, какие объекты затронуты, что менялось в данных.
Проверьте режим поддержки. В Конфигураторе откройте Конфигурация → Поддержка → Настройка поддержки. Там видно, какие объекты на замке, какие можно изменять с сохранением поддержки, а какие сняты с неё совсем.
Правки, внесённые в объект «снят с поддержки», при обычном обновлении вендора не объединяются автоматически. Каждое такое снятие увеличивает объём ручной работы при выпуске.
Работайте на копии. Выгрузите конфигурацию в файл (Конфигурация → Сохранить конфигурацию в файл) и сделайте выгрузку информационной базы в dt. Перед любыми изменениями в рабочей базе — резервная копия и согласование с регламентом.
Единая нумерация версий
Решите, как будете нумеровать выпуски. Удобная схема — четыре числа: 1.4.12.3. Первые два — крупный функционал, третье — релиз, четвёртое — сборка. Номер версии задаётся в свойствах конфигурации, поле «Версия». Обновление cfu привязано к номерам: он умеет переводить базу только с указанных версий.
| Что менять | Какое число увеличивать |
|---|---|
| Новый крупный блок, смена структуры | Первое или второе |
| Плановый выпуск с доработками | Третье |
| Срочное исправление | Четвёртое |
Как найти отличия между версиями конфигурации
Отличия вы ищете в двух случаях: когда переносите свои доработки в новый релиз вендора и когда проверяете, что именно попадёт в ваш выпуск.
Сравнение и объединение
Для сравнения есть два режима в меню Конфигурация:
- Сравнить, объединить с конфигурацией из файла — для случая, когда новая версия лежит у вас в виде
cf. - Сравнить конфигурации основной и базы данных — когда нужно увидеть, что изменено, но ещё не применено к базе.
Откроется дерево объектов. У каждого свой статус: изменён в одной конфигурации, изменён в обеих, добавлен, удалён. Для каждой строки вы выбираете действие: взять из основной, взять из файла, объединить.
💡 Начинайте не с модулей, а с метаданных: реквизиты, табличные части, формы. Структуру данных проще довести до конца, а модули потом правятся под неё.
Что смотреть в первую очередь
- 🔴 Объекты, изменённые и у вас, и у вендора — конфликты.
- 🟡 Объекты, добавленные вендором — обычно берёте как есть.
- 🟢 Ваши новые объекты — переносятся без вопросов.
- ⚪ Удалённые вендором объекты — проверьте, не используются ли они в ваших доработках.
Перед принятием решений по модулям прочитайте различия построчно. Автоматическое объединение модуля сработает по тексту, но не по смыслу: две правки в одной процедуре могут компилироваться и работать неправильно.
Формирование файлов поставки и обновления
Когда конфигурация собрана, проверена на синтаксис и сохранена, пора создавать файлы. В Конфигураторе это делается через меню Конфигурация → Поддержка — пункт создания файлов поставки и обновления. Название пункта в разных релизах платформы может немного отличаться, но диалог один и тот же.
Что вы получите на выходе:
| Файл | Что внутри | Для чего |
|---|---|---|
cf | Полная конфигурация целиком | Новая установка, шаблон для новой базы |
cfu | Только разница между версиями | Обновление уже работающих баз |
Комплект с 1cv8.cfu и служебными файлами | Описание, перечень версий | Установка через каталог шаблонов |
Порядок действий
- Убедитесь, что конфигурация на поддержке, а в свойствах стоит нужный номер версии.
- В диалоге создания укажите, что нужен файл поставки (
cf) и/или файл обновления (cfu). - Для обновления добавьте файл предыдущей поставки — с него будет считаться разница. Если нужно поддержать старт с нескольких версий, добавляйте каждую.
- Задайте каталог, куда сложится результат, и имя шаблона.
- Запустите создание и дождитесь сообщения об окончании. Проверьте размер файлов:
cfuзаметно меньшеcf. Если он почти равен полной конфигурации, значит, база сравнения выбрана неверно.
Версию «с которой обновляем» указывайте точно. Если пользователь стоит на другой версии, 1С при установке откажется применять cfu и предложит другой путь.
Свой выпуск поверх вендорского
Если вы дорабатываете типовую конфигурацию
, у вас две линии версий: вендорская и ваша. Порядок обычно такой: сначала переносите доработки в новый релиз вендора (сравнение и объединение), потом сохраняете результат как новую поставку, потом создаёте cfu относительно вашей предыдущей поставки. Так заказчик получает новый релиз типовой и ваши правки одним файлом.
Данные при обновлении: структура, обработчики и конвертация
Если вы меняли состав реквизитов, типы значений, регистры или справочники, одной конфигурации мало. Данные в базе заказчика должны быть приведены к новой структуре.
Что обычно требуется:
- 🔧 Обработчик обновления. Процедура, которая один раз выполняется при переходе на новую версию: заполняет новые реквизиты, переносит значения из старых полей, пересчитывает итоги. В типовых конфигурациях для этого есть подсистема обновления информационной базы; свои обработчики регистрируют в ней и привязывают к номеру версии.
- 🔧 Заполнение по умолчанию. Новый обязательный реквизит у существующих элементов получит пустое значение — продумайте, чем его заполнить.
- 🔧 Перенос между объектами. Если данные уходят из одного справочника в другой, нужно сначала создать новое хранилище, затем перенести, затем только в следующем релизе удалять старое.
Не удаляйте реквизиты и объекты в том же выпуске, где вводите замену. Лучше оставить старое на один цикл. Тогда откат проще, а ошибка в переносе не уничтожит единственную копию данных.
💡 Длинные обработчики делайте по порциям: обрабатывайте записи пачками и фиксируйте транзакцию, иначе обновление большой базы займёт часы и упрётся в блокировки.
Если данные приходят из другой системы или со старой версии конфигурации с другой структурой, используйте не обработчик, а отдельный механизм обмена: правила конвертации, выгрузку и загрузку. Для этого обновление и обмен лучше разделять: сначала сама конфигурация, потом данные.
Тестирование релиза на копии базы
Выпуск без проверки — главный источник жалоб. Минимум, который стоит сделать каждый раз.
Проверка конфигурации
- В Конфигураторе:
Конфигурация → Проверка конфигурации. Отметьте проверку синтаксиса модулей, поиск неиспользуемых и неопределённых переменных, проверку форм и макетов. - Перед сборкой закройте все предупреждения, которые относятся к вашим изменениям.
Проверка установки
- Разверните копию боевой базы заказчика на той версии, с которой будете обновлять.
- Установите
cfuтак, как это сделает пользователь — через запуск файла обновления или черезКонфигурация → Поддержка → Обновить конфигурацию. - Дождитесь завершения обработчиков обновления. Откройте журнал регистрации и посмотрите ошибки за время обновления.
- Выполните типовой набор действий: откройте основные справочники, проведите по одному документу каждого вида, сформируйте ключевые отчёты.
- Сравните результат с тем, что было до обновления: итоги в отчётах не должны «уплыть».
Для баз с тяжёлой историей сделайте второй прогон на копии, максимально близкой к реальному объёму. Время работы обработчиков на малой тестовой базе ничего не говорит о времени на живой.
Монопольный доступ нужен при обновлении структуры базы, загрузке dt и подобных операциях. Предупредите заказчика, что в этот момент пользователи из базы выходят.
Хорошая практика — чек-лист выпуска, который проходите перед каждой отправкой:
Передача обновления заказчику и документация
Технически файл готов, но выпуск не закончен, пока пользователь не знает, что ему делать.
Что приложить к cfu:
- 📄 Описание изменений — человеческим языком: что исправлено, что добавлено, что поменялось в работе. Без названий модулей и процедур.
- 📄 Инструкцию по установке — два-три шага и предупреждение о резервной копии.
- 📄 Требования — минимальная версия платформы, версия конфигурации, с которой можно обновляться.
- 📄 Что делать после — ручные настройки, если они нужны: включить функциональную опцию, запустить обработку, перепроверить права.
Способы доставки
| Способ | Когда подходит |
|---|---|
| Файл по почте или в облаке | Один-два заказчика, редкие выпуски |
| Каталог шаблонов на сервере | Много баз в одной организации |
| Общий сетевой ресурс | Сеть внутри компании, свой ИТ-отдел |
Для сравнения номеров платформы пишите однозначно: «платформа версии 8.3.х и выше», а не «не старше». Так нет разночтений.
Храните архив всех выпусков: cf каждой версии, cfu для переходов, описание изменений. Без архива вы не соберёте обновление с давней версии на текущую, если заказчик вдруг пропустил три выпуска.
Когда обновление делать не нужно
Не всякая правка заслуживает выпуска. Если исправление касается одной формы отчёта у одного клиента, быстрее передать расширение конфигурации — оно ставится отдельно и не трогает основную конфигурацию. Это снимает проблему с поддержкой и объединением. Расширение подходит и для временных правок, которые вы потом уберёте.
Типичные ошибки при выпуске обновлений
Ниже — то, что реально ломает релизы. Шаги из разделов выше не повторяются.
- ❌ Обновление строили от неверной базы. Признак:
cfuслишком большой или установка падает с сообщением о несоответствии версий. Пересоздайте файл, указав правильный предыдущийcf. - ❌ Забыли увеличить номер версии. База «обновилась» до той же версии, обработчики не запустились. Исправление — повысить номер и выпустить заново.
- ❌ Объект снят с поддержки «ради удобства». Через пару релизов такие объекты перестают получать правки вендора, а объём ручного объединения растёт.
- ❌ Обработчик не рассчитан на повторный запуск. Если обновление прервалось и запускается снова, обработчик дублирует данные. Делайте его идемпотентным: проверяйте, выполнено ли уже действие.
- ❌ Не проверили на копии боевой базы. На чистой тестовой базе всё работает, а на живой — другие данные, другие права, другие настройки.
- ❌ Не оставили путь отката. До установки у пользователя должна быть резервная копия, и он должен о ней знать.
Частые вопросы
Чем cfu отличается от cf?
cf — полная конфигурация, cfu — только разница между версиями. cfu ставится на уже работающие базы и меньше по размеру.Можно ли обновлять с любой версии на любую?
cfu рассчитан на конкретные версии, указанные при создании. С остальных нужно идти через промежуточный выпуск или ставить полный cf.