Доработанная конфигурация 1С: обновляем релиз и не теряем свои правки

· 10 мин

Содержание

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

Порядок одинаков для любой типовой конфигурации на платформе 8.3: Бухгалтерии, ЗУП, УТ, ERP. Различается только объём ручной работы. Пара доработанных отчётов уходит за полчаса. Переписанные проведение и общие модули могут занять день на тестовой копии.

Перед обновлением: копия базы и опись своих доработок

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

Две копии, а не одна

  1. Выгрузите базу целиком: Администрирование → Выгрузить информационную базу в Конфигураторе. Получится файл .dt с данными и конфигурацией.
  2. Отдельно сохраните конфигурацию: Конфигурация → Сохранить конфигурацию в файл. Файл .cf пригодится, если нужно будет быстро вернуть код без отката данных.
  3. Разверните .dt в новую пустую базу и обновляйте сначала её. Рабочую базу трогайте только после успешной проверки копии.

Для выгрузки .dt нужен монопольный доступ: пользователи должны выйти из базы. Планируйте выгрузку на вечер или выходной, иначе сеансы придётся завершать принудительно.

Опись изменений

Типичная беда при обновлении: никто не помнит, что и зачем дорабатывали. Получите список за пять минут:

  1. Выберите Конфигурация → Сравнить конфигурации.
  2. Слева укажите «Конфигурация поставщика», справа «Основная конфигурация».
  3. Нажмите «Выполнить» и сохраните отчёт о сравнении в файл.

В отчёте будут все объекты, где ваша версия отличается от типовой. По нему потом удобно сверяться, ничего ли не потерялось.

Версии и цепочка релизов

  • 🔢 Посмотрите текущий релиз в Справка → О программе.
  • 📄 Откройте описание нового релиза: там указано, с каких версий допустимо обновление и какой нужен номер платформы.
  • 🖥️ Если номер установленной платформы ниже требуемого, сначала обновите платформу на сервере и всех клиентах.

Файл обновления .cfu принимает только версии из своего списка. Полный .cf позволяет перескочить через несколько релизов, но конфликтов будет больше. При большом разрыве надёжнее идти по цепочке из описания релиза.

Как платформа обновляет изменённую конфигурацию

В базе хранятся две конфигурации поставщика: «Основная конфигурация» (с вашими правками) и «Конфигурация поставщика» (типовая версия, от которой вы отталкивались). Благодаря второй платформа знает, что поменяли вы, а что поменяла фирма 1С.

При обновлении сравниваются три состояния каждого объекта:

Кто менял объектЧто сделает платформа
Только поставщикВозьмёт новую версию автоматически
Только выОставит вашу версию
И вы, и поставщикПометит как дважды изменённый, решение за вами
Объект снят с поддержкиНе тронет, поставщик его больше не обновляет

Вся ручная работа сосредоточена в третьей строке. Чем меньше вы правили типовые объекты, тем короче обновление.

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

Режимы поддержки и обновления конфигурации 1С

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

У каждого объекта одно из трёх правил:

ПравилоМожно правитьОбновляется от поставщикаКогда выбирать
Объект поставщика не редактируетсяНетДа, полностьюОбъекты, которые не дорабатывали
Объект поставщика редактируется с сохранением поддержкиДаДа, с объединениемТочечные правки в типовых объектах
Объект поставщика снят с поддержкиДаНетОбъект переписан целиком, и типовые изменения не нужны

Правило «снят с поддержки» на всю конфигурацию лишает вас автоматического обновления. После этого единственный путь получать новые релизы — сравнение с файлом конфигурации, о нём ниже.

Как обновлять вашу базу?

Обновление конфигурации с изменениями пошагово

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

Шаг 1. Получите дистрибутив

Скачайте полный дистрибутив нового релиза и установите его шаблон: после установки в каталоге шаблонов появится файл 1Cv8.cf. Для доработанной конфигурации берите именно полный .cf, а не только .cfu: в нём новая типовая конфигурация целиком, и сравнение надёжнее.

Шаг 2. Запустите обновление

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

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

Шаг 3. Просмотрите дерево сравнения

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

Шаг 4. Выполните объединение

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

Шаг 5. Сохраните и обновите базу данных

  1. Нажмите F7 или выберите Конфигурация → Обновить конфигурацию базы данных.
  2. Изучите список реструктуризации: какие таблицы меняются.
  3. Подтвердите «Принять».

Для изменения структуры таблиц нужен монопольный доступ. В рабочей базе это значит: все пользователи вышли, фоновые задания остановлены.

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

Если база без доработок или все доработки в расширениях, обновление можно запускать из командной строки, без окна сравнения:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /UpdateCfg "D:\Distr\1Cv8.cfu" /UpdateDBCfg /Out "D:\Logs\update.log"

Для конфигурации с изменениями пакетный режим не подходит: конфликты нужно смотреть глазами.

Конфликты при объединении: как разобрать дважды изменённые объекты

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

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

Модули: решайте по процедурам

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

Рабочий приём такой:

  • 🟢 Процедуры, которые вы не трогали, берите из новой конфигурации поставщика.
  • 🟡 Процедуры с вашими вставками объединяйте с приоритетом поставщика, а затем вручную верните свою вставку по описи из первого раздела.
  • 🔴 Процедуры, целиком переписанные вами, оставляйте своими и сверьте, не изменились ли в типовой версии параметры вызова.

Свои вставки в типовой код помечайте комментариями-маркерами, например // +++ Иванов 12.03 доработка печати и // --- Иванов. При следующем обновлении такие куски находятся поиском за секунды.

Формы и макеты

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

Макеты печатных форм табличных документов не сливаются построчно. Здесь выбор простой: ваш макет или типовой.

Внешняя утилита сравнения

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

Выгрузка и загрузка: когда обновлять через файлы

Обновление через поддержку не единственный вариант. Ниже четыре файловые операции, которые легко перепутать.

ОперацияГде в КонфигуратореЧто делает с вашими изменениями
Загрузить конфигурацию из файлаКонфигурация → Загрузить конфигурацию из файлаЗаменяет конфигурацию целиком, доработки теряются
Сравнить, объединить с конфигурацией из файлаКонфигурация → Сравнить, объединить с конфигурацией из файлаОбъединяет по выбранным объектам, правки сохраняются
Сохранить конфигурацию в файлКонфигурация → Сохранить конфигурацию в файлДелает копию .cf, ничего не меняет
Выгрузить конфигурацию в файлыКонфигурация → Выгрузить конфигурацию в файлыСохраняет конфигурацию набором XML для систем контроля версий

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

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

Перенос доработок из тестовой базы

Тот же режим «Сравнить, объединить с конфигурацией из файла» подходит для переноса доработок. Сохраните .cf из базы разработки, загрузите сравнением в рабочую и отметьте флажками только нужные объекты. Остальные объекты рабочей базы останутся как есть.

Обновление конфигурации, подключённой к хранилищу

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

  1. Получите актуальную версию: Конфигурация → Хранилище конфигурации → Обновить конфигурацию из хранилища.
  2. Захватите корень конфигурации с отметкой «Рекурсивно». Корень нужен обязательно: изменение конфигурации поставщика и правил поддержки без него не выполнится.
  3. Выполните обновление через поддержку, как в пошаговом разделе, и разберите конфликты.
  4. Проверьте конфигурацию на ошибки (Конфигурация → Проверка конфигурации).
  5. Поместите изменения в хранилище с комментарием, например «Обновление до релиза 3.0.xxx».
  6. Остальные разработчики получают изменения из хранилища и обновляют свои базы данных.

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

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

Проверка после обновления и запуск базы

Объединение прошло без ошибок ещё не значит, что база работает. Порядок проверки:

  1. Запустите Конфигурация → Проверка конфигурации с флажками синтаксического контроля модулей и поиска ссылок на несуществующие объекты. Типичная находка после слияния: процедура с одним именем оказалась в модуле дважды.
  2. Откройте базу в режиме 1С:Предприятие. Запустятся обработчики обновления данных, дождитесь окончания.
  3. Посмотрите результаты обновления в разделе Администрирование → Обслуживание. Отложенные обработчики догоняют данные в фоне, иногда несколько часов.
  4. Пройдите по описи доработок: каждый изменённый отчёт, документ и печатную форму откройте и проверьте на реальном примере.
  5. Если есть расширения, убедитесь, что при запуске нет сообщений о том, что расширение не применено.
Перед переносом обновления в рабочую базу
Выполнено: 0 / 7

Рабочую базу обновляют так же, но без раздумий: правила объединения вы уже выбрали на копии. Удобный приём: после удачного обновления тестовой копии сохраните из неё .cf и в рабочей базе выполните Конфигурация → Сравнить, объединить с конфигурацией из файла, при этом конфликты уже разобраны.

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

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