Как обновить типовую конфигурацию, если база подключена к хранилищу

· 10 мин

Содержание

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

Частая ошибка — обновить рабочую базу обычным .cfu мимо хранилища. Сегодня это работает, а через месяц разработчики помещают свои правки, и рабочая конфигурация расходится с хранилищем. Порядок ниже держит одну версию правды — хранилище — и подходит для БП 3.0, ЗУП 3.1, УТ 11, КА и ERP: шаги в Конфигураторе платформенные и от конфигурации не зависят.

Схема: какие базы участвуют и что с каждой делать

В типичной команде баз несколько. Перед обновлением выпишите их и роли — от этого зависит, где и что нажимать.

БазаПодключена к хранилищуЧто делаем при обновлении
База разработки (её может быть несколько — по одной на разработчика)ДаВ одной из них обновляем типовую конфигурацию и помещаем результат в хранилище. Остальные получают изменения из хранилища
Тестовая база (копия рабочей)Обычно нетЗагружаем .cf из хранилища, проверяем обновление на реальных данных
Рабочая базаЧаще нет, иногда даЗагружаем тот же .cf или получаем версию из хранилища, затем обновляем конфигурацию БД
Само хранилище—Делаем копию до начала, ставим метку версии

💡 Обновление делает один человек в одной базе разработки. Если два разработчика одновременно начнут обновлять типовую каждый у себя, второй не сможет захватить корень, а при попытке объединить вручную получится каша.

Перед обновлением: копии базы и хранилища, договорённость с командой

Подготовка здесь шире, чем при обычном обновлении. Копировать нужно не только базы, но и само хранилище.

Копия хранилища

Хранилище — это каталог с файлом 1cv8ddb.1CD и служебными подкаталогами. Скопируйте каталог целиком.

  1. Если хранилище работает через сервер хранилища (crserver), остановите его службу. ⚠️ Все разработчики потеряют связь с хранилищем — предупредите их заранее, копирование займёт минуты.
  2. Скопируйте весь каталог хранилища в отдельное место.
  3. Запустите службу обратно.

Для файлового хранилища на общей папке достаточно убедиться, что никто не помещает изменения, и скопировать каталог.

Копии баз

  • 📦 Рабочая база — выгрузка .dt (Администрирование → Выгрузить информационную базу в Конфигураторе) или резервная копия средствами СУБД.
  • 📦 База разработки — тоже .dt. Она хранит локальные незафиксированные изменения, которых ещё нет в хранилище.
  • 📦 Текущая конфигурация рабочей базы — Конфигурация → Сохранить конфигурацию в файл. Это быстрый путь отката конфигурации без восстановления данных.

Договорённость с командой

До начала все разработчики помещают свои изменения в хранилище и снимают захваты. Иначе вы не захватите корень. Удобно объявить «окно обновления» на полдня и в это время ничего не помещать.

Поставьте метку на текущую версию: в окне Конфигурация → Хранилище конфигурации → История хранилища выделите последнюю версию и установите метку, например «До обновления 3.0.xxx». По метке потом легко найти точку возврата.

Скачайте заранее все промежуточные .cfu. Файл обновления подходит только к определённым предыдущим релизам. Если вы отстали на несколько версий, придётся проходить цепочку, и каждое звено — отдельный цикл «обновил → поместил».

Платформа, сервер хранилища и Конфигуратор: обновить в одну версию

Новые релизы типовых требуют платформу не ниже определённой версии — номер указан в описании релиза. С хранилищем есть лишняя деталь: обновлять придётся не только клиентов и сервер 1С, но и сервер хранилища.

Порядок обновления платформы

  1. Установите новую версию платформы на компьютеры разработчиков и на сервер, где работает crserver.
  2. На сервере 1С:Предприятия обновите сервер до той же версии. ⚠️ При перезапуске службы агента сервера оборвутся все пользовательские сеансы — делайте это в нерабочее время.
  3. Перерегистрируйте службу сервера хранилища на новую версию: удалите службу старой версии и зарегистрируйте crserver.exe из каталога bin новой платформы с тем же портом и каталогом хранилищ. Порт по умолчанию — 1542. Точные ключи регистрации смотрите в справке crserver своей версии.
  4. Запустите службу и подключитесь к хранилищу из Конфигуратора новой версии.

Клиент Конфигуратора и сервер хранилища должны работать на одной версии платформы. Разработчик, который остался на старой версии, при подключении получит ошибку несовпадения версий. Это нормально: просто обновите ему платформу.

Конвертация хранилища

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

Если хранилище опубликовано через веб-сервер (http://…), публикацию тоже нужно перевести на модуль новой версии платформы. Иначе клиенты будут упираться в версию веб-расширения.

Обновление типовой конфигурации в хранилище: захват корня и помещение

Это главный этап. Он выполняется в базе разработки, которая подключена к хранилищу.

Шаг 1. Получите актуальную версию

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

Шаг 2. Захватите корень рекурсивно

В дереве конфигурации щёлкните правой кнопкой по корневому узлу (имя конфигурации) и выберите Захватить в хранилище. В окне захвата отметьте флажок Рекурсивно.

Захват всей конфигурации нужен потому, что обновление поставщика может затронуть любой объект. Платформа не даст запустить обновление, пока захвачено не всё.

Если захват не проходит, откройте окно хранилища (Конфигурация → Хранилище конфигурации → Открыть хранилище) и посмотрите, кто держит объекты. Попросите коллегу поместить изменения или отменить свой захват.

Шаг 3. Обновите конфигурацию из .cfu

  1. Конфигурация → Поддержка → Обновить конфигурацию.
  2. Укажите файл обновления .cfu или каталог с шаблонами.
  3. Если конфигурация дорабатывалась, откроется окно сравнения и объединения. Просмотрите объекты, изменённые и у вас, и у поставщика. Для таких объектов выберите режим объединения осознанно: по умолчанию берутся изменения поставщика, а ваши доработки могут потеряться.
  4. Нажмите Выполнить и дождитесь окончания.

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

Шаг 4. Обновите конфигурацию базы данных разработки

Нажмите F7 (Конфигурация → Обновить конфигурацию базы данных). Это проверка: если реструктуризация упала здесь, она упадёт и в рабочей базе. Запустите базу в режиме 1С:Предприятие и дождитесь выполнения обработчиков обновления.

Шаг 5. Поместите изменения в хранилище

  1. Конфигурация → Хранилище конфигурации → Поместить изменения в хранилище.
  2. Проверьте, что отмечены все объекты. Снимите флажок Оставить объекты захваченными, если он включён.
  3. В комментарии напишите номер релиза: «Обновление БП с 3.0.xxx на 3.0.yyy». Через полгода вы скажете себе спасибо.

Не прерывайте помещение. Для крупных конфигураций вроде ERP оно идёт долго: изменены тысячи объектов. Помещайте с компьютера в той же локальной сети, что и сервер хранилища, а не по медленному VPN.

После помещения поставьте новую метку версии. Остальные разработчики выполняют Обновить конфигурацию из хранилища и F7 в своих базах.

Перенос обновления в рабочую базу

Рабочую базу обновляют той же версией, что лежит в хранилище. Есть два варианта.

Вариант А. Рабочая база не подключена к хранилищу (так безопаснее)

  1. В базе разработки сохраните конфигурацию хранилища в файл: Конфигурация → Хранилище конфигурации → Сохранить конфигурацию хранилища в файл. Альтернатива — Конфигурация → Сохранить конфигурацию в файл из базы разработки, если она совпадает с хранилищем.
  2. Сначала прогоните этот .cf на тестовой копии рабочей базы.
  3. В рабочей базе установите монопольный режим: попросите пользователей выйти, при необходимости заблокируйте начало сеансов. ⚠️ Принудительное завершение сеансов оборвёт работу пользователей без сохранения.
  4. В Конфигураторе: Конфигурация → Загрузить конфигурацию из файла и укажите .cf.
  5. Согласитесь на обновление конфигурации базы данных и примите изменения структуры.
  6. Запустите базу в режиме 1С:Предприятие под администратором и дождитесь окончания обработчиков обновления.

Загрузка из файла полностью заменяет конфигурацию. Если в рабочей базе есть правки, которых нет в хранилище, они пропадут. В таком случае вместо загрузки используйте Конфигурация → Сравнить, объединить с конфигурацией из файла и перенесите эти правки осознанно — а лучше сначала положите их в хранилище.

Вариант Б. Рабочая база подключена к хранилищу

  1. Пользователи выходят, база в монопольном режиме.
  2. Конфигурация → Хранилище конфигурации → Обновить конфигурацию из хранилища.
  3. F7, принять реструктуризацию.
  4. Запуск в режиме 1С:Предприятие, обработчики обновления.

Вариант удобен, но рискован: любой разработчик может положить в хранилище недоделку, и при следующем «Обновить из хранилища » она уедет в рабочую базу. Если пользуетесь этим вариантом, получайте из хранилища конкретную версию по метке, а не последнюю.

Сравнение вариантов

СпособКогда подходитРиски
Загрузка .cf из хранилищаРабочая база отдельно от разработки, есть тестовый контурЗатирает локальные правки рабочей базы
Сравнение-объединение с .cfВ рабочей базе есть срочные правки вне хранилищаДолго, нужна внимательность при объединении
Обновление из хранилищаНебольшая команда, дисциплина с меткамиВ рабочую базу попадает всё, что лежит в хранилище
.cfu прямо в рабочую базуНе подходитРабочая база расходится с хранилищем

Расширения после обновления

Если в базе есть расширения, после обновления проверьте, что они применились. В БП 3.0 список открывается через Администрирование → Печатные формы, отчеты и обработки → Расширения. Расширение, которое изменяло переименованный или удалённый поставщиком объект, перестанет подключаться — его нужно поправить в Конфигураторе и обновить отдельно. Загрузка .cfe и обновление конфигурации БД — два отдельных шага.

Ошибки при обновлении с хранилищем и проверка результата

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

Что проверить после обновления

  • ✅ Номер релиза в Справка → О программе совпадает с ожидаемым во всех базах: разработки, тестовой, рабочей.
  • ✅ В истории хранилища есть новая версия с комментарием и меткой.
  • ✅ Обработчики обновления завершились — при входе нет окна с незавершённой обработкой данных.
  • ✅ Типовые сценарии работают: проведите пару документов, сформируйте оборотно-сальдовую ведомость, откройте печатные формы.
  • ✅ Расширения и внешние обработки подключаются без ошибок.
  • ✅ Обмены с другими базами (РИБ, обмен с ЗУП, интеграции) проходят. Обновление одной стороны обмена иногда требует обновить и другую.

Если что-то сломалось и быстро не чинится — откатывайте конфигурацию рабочей базы из сохранённого .cf, а данные — из .dt или копии СУБД. Хранилище в этом случае не трогайте: разберитесь в базе разработки и поместите исправление новой версией.

Частые вопросы об обновлении базы с хранилищем

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