Выпуск релиза конфигурации 1С: от хранилища до рабочих баз
Содержание
Чтобы сделать релиз в 1С, разработчик поднимает номер в свойстве Версия корня конфигурации, затем в Конфигураторе вызывает Конфигурация → Поставка конфигурации → Создать файлы поставки и обновления конфигурации. На выходе два файла: .cf для новых баз и .cfu для обновления уже работающих. Дальше релиз ставят на копию рабочей базы, проверяют и только потом выкатывают на продуктив.
Типичная ситуация: доработки месяц копились в хранилище, кто-то правил прямо в рабочей базе, а в пятницу вечером «надо обновить всех». Без порядка такой выпуск заканчивается откатом. Описанный цикл одинаково работает и для одной базы клиента, и для тиражного решения на десятки установок.
Подготовка к выпуску: что решить до начала разработки
Релиз начинается не со сборки, а с договорённостей. Их фиксируют один раз и дальше не пересматривают на каждом выпуске.
📌 Что определить заранее:
- Состав релиза. Список задач, которые в него входят. Всё, что не успели, уезжает в следующий, а не «докручивается в последний день».
- Ветка поставки. Одна эталонная конфигурация, из которой собираются файлы. Не рабочая база клиента и не чья-то личная копия.
- Поставщик и имя. В свойствах корня конфигурации заполните
ПоставщикиИмя. По ним база-получатель понимает, что обновление «родное». - Окно обновления. Когда пользователи не работают и сколько времени займёт реструктуризация. Для больших баз на SQL это может быть час и больше.
- Ответственный за выкладку. Один человек нажимает «Обновить» и отвечает за откат.
Если конфигурация собрана на основе типовой (например, доработанная БП), заранее решите, как будете жить с обновлениями поставщика. Каждый ваш релиз должен строиться поверх последней типовой версии, иначе при следующем обновлении придётся объединять уже две ветки изменений.
Контроль версий: хранилище конфигурации или Git
Главная задача на этом этапе — чтобы ни одно изменение не жило только в чьей-то базе. Варианта два.
Хранилище конфигурации
Классика для команд, которые работают в Конфигураторе.
- Подключитесь:
Конфигурация → Хранилище конфигурации → Подключиться к хранилищу. - Перед правкой объект захватывают. Пока он захвачен, другие его не изменят.
- После правки —
Поместить изменения в хранилищес внятным комментарием: номер задачи и что сделано. - Перед сборкой релиза ставят метку на версию хранилища, например
Релиз 1.4.3. По метке всегда можно вернуться к точному состоянию поставки.
EDT и Git
1С:EDT хранит конфигурацию в виде файлов, поэтому работает с Git напрямую: ветки, слияние, код-ревью через пулл-реквесты. Конфигуратор тоже умеет выгружать конфигурацию в файлы (Конфигурация → Выгрузить конфигурацию в файлы), это используют, чтобы складывать историю в Git параллельно хранилищу.
| Подход | Когда подходит | Слабое место |
|---|---|---|
| Хранилище | 1–5 разработчиков, Конфигуратор | Нет полноценных веток, ревью вручную |
| EDT + Git | Команда, ревью, CI | Порог входа, требовательность к ресурсам |
| Без контроля версий | Никогда | Потеря изменений, нельзя откатить |
Правки «на горячую» в рабочей базе — главный враг релизного цикла. Если без них не обойтись, в тот же день перенесите исправление в хранилище. Иначе следующий релиз его затрёт.
Тестирование: как поймать ошибки до выкладки
Тестируют на копии рабочей базы, а не на демо-данных. Ошибки обычно прячутся в реальных данных: старые документы, нестандартные настройки, большие объёмы.
Порядок проверки
- Выгрузите свежую копию рабочей базы в
.dtи разверните её отдельно. - Обновите копию собранным
.cfu— ровно тем файлом, который пойдёт клиенту. - Засеките время обновления структуры. Это и есть ваше окно простоя.
- Запустите базу в пользовательском режиме, дождитесь отработки обработчиков обновления.
- Пройдите ключевые сценарии: проведение основных документов, закрытие месяца , печать, обмены.
Инструменты
- 🔍
Конфигурация → Проверка конфигурации— синтаксис, ссылки на несуществующие объекты, неиспользуемые процедуры. Включайте проверку для всех режимов запуска: тонкий клиент, веб-клиент, сервер. - 🤖 Vanessa Automation — сценарные тесты на языке Gherkin, которые кликают по формам как пользователь. Набор сценариев один раз пишется и гоняется на каждом релизе.
- 🧪 Модульные тесты (например, фреймворк Vanessa ADD) — проверяют расчётные процедуры без интерфейса.
- 📋 1С:АПК — автоматическая проверка на соответствие стандартам разработки.
Сравните метаданные новой и предыдущей поставки (Конфигурация → Сравнить конфигурации). Отчёт о различиях показывает, не уехало ли в релиз лишнее: отладочная обработка, временный реквизит.
Версионирование: как нумеровать релизы
Номер версии в 1С хранится в свойстве Версия корня конфигурации. Платформа номер не проверяет, но на нём держится механизм обновления в конфигурациях на БСП: обработчики обновления привязываются к номеру версии и выполняются, когда база переходит через него.
Типовые конфигурации используют четыре числа, например 3.0.150.28. Для своих решений удобна та же схема:
| Позиция | Смысл | Когда растёт |
|---|---|---|
| 1-я | Редакция | Переработка архитектуры |
| 2-я | Подредакция | Крупный функционал, несовместимые изменения |
| 3-я | Версия | Новые возможности |
| 4-я | Сборка | Исправления ошибок |
Правила простые:
- номер только растёт, повторно один и тот же не используют;
- каждый выпущенный
.cfсохраняют в архив с номером в имени файла; - номер в свойстве
Версия, метка в хранилище и запись в журнале изменений совпадают.
Журнал изменений
Ведите CHANGELOG в простом формате: версия, дата, что добавлено и исправлено. Пример записи:
## [1.4.3] - 2026-05-20
### Добавлено
- Отчёт «Остатки по ячейкам» с отбором по складу.
### Исправлено
- Задвоение строк при копировании заказа с услугами.
### Требует действий
- После обновления заполнить новую константу «Склад по умолчанию».
Раздел «Требует действий» — самый ценный для того, кто обновляет базу. Без него новые настройки остаются пустыми, и пользователи узнают об этом из ошибок.
Сборка релиза: файлы поставки .cf и .cfu
Сборку делают из эталонной конфигурации, обновлённой до метки релиза.
Пошагово
- Проставьте номер в свойстве
Версияи выполнитеКонфигурация → Сохранить конфигурацию. - Откройте
Конфигурация → Поставка конфигурации → Настройка поставки. Здесь можно указать модули, которые поставляются без исходного кода, если вы защищаете часть разработки. - Вызовите
Конфигурация → Поставка конфигурации → Создать файлы поставки и обновления конфигурации. - Отметьте создание файла поставки (
.cf) и файла обновления (.cfu). - В список обновляемых конфигураций добавьте
.cfпрошлых версий, с которых клиенты будут переходить. Например,1.4.1.cfи1.4.2.cf. Один.cfuсможет обновить любую из них. - Нажмите «Выполнить» и проверьте, что оба файла появились в каталоге.
Комплект поставки для тиражных решений
Если решение ставят многим клиентам, удобнее комплект поставки с программой установки. Он раскладывает файлы в каталог шаблонов, обычно %APPDATA%\1C\1cv8\tmplts, и затем база создаётся из шаблона прямо в окне запуска. Описание комплекта (какие файлы, куда копировать) собирается в той же группе меню Поставка конфигурации.
Обновление рабочих баз: пошаговая инструкция
Перед обновлением рабочей базы сделайте резервную копию и убедитесь, что она разворачивается. Копия, которую ни разу не пробовали загрузить, копией не считается.
Ручное обновление через Конфигуратор
- Заблокируйте вход пользователей. Для клиент-серверной базы — в консоли кластера: свойства информационной базы, флажок блокировки начала сеансов и код разрешения. В конфигурациях на БСП то же делается из формы «Блокировка работы пользователей» в разделе администрирования.
- Предупредите людей заранее: при блокировке их сеансы будут завершены, несохранённые данные потеряются.
- Войдите в Конфигуратор, выполните
Администрирование → Выгрузить информационную базув.dt. Конфигурация → Поддержка → Обновить конфигурацию, выберите файл.cfu.- Разберите окно сравнения и объединения, нажмите «Выполнить».
Конфигурация → Обновить конфигурацию базы данных(F7). Примите изменения структуры.- Запустите базу в режиме 1С:Предприятие и дождитесь окончания обработчиков обновления.
- Снимите блокировку.
Параметры подключения для пакетного режима
Когда баз много, обновление запускают командной строкой. Основные параметры 1cv8.exe:
| Параметр | Что задаёт |
|---|---|
/F"путь" | Файловая база, путь к каталогу |
/S"сервер\база" | Клиент-серверная база |
/N"имя" и /P"пароль" | Пользователь с административными правами |
/UC"код" | Код разрешения, если включена блокировка сеансов |
/DisableStartupDialogs | Подавить диалоги при запуске |
/Out"файл" | Журнал выполнения |
Пример для серверной базы — резервная копия, затем обновление конфигурации и структуры:
set V8="C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe"
set IB=/S"srv1c\trade" /N"Админ" /P"***" /UC"REL143"
%V8% DESIGNER %IB% /DisableStartupDialogs /DumpIB "D:\backup\trade_before_1.4.3.dt" /Out "D:\logs\dump.log"
%V8% DESIGNER %IB% /DisableStartupDialogs /UpdateCfg "D:\release\1.4.3.cfu" /UpdateDBCfg /Out "D:\logs\update.log"
Путь к 1cv8.exe подставьте под свою версию платформы. После каждого шага смотрите журнал из /Out: при ошибке объединения или реструктуризации там будет текст причины.
Запуск в режиме обновления
Изменение структуры — ещё не конец. В конфигурациях на БСП данные под новую версию переводят обработчики обновления, и они выполняются при первом запуске в режиме 1С:Предприятие. В пакетном режиме этот запуск делают так:
%V8% ENTERPRISE %IB% /DisableStartupDialogs /C"ЗапуститьОбновлениеИнформационнойБазы;ЗавершитьРаботуСистемы" /Out "D:\logs\handlers.log"
Если пропустить этот шаг, обработчики запустит первый пользователь утром. Он увидит форму обновления и будет ждать, а при ошибке в обработчике — получит сообщение вместо рабочей базы.
Отложенные обработчики БСП продолжают работать фоном уже после входа пользователей. Проверить их состояние можно в разделе администрирования, в информации о результатах обновления программы.
Типичные ошибки при выпуске релиза
- ❌ Собрали
.cfuбез всех прошлых версий. Клиент на версии 1.4.0 получает сообщение, что файл обновления не подходит к его конфигурации. Лечится пересборкой с нужным.cfв списке. - ❌ Не подняли номер версии. Обработчики обновления, привязанные к новому номеру, не выполняются, новые поля остаются пустыми.
- ❌ Потеряли
.cfпрошлого релиза. Без него нельзя собрать обновление с этой версии. Достать его можно из хранилища по метке, если метку ставили. - ❌ Сняли объекты с поддержки у клиента «чтобы быстро поправить». Следующий релиз придётся объединять вручную по каждому такому объекту.
- ❌ Не замерили время реструктуризации. На копии с урезанными данными обновление заняло 5 минут, на рабочей базе — 2 часа, а окно было до 9 утра.
- ❌ Обработчик обновления падает на реальных данных. Например, ожидает заполненный реквизит, который в старых документах пустой. Отсюда правило тестировать на полной копии.
Документация и обратная связь по релизу
Код без описания — половина релиза. Для каждого выпуска готовьте три вещи.
- Журнал изменений для администратора: что поменялось и что сделать после обновления.
- Инструкция для пользователей: короткая, с упором на новые кнопки и изменившиеся формы. Пользователю не нужен список исправленных процедур.
- Канал обратной связи: куда писать об ошибках после выкладки и в какой срок ждать ответа.
Первые два-три дня после релиза держите в приоритете обращения по новой версии. Ошибки, найденные в это время, собирайте в исправительную сборку: 1.4.3 → 1.4.4, без нового функционала.
Храните рядом с каждым .cf журнал обновления тестовой базы и замер времени. При следующем выпуске это даёт реалистичный план окна простоя.
Частые вопросы о выпуске релизов
Чем файл .cf отличается от .cfu?
.cf — полная конфигурация, ею создают новую базу или загружают конфигурацию целиком. .cfu — файл обновления, он ставится поверх базы на поддержке и сохраняет доработки клиента через объединение.Можно ли обновить базу, пропустив несколько версий?
.cfu вы включили .cf той версии, на которой стоит клиент. Если не включили — обновляйте последовательно или пересоберите файл.Как откатить неудачный релиз?
.dt, сделанную перед обновлением. Возврат только конфигурации без данных опасен: обработчики обновления уже могли изменить данные под новую версию.