Обновление нетиповой конфигурации 1С: слияние доработок с релизом
Содержание
Нетиповая конфигурация обновляется не «одной кнопкой». Релиз от фирмы «1С» нужно объединить с вашими доработками: программа сравнивает три версии конфигурации и просит вас решить, что делать с каждым конфликтом. Делается это в Конфигураторе, в меню Конфигурация → Поддержка → Обновить конфигурацию, и занимает от получаса до нескольких дней, в зависимости от объёма правок.
Если доработок мало и они аккуратные, обновление проходит почти автоматически. Если конфигурацию много лет правили прямо в типовых модулях, вручную придётся разбирать десятки объектов. Ниже порядок работы, который снижает риск потерять чужую работу или положить базу.
Что проверить, прежде чем запускать обновление
Сначала выясните, в каком состоянии находится конфигурация. От этого зависит, сколько времени уйдёт.
- ✅ Конфигурация на поддержке. Откройте
Конфигурация → Поддержка → Настройка поддержки. Если там написано, что конфигурация не на поддержке, слияние невозможно: обновление придётся делать через сравнение с эталонной базой или сначала восстанавливать связь с поставщиком. - ✅ Правила поддержки. В той же настройке видно, у каких объектов поставщика разрешено изменение. Объекты со снятой поддержкой обновлением не затрагиваются, объекты «с возможностью изменения» попадут в окно сравнения.
- ✅ Версия платформы. Релиз конфигурации требует определённой минимальной версии платформы. Номер указан в описании релиза. Если ваша платформа ниже, сначала обновите платформу, а уже потом конфигурацию.
- ✅ Файл обновления. Нужен либо файл
.cfu(обновление с предыдущей версии), либо дистрибутив с полной поставкой. Для релиза через несколько версий потребуются промежуточные обновления, по порядку.
Проверьте и расширения. Если часть доработок вынесена в расширения конфигурации , основная конфигурация обновляется чище: расширения не мешают слиянию. Но после обновления их придётся проверить отдельно, о чём ниже.
Обновляйте сначала копию базы, а не рабочую. Выгрузите информационную базу в .dt и разверните её на тестовом месте. Все конфликты разберите там, проверьте работу, и только потом повторяйте на рабочей.
Копии, которые нужны до начала
Два файла сохраните обязательно:
- Выгрузка базы целиком:
Администрирование → Выгрузить информационную базув Конфигураторе. Это страховка данных. - Выгрузка вашей текущей конфигурации в
.cf:Конфигурация → Сохранить конфигурацию в файл. Это точка возврата для самой конфигурации, с учётом доработок.
Если вы работаете в хранилище конфигурации, захватите корневой объект и забудьте про параллельную разработку на время слияния: пока вы обновляетесь, никто не должен править объекты.
Запуск обновления через Конфигуратор
Откройте базу в Конфигураторе. Монопольный доступ потребуется на этапе записи структуры в базу данных, поэтому лучше сразу попросить пользователей выйти.
Дальше:
- Меню
Конфигурация → Поддержка → Обновить конфигурацию. - В открывшемся окне выберите источник: «Поиск доступных обновлений» (программа найдёт установленные на компьютере релизы), «Выбор файла обновления» (указываете
.cfuили.cfсами) или «Поиск обновлений в Интернете», если настроена Интернет-поддержка. - Если у вас несколько релизов, программа покажет цепочку. Выберите целевой релиз и подтвердите.
- Нажмите «Готово». Платформа сравнит три конфигурации и откроет окно сравнения и объединения.
Как это выглядит на практике. Вы стоите на релизе 3.0.140, доработки сделаны на нём, обновляетесь на 3.0.150. Программа берёт:
- основную конфигурацию — ту, что у вас сейчас, с доработками;
- старую конфигурацию поставщика — чистый 3.0.140;
- новую конфигурацию поставщика — чистый 3.0.150.
Сравнивая старую и новую версии поставщика, программа понимает, что изменили в «1С». Сравнивая старую поставщика и вашу, понимает, что изменили вы. Конфликт возникает там, где правили оба.
Номера версий выше взяты для примера. Свою цепочку релизов смотрите в окне выбора обновления.
Как работать с окном сравнения и объединения
Это главная часть работы. В окне слева дерево объектов, справа таблица с режимами действий, внизу или сбоку видны два варианта модуля для сравнения.
Что означают режимы объекта
У каждого изменённого объекта стоит режим. Основные:
| Режим | Что произойдёт | Когда уместен |
|---|---|---|
| Взять из новой версии поставщика | Объект заменится на объект релиза, ваши правки в нём исчезнут | Вы не правили объект или правка больше не нужна |
| Оставить как в основной | Объект сохранится как есть, изменения релиза не применяются | Правка поставщика не нужна, а ваша критична |
| Объединить | Платформа смешает изменения обеих сторон | Правки в разных местах объекта |
| Не изменять | Объект остаётся без решения | Для объектов без отличий |
Программа заранее проставит режимы по умолчанию. Для объектов, которые вы не меняли, это «Взять из новой версии» — спорить не с чем. Для объектов с вашими правками платформа предложит объединение либо отметит конфликт.
Разбор конфликтов в модулях
Модули — самое хрупкое место. Откройте конфликтный модуль: платформа покажет изменённые фрагменты цветом. Дальше два пути:
- Фрагмент вашей правки и фрагмент поставщика не пересекаются — объединяйте без раздумий.
- Правки лежат в одной процедуре — читайте код обеих сторон и решайте руками. Часто поставщик переписал процедуру, и ваша вставка уже не к месту. Тогда берёте новую версию и переносите логику заново, уже в других точках.
Если доработка сделана, например, добавлением вызова собственной функции перед проведением документа, проверьте, не изменилась ли сигнатура процедуры в релизе. Параметры могли поменяться, а ваша вставка по-прежнему обращается к старым.
Формы и макеты
Для форм платформа умеет объединять изменения на уровне элементов, но результат всегда стоит открыть. Типичная история: поставщик перестроил форму, а ваш реквизит остался «висеть» в стороне. Откройте форму в Конфигураторе и посмотрите, где реквизит оказался.
Макеты печатных форм объединяются хуже всего: табличный документ сливается как целое. Если вы правили макет, а поставщик изменил печатную форму из-за новых требований, лучше взять новый макет и внести в него свои правки заново. Иначе в документе останутся устаревшие реквизиты.
Обновление структуры базы и обработчики обновления
Когда конфликты разобраны, нажмите кнопку подтверждения объединения. Конфигурация загрузится в конфигурацию базы. Но данные пока не затронуты: платформа спрашивает, обновлять ли конфигурацию базы данных.
Нажмите F7 или выберите Конфигурация → Обновить конфигурацию базы данных. Платформа перестроит таблицы, добавит новые реквизиты и удалит ненужные. Для этого нужен монопольный доступ. Если на сервере остались сеансы, будет сообщение, что монопольный режим не получен: завершите сеансы через консоль кластера или попросите пользователей выйти.
Не прерывайте обновление структуры. Особенно на большой базе: прерванная перестройка таблиц может оставить базу в неконсистентном состоянии. Если процесс завис, сначала узнайте по нагрузке на СУБД, идёт ли работа, и не торопитесь снимать задачу.
Потом запустите базу в обычном режиме 1С:Предприятия. Под пользователем с полными правами при первом входе включаются обработчики обновления, которые перенесут данные в новую структуру, пересчитают итоги и заполнят новые реквизиты. Дождитесь завершения: интерфейс покажет окно с ходом процесса.
Для больших баз обработчики часто выполняются в отложенном режиме. Пользователи уже работают, а фоновые задания ещё дообрабатывают данные. Проверить прогресс можно в разделе Администрирование — в списке есть пункт о ходе обработки данных, там видна очередь отложенных обработчиков.
Пока отложенные обработчики не завершились, часть отчётов может показывать неполные данные. Пусть главный бухгалтер не закрывает период в этот день.
Расширения и внешние обработки после обновления
Расширения конфигурации после обновления основной конфигурации проверьте отдельно. Платформа не переписывает их, но если поставщик переименовал или удалил объект, который расширение перехватывало, расширение перестанет работать или выдаст ошибку при запуске.
Что сделать:
- откройте базу в Конфигураторе, в списке расширений (
Конфигурация → Расширения конфигурации) посмотрите, нет ли предупреждений о некорректных ссылках; - обновите конфигурацию базы данных для расширений, если Конфигуратор просит;
- запустите типовые сценарии, где расширение вмешивается: проведение документов, печать, обмен.
Внешние обработки и печатные формы, подключённые через справочник дополнительных обработок, тоже могут сломаться. Обращаются они к объектам метаданных, а те в новом релизе иногда меняются.
Какие ошибки возникают чаще всего
Причины обычно в подготовке, а не в самой платформе.
.cf вашей версии), либо перенос доработок в чистую базу нового релиза.Правка → Найти по тексту модулей и исправьте.Проверка работоспособности после обновления
Недостаточно увидеть, что база открылась. Проверьте то, на чём держится ваш учёт.
- Доработки. Пройдите по каждой нетиповой функции: нестандартный отчёт, добавленный реквизит, обмен. Список доработок у хорошей компании хранится в техдокументации. Если его нет, составьте по списку изменённых объектов в окне поддержки (
Конфигурация → Поддержка → Настройка поддержки, показать объекты с правками). - Основные документы. Создайте и проведите по одному документу каждого вида, который используется ежедневно. Сравните проводки с теми, что формировались до обновления.
- Печатные формы. Распечатайте счёт, накладную, платёжное поручение. Особенно если макеты правились.
- Обмены. Запустите обмен с банком, сайтом, другой базой. Правила обмена могли зависеть от структуры объектов.
- Регламентные задания. В
Администрированиепроверьте, что задания запускаются и не падают. - Права и роли. Новые объекты релиза не входят в ваши кастомные роли. Если у пользователей нет доступа к новому разделу, добавьте права.
Когда всё сходится, повторите процедуру на рабочей базе: те же шаги, но с готовым решением по конфликтам. Если вы работали в хранилище, на рабочей базе удобнее загрузить из хранилища готовую объединённую конфигурацию, а не разбирать конфликты второй раз. Объединённую конфигурацию можно также сохранить в .cf и загрузить в рабочую базу командой Конфигурация → Загрузить конфигурацию из файла, затем обновить конфигурацию базы данных. Но поддержка при такой загрузке сохраняется только в том случае, если файл получен из конфигурации, уже стоящей на поддержке.
Когда лучше не слияние, а перенос доработок
Бывает, что разбор конфликтов дороже, чем начать заново. Признаки:
- изменено больше половины типовых объектов;
- доработки сделаны «в лоб», без комментариев и без списка;
- конфигурация отстала от текущего релиза на много версий, и промежуточных обновлений нет.
Тогда разумнее развернуть чистую конфигурацию последнего релиза и перенести в неё только нужное, оформив правки расширением. Данные переносятся выгрузкой и загрузкой или обменом. Такой путь дольше на старте, зато следующие обновления проходят без слияния.
Частые вопросы
Можно ли обновить нетиповую конфигурацию без Конфигуратора?
Сколько времени занимает обновление доработанной базы?
Нужно ли обновлять конфигурацию по всем промежуточным релизам?
.cfu рассчитаны на переход с определённой версии, поэтому при большом разрыве потребуется цепочка обновлений. Конкретику смотрите в описании релиза.Что будет с расширениями, если обновить основную конфигурацию?
Можно ли откатить обновление?
.dt или резервной копии СУБД. Саму конфигурацию можно вернуть из сохранённого .cf, но если структура базы уже обновлена, возвращать без данных нельзя.