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

· 10 мин

Содержание

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

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

Насколько изменена база и чем рискуете при обновлении

Начните с диагностики. Откройте Конфигуратор и посмотрите Конфигурация → Поддержка → Настройка поддержки. В окне видно, в каком режиме стоит конфигурация.

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

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

Что реально грозит при неаккуратном обновлении:

  • 🔥 Потеря доработок: объект взяли из новой поставки целиком, и ваш код исчез.
  • 🧩 Сломанные ссылки: разработчик переименовал или удалил процедуру, которую вызывает ваш код.
  • 📉 Ошибки в данных: обработчики обновления типового релиза не знают о ваших реквизитах и регистрах.
  • ⏳ Простой: обновление структуры большой базы занимает от десятков минут до нескольких часов, а пользователи в это время не работают.

Подготовка перед обновлением

  1. Сделайте выгрузку Администрирование → Выгрузить информационную базу… в файл .dt. Для серверной базы дополнительно — штатную резервную копию средствами СУБД.
  2. Сохраните текущую конфигурацию в файл: Конфигурация → Сохранить конфигурацию в файл…. Это ваша «основная» версия на случай отката.
  3. Разверните копию базы и обновляйте сначала её. Первое обновление нетиповой конфигурации в рабочей базе — плохая идея.
  4. Узнайте текущий релиз (Справка → О программе в режиме Предприятия) и цепочку релизов до нужного. Файл обновления .cfu подходит только для перечисленных в нём версий, через промежуточные релизы перепрыгнуть нельзя.
  5. Скачайте дистрибутивы нужных релизов и установите их в каталог шаблонов. По умолчанию это %APPDATA%\1C\1cv8\tmplts\1c\, там лежат 1cv8.cf (полная поставка) и 1cv8.cfu (обновление).

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

Способы обновить измененную конфигурацию

Выбор метода зависит от состояния базы и объёма правок.

МетодКогда подходитРиски и трудоёмкость
Перенос доработок в расширения, потом обычное обновлениеПравок немного, они точечныеРазовая работа, дальше обновления почти без ручного труда
Обновление с поддержкой (Обновить конфигурацию…)База на поддержке с возможностью измененияРазбор только дважды измененных объектов
Постановка на поддержку + обновлениеКонфигурация снята с поддержкиСамый трудоёмкий первый раз, далее как предыдущий
Перенос доработок в новую типовую вручнуюДокументации нет, правки старые и хаотичныеДолго, зато на выходе чистая база

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

Расширения вместо правки основной конфигурации

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

Что можно вынести в расширение:

  • ✅ новые отчёты, обработки, печатные формы;
  • ✅ новые реквизиты и табличные части у типовых документов и справочников;
  • ✅ изменения форм: поля, кнопки, команды;
  • ✅ правку поведения типовых процедур через аннотации &Перед, &После, &Вместо;
  • ✅ точечную правку кода внутри типовой процедуры через &ИзменениеИКонтроль (платформа 8.3.16 и новее).

Как переносить правки из нетиповой базы:

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

Пример перехвата: после записи документа нужно заполнить свой реквизит.

&После("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если Не Отказ И Не ЗначениеЗаполнено(Расш1_Ответственный) Тогда
        Расш1_Ответственный = Пользователи.ТекущийПользователь();
    КонецЕсли;
КонецПроцедуры

Аннотация &ИзменениеИКонтроль хороша тем, что после обновления платформа проверяет: если разработчик поменял исходную процедуру, расширение перестаёт применяться и сообщает об этом. Ошибку видно сразу, а не через месяц в отчётности.

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

Как объединить свои правки с новым релизом вручную

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

Обновление базы на поддержке

  1. Откройте копию базы в Конфигураторе, затем Конфигурация → Открыть конфигурацию.
  2. Выберите Конфигурация → Поддержка → Обновить конфигурацию….
  3. Укажите поиск в каталоге шаблонов или конкретный файл .cfu либо .cf следующего релиза.
  4. Откроется окно сравнения и объединения. Платформа сравнивает три версии: основную (вашу), старую конфигурацию поставщика и новую.
  5. Включите отбор дважды измененных свойств. Это объекты, которые поменяли и вы, и разработчик. Остальное платформа объединит сама.
  6. По каждому дважды измененному объекту выберите режим объединения.
  7. Нажмите Выполнить, затем F7 (Обновить конфигурацию базы данных) и примите изменения структуры.

Режимы объединения для конфликтного объекта:

РежимЧто произойдёт
Взять из новой конфигурации поставщикаВаши правки объекта исчезнут
Объединить с приоритетом основной конфигурацииСлияние; при конфликте остаётся ваша версия
Объединить с приоритетом новой конфигурации поставщикаСлияние; при конфликте побеждает поставщик
Не объединятьОбъект останется как у вас, обновления поставщика не придут

Для модулей откройте сравнение двойным щелчком и смотрите построчно. Процедуры, которые вы не трогали, берите от поставщика. Свои процедуры оставляйте. В процедурах, где правили обе стороны, переносите ваш фрагмент в новый текст поставщика руками.

«Не объединять» для модуля целиком — частая причина, почему через пару релизов база падает: типовой код вызывает новые процедуры, которых в вашем старом модуле нет.

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

Если поддержка снята, Обновить конфигурацию… не поможет. Порядок такой:

  1. Найдите полный 1cv8.cf ровно того релиза, на котором база сейчас (номер версии в свойствах корня конфигурации).
  2. Выберите Конфигурация → Сравнить, объединить с конфигурацией из файла… и укажите этот файл.
  3. На вопрос о постановке на поддержку ответьте утвердительно.
  4. В окне сравнения снимите все флажки объединения: вы не берёте ничего из файла, а только восстанавливаете связь с поставщиком. Ваши объекты должны остаться как есть.
  5. Выполните объединение. Конфигурация встанет на поддержку с возможностью изменения, и платформа увидит, что именно в ней отличается от типовой.
  6. Дальше обновляйте по шагам предыдущего подраздела, релиз за релизом.

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

Перед нажатием «Выполнить» в окне объединения
Выполнено: 0 / 5

Пакетное обновление и скрипты

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

Выгрузка и обновление типовой базы (или базы, где все доработки в расширениях):

set V8="C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe"
set IB=/F"D:\Bases\Buh"
set USR=/N"Администратор" /P""

%V8% DESIGNER %IB% %USR% /DumpIB "D:\Backup\buh_before.dt" /Out "D:\Logs\dump.log"
%V8% DESIGNER %IB% %USR% /UpdateCfg "D:\Tmplts\1cv8.cfu" /UpdateDBCfg /Out "D:\Logs\update.log"

Для серверной базы вместо /F укажите /S"сервер\имя_базы". Путь к платформе подставьте свой.

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

  • 📦 резервную копию /DumpIB и сохранение конфигурации /DumpCfg перед каждым шагом;
  • 🔁 прогон цепочки промежуточных релизов в тестовой копии, если доработки вынесены в расширения;
  • 🧪 запуск проверки конфигурации после объединения;
  • 📝 сбор логов /Out в одну папку, чтобы видеть, на каком релизе остановилось.

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

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

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

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

  1. Синтаксис. Конфигурация → Проверка конфигурации…, включите проверку логической целостности и синтаксиса модулей. Ошибки вида «процедура или функция не обнаружена» почти всегда указывают на место, где ваш код ссылается на изменённую типовую процедуру.
  2. Обработчики обновления. Запустите базу в режиме Предприятия. Типовая конфигурация выполнит обработчики обновления данных. Дождитесь завершения, включая отложенную обработку, её ход виден в разделе Администрирование в блоке обслуживания.
  3. Свои функции. Пройдите по списку доработок: каждая печатная форма, каждый свой отчёт, каждый реквизит. Если списка нет, отчёт сравнения с типовой из первого раздела и есть этот список.
  4. Цифры. Сформируйте оборотно-сальдовую ведомость за закрытый период до обновления и после. Суммы должны совпасть. Перепроведите тестовый документ каждого ключевого вида в копии.
  5. Обмены и интеграции. Запустите обмен с сайтом, банком, складом. Доработки обменов ломаются чаще всего.
  6. Пользователи. Дайте копию на день двум-трём ключевым пользователям.

Только после этого повторяйте те же шаги в рабочей базе в нерабочее время. Сохранённые настройки объединения и протокол действий из копии ускорят повтор.

Где обычно ломается и как это исправить

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

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

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

Можно ли обновлять нетиповую конфигурацию через интернет-поддержку в режиме Предприятия?
Только если основная конфигурация не изменена, а все доработки вынесены в расширения. Для конфигурации с правками обновление выполняют в Конфигураторе.
Сколько стоит обновление измененной конфигурации у франчайзи?
Ориентировочно от 1,5–3 тыс. рублей за один релиз при небольших правках и от нескольких часов работы программиста при серьёзных доработках. Точнее оценивают после отчёта сравнения с типовой.
Можно ли пропустить промежуточные релизы?
Через .cfu — нет, он подходит только к перечисленным в нём версиям. Через полный .cf нового релиза объединение возможно, но конфликтов будет больше и обработчики промежуточных версий придётся проверять внимательнее.
Что делать, если никто не знает, что изменено в базе?
Сравните конфигурацию с полной типовой того же релиза и сохраните отчёт. Это и есть перечень доработок, по нему же планируйте перенос в расширения.
Как часто обновлять нетиповую базу?
Хотя бы раз в квартал и обязательно перед сдачей отчётности по новым формам. Чем длиннее цепочка пропущенных релизов, тем дороже каждое следующее объединение.