Доработанная база и новый релиз: слияние без потери правок

· 9 мин

Содержание

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

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

Подготовка: копии базы и проверка состояния поддержки

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

  1. 💾 Выгрузка базы в .dt. В Конфигураторе: Администрирование → Выгрузить информационную базу. Для выгрузки нужен монопольный доступ, поэтому пользователей попросите выйти заранее.
  2. 📦 Файл текущей конфигурации .cf. Конфигурация → Сохранить конфигурацию в файл. Этот файл пригодится, если слияние пойдёт не так и надо будет вернуть только конфигурацию, без данных.
  3. 📂 Дистрибутив нового релиза. Файл 1cv8.cf или 1cv8.cfu из папки шаблонов. Проверьте, с какой версии он обновляет: это написано в описании поставки.

Теперь диагностика. Откройте Конфигурация → Поддержка → Настройка поддержки. В окне видно три вещи:

  • 🔍 версия поставщика — номер релиза, на котором стоит база сейчас;
  • 🔍 разрешены ли изменения — без этого доработки внести было нельзя, значит, они уже есть;
  • 🔍 правила для объектов — какие объекты редактируются с сохранением поддержки, а какие сняты с неё.

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

Запишите номер текущего релиза. Типовые конфигурации нельзя перепрыгнуть с любого релиза на любой: файл .cfu содержит список версий, с которых он обновляет. Если вашей версии там нет, понадобится промежуточный релиз или полный .cf.

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

Выбор способа обновления: замена, слияние или расширения

Сравнение трёх вариантов на одной таблице.

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

Полная замена делается через Конфигурация → Загрузить конфигурацию из файла. Эта команда стирает все изменения основной конфигурации без вопросов. Её применяют, когда от доработок решили отказаться. Например, отчёт, который когда-то добавили в типовую, теперь есть в стандартной поставке.

Слияние — основной сценарий, ему посвящена большая часть дальнейшего текста.

Расширения появились в платформе 8.3.6 и сейчас считаются нормой для доработок. Новый реквизит, своя печатная форма, перехват процедуры типового модуля — всё это можно держать в файле .cfe. Основная конфигурация тогда остаётся типовой и обновляется без сравнения.

Какой у вас случай?

Обновление нетиповой конфигурации пошагово: слияние в Конфигураторе

Все шаги ниже выполняются на копии базы. Разверните выгрузку .dt в новую файловую базу через Администрирование → Загрузить информационную базу и работайте там.

Шаг 1. Запуск обновления

  1. Откройте Конфигурация → Поддержка → Обновить конфигурацию.
  2. Выберите «Выбор файла обновления» и укажите 1cv8.cf или 1cv8.cfu нового релиза.
  3. Платформа прочитает файл и покажет, какой релиз будет установлен.

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

Шаг 2. Окно сравнения и объединения

Откроется дерево объектов с тремя колонками сравнения: основная конфигурация, старая конфигурация поставщика, новая конфигурация поставщика. Цветом и значками отмечены объекты, изменённые с одной или с обеих сторон.

Самое важное — фильтр «Показывать только дважды изменённые свойства». Дважды изменённые — это объекты, которые правили и вы, и фирма 1С. Только там и возникают конфликты. Всё остальное платформа объединит сама.

Шаг 3. Режимы объединения

Для каждого дважды изменённого объекта выбирается режим:

  • 🟢 «Взять из новой конфигурации поставщика» — ваши правки в объекте пропадут. Подходит, если доработка устарела.
  • 🟡 «Объединить с приоритетом основной конфигурации» — при совпадении изменений побеждает ваш вариант.
  • 🟡 «Объединить с приоритетом новой конфигурации поставщика» — при совпадении побеждает типовой вариант, ваши отдельные добавления остаются.
  • 🔴 «Не объединять» — объект остаётся как был. Опасно: остальная конфигурация обновится, а этот объект — нет, и они могут перестать стыковаться.

Для модулей режим удобнее задавать не целиком, а по процедурам. Откройте сравнение модуля, и для каждой процедуры можно указать, чью версию брать.

Шаг 4. Правила поддержки для новых объектов

Перед кнопкой «Выполнить» платформа спросит, какие правила поддержки назначить объектам. Для доработанных объектов оставьте «Объект поставщика редактируется с сохранением поддержки». Тогда следующие обновления снова пойдут через трёхстороннее сравнение. Вариант «снят с поддержки» превращает объект в чисто ваш, и новые изменения поставщика в него больше не придут.

Шаг 5. Сохранение и обновление структуры

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

Конфликты при объединении и ручная доработка кода

Объединение модулей — место, где обновление чаще всего ломается. Автоматическое слияние текстов работает по строкам. Оно не понимает смысла кода и может собрать процедуру, которая формально компилируется, но делает не то.

Что делать с типичными конфликтами:

  • ⚔️ Вы и 1С изменили одну процедуру. Возьмите новую типовую версию и заново впишите в неё свою вставку. Так надёжнее, чем доверять автоматике.
  • ⚔️ Вы добавили объект, а в новом релизе появился объект с тем же именем. Платформа не даст их совместить. Переименуйте свой объект до обновления и поправьте ссылки на него.
  • ⚔️ Процедура, которую вы дорабатывали, удалена или переименована поставщиком. Найдите, куда переехала логика, и перенесите правку туда. Слепое «Не объединять» оставит мёртвый код.
  • ⚔️ Изменена форма. Объединение форм идёт по элементам. Проверьте, что ваши поля и кнопки не потеряли привязку к командам и реквизитам.

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

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

Отдельно проверьте расширения, если они есть. Расширение перехватывает процедуры по именам. Если в новом релизе процедуру переименовали, расширение перестанет применяться, и при запуске пользователь увидит ошибку. Откройте каждое расширение в Конфигураторе и выполните для него ту же проверку.

Если конфигурация снята с поддержки

Так бывает после старых доработок: кто-то когда-то полностью снял поддержку, чтобы править быстрее. Кнопка обновления через поставку в этом случае недоступна. Вернуть базу на поддержку можно без потери правок.

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

После этого конфигурация снова знает, какая типовая версия лежит в её основе. Отличия станут видны как ваши доработки. Дальше обычное обновление через поставку.

Если .cf нужного релиза нет, а взять релиз «примерно такой же», сравнение покажет тысячи ложных отличий. Найдите точный релиз: в архиве дистрибутивов или на портале обновлений по подписке ИТС.

Тестирование обновлённой базы и отладка ошибок

Копия обновлена и проверена Конфигуратором. Теперь запустите её в режиме 1С:Предприятие под пользователем с полными правами. При первом запуске программа выполнит обработчики обновления данных. Часть из них отложенная: она идёт в фоне уже после входа пользователей.

Что прогнать на копии вручную:

  • ✅ проведение ключевых документов: реализация, поступление, начисление зарплаты, если она ведётся в этой базе;
  • ✅ ваши доработанные печатные формы и отчёты;
  • ✅ внешние обработки и обмены с другими базами;
  • ✅ закрытие месяца на тестовом периоде, если доработки касались учёта затрат.

Ошибки при этом прогоне делятся на несколько знакомых типов.

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

Для поиска места ошибки удобен журнал регистрации: Администрирование → Журнал регистрации в Конфигураторе. Отбор по уровню «Ошибка» за время теста сразу отсекает лишнее.

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

Когда копия работает, у вас два способа перенести результат.

Способ 1. Повторить слияние в рабочей базе. Вы уже знаете все конфликты и решения, второй проход быстрее. Подходит, если в рабочей базе за время тестов кто-то правил конфигурацию.

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

Порядок в день обновления:

  1. Предупредите пользователей и назначьте время: реструктуризация требует монопольного доступа, все сеансы будут завершены.
  2. Сделайте свежую выгрузку .dt рабочей базы — данные изменились с момента создания копии.
  3. Загрузите или объедините конфигурацию.
  4. Выполните Обновить конфигурацию базы данных и дождитесь реструктуризации.
  5. Войдите в 1С:Предприятие под администратором и дождитесь окончания обработчиков обновления.
  6. Пустите пользователей и в первые дни следите за журналом регистрации.

На клиент-серверной базе не используйте динамическое обновление для такого объёма изменений. Оно оставляет у работающих пользователей старую версию конфигурации до перезахода, и ошибки становятся непредсказуемыми.

Перед тем как пустить пользователей
Выполнено: 0 / 5

Частые вопросы

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