Как обновить доработанную конфигурацию 1С и не потерять свои изменения
Содержание
Доработанную 1С обновляют только через Конфигуратор: Конфигурация → Поддержка → Обновить конфигурацию, файл обновления .cfu или полный дистрибутив .cf, затем трёхстороннее сравнение и объединение. Автообновление из пользовательского режима для изменённой конфигурации не подходит: оно либо откажется работать, либо предложит выполнить обновление в Конфигураторе.
Главное правило — сначала прогнать обновление на копии базы. Доработки сохраняются, если каждый конфликт разобран руками, а не «взят из новой конфигурации поставщика» по умолчанию. Всё ниже относится к платформе 8.3 и типовым конфигурациям на БСП: БП 3.0, ЗУП 3.1, УТ 11, КА 2, ERP.
1. Подготовка: копия базы и опись доработок
Обновление доработанной базы ломается не на объединении, а раньше — когда никто не знает, что именно меняли. Поэтому подготовка состоит из двух частей.
Резервная копия
Сделайте две копии, они решают разные задачи:
- 💾 Выгрузка базы в
.dt—Администрирование → Выгрузить информационную базув Конфигураторе. Нужен монопольный доступ, все пользователи должны выйти. Для SQL-базы дополнительно сделайте полный бэкап средствами СУБД. - 📄 Конфигурация в
.cf—Конфигурация → Сохранить конфигурацию в файл. Это ваши доработки «в чистом виде». Из этого файла потом удобно сравнивать, что изменилось после объединения.
Без .dt и .cf к обновлению не приступайте. Откатить неудачное объединение без копии нельзя: «Отменить» в Конфигураторе после сохранения не работает.
Опись доработок
Откройте Конфигурация → Сравнить конфигурации. Слева выберите «Основная конфигурация», справа — «Конфигурация поставщика». Список покажет все объекты, которые отличаются от типовых. Сохраните отчёт о сравнении в файл.
Дальше выясните три вещи:
- 🔍 Режим поддержки.
Конфигурация → Поддержка → Настройка поддержки. Если конфигурация снята с поддержки полностью, команды «Обновить конфигурацию » не будет — обновлять придётся черезКонфигурация → Сравнить, объединить с конфигурацией из файла. - 🔍 Текущий релиз и путь до целевого. Номер версии видно в
Справка → О программе. Файл.cfuобновляет только с определённых релизов, их список указан в описании обновления. Промежуточные релизы пропускать нельзя, если не используете полный.cf. - 🔍 Расширения и внешние обработки.
Администрирование → Печатные формы, отчёты и обработкив пользовательском режиме. Их тоже придётся проверить после обновления.
2. Способы обновить конфигурацию с изменениями
Способ зависит от того, в каком состоянии поддержка и сколько релизов вы отстали.
| Способ | Когда подходит | Риски |
|---|---|---|
.cfu через Поддержка → Обновить конфигурацию | Конфигурация на поддержке с возможностью изменения, вы отстали на 1–3 релиза | Нужно пройти все промежуточные релизы по цепочке |
Полный дистрибутив .cf через ту же команду | Отстали сильно, .cfu с вашего релиза нет | Объединение крупнее, конфликтов больше |
Сравнить, объединить с конфигурацией из файла | Поддержка снята полностью | Нет «старой конфигурации поставщика» — объединение двухстороннее, всё сравнивается вручную |
| Вынос доработок в расширения, затем обновление как типовой | Доработок немного, логика укладывается в расширение | Разовая трудоёмкая работа, зато дальше обновление почти автоматическое |
Полный дистрибутив .cf берут из каталога шаблонов после установки обновления. Путь к каталогу задаётся при установке, по умолчанию это папка tmplts в профиле пользователя.
3. Пошаговое обновление 1С с сохранением доработок
Порядок для типичного случая: конфигурация на поддержке, есть .cfu, база тестовая (копия рабочей).
Шаг 1. Запуск обновления
- Откройте Конфигуратор и основную конфигурацию (
Конфигурация → Открыть конфигурацию). - Выберите
Конфигурация → Поддержка → Обновить конфигурацию. - Укажите «Выбор файла обновления» и файл
1cv8.cfuиз каталога нужного релиза. - Подтвердите, что новая конфигурация поставщика загружается.
Шаг 2. Трёхстороннее сравнение
Откроется окно сравнения трёх конфигураций:
- основная — ваша рабочая, с доработками;
- старая конфигурация поставщика — типовая того релиза, с которого обновляетесь;
- новая конфигурация поставщика — типовая целевого релиза.
Включите фильтр «Показывать только дважды изменённые свойства». Остальное — то, что меняли только вы или только фирма 1С, — объединяется без конфликта. Дважды изменённые объекты и есть ваша работа.
Шаг 3. Разбор конфликтов
Для каждого дважды изменённого объекта выберите режим объединения:
| Режим | Что произойдёт |
|---|---|
| Взять из новой конфигурации поставщика | Ваша доработка в этом объекте пропадёт |
| Объединить с приоритетом основной конфигурации | Изменения сольются, при конфликте останется ваш вариант |
| Объединить с приоритетом новой конфигурации поставщика | Изменения сольются, при конфликте победит типовой код |
| Не объединять | Объект останется как был у вас, новые типовые изменения не придут |
Для модулей откройте объединение по процедурам. Типовая ошибка — выбрать «Не объединять» для общего модуля целиком. Тогда в нём не будет новых процедур, а другие объекты новой версии их вызывают. Итог — ошибки «Процедура или функция с указанным именем не определена» при запуске.
Если вы правили одну строку в большой типовой процедуре, проще взять процедуру из новой конфигурации поставщика и заново вставить свою строку. Это быстрее и чище, чем вычитывать слияние.
Шаг 4. Формы
Управляемые формы объединяются хуже модулей. Если вы добавляли на форму реквизиты или элементы, сравните форму отдельно. Часто надёжнее взять форму у поставщика и добавить свои элементы заново, особенно если в новой версии фирма 1С перестроила форму.
Шаг 5. Применение и запуск
- Нажмите «Выполнить» в окне сравнения.
- Запустите
Конфигурация → Проверка конфигурациии исправьте синтаксические ошибки. - Выполните
Конфигурация → Обновить конфигурацию базы данных(F7). - Запустите базу в режиме 1С:Предприятие. Программа покажет диалог подтверждения легальности обновления и выполнит обработчики обновления данных. На больших базах это занимает от минут до часов.
Если обработчики упали с ошибкой, текст будет в журнале регистрации. Часто причина — доработанный объект, который обработчик не ожидал увидеть.
4. Новая платформа под новый релиз: что учесть
Каждый релиз типовой конфигурации требует минимальную версию платформы. Она указана в описании обновления. Если номер вашей платформы ниже требуемого, обновление конфигурации не загрузится.
Особенности при обновлении платформы:
- 🖥️ Клиент-сервер. Номер версии клиента и сервера 1С должен совпадать полностью. Сначала обновляете сервер, потом клиентов. Пока клиенты на старой версии, они не подключатся.
- 🖥️ Несколько версий рядом. Платформы 8.3 ставятся параллельно в отдельные каталоги. Старую не удаляйте, пока не проверили новую: можно быстро вернуться.
- 🖥️ Режим совместимости. Свойство конфигурации «Режим совместимости» в доработанных базах трогать не нужно. Его меняет фирма 1С в новых релизах, при объединении оно придёт из новой конфигурации поставщика.
- 🖥️ Внешние компоненты. После перехода платформы проверьте торговое оборудование и внешние компоненты, особенно в доработанном коде.
Остановка службы сервера 1С при обновлении платформы обрывает сеансы всех пользователей. Делайте это в нерабочее время и предупредите людей заранее.
5. Распределённые базы и облако: свой порядок
РИБ (распределённая информационная база)
Конфигурацию в РИБ меняют только в главном узле. Подчинённые узлы получают её через обмен.
- Обновите конфигурацию главного узла по шагам из раздела 3.
- Выполните обмен с подчинёнными узлами. Изменения конфигурации уйдут вместе с данными.
- В подчинённом узле после приёма обмена программа предложит обновить конфигурацию базы данных. Если узел работает без пользователя, это делают через Конфигуратор:
Конфигурация → Обновить конфигурацию базы данных.
Не меняйте конфигурацию в подчинённом узле напрямую. Главный узел затрёт эти изменения при следующем обмене, а сам обмен может остановиться с ошибкой о несовпадении конфигураций.
Перед обновлением главного узла добейтесь, чтобы все узлы приняли последние обмены. Иначе часть данных придётся догонять уже на новой структуре.
Облачные базы
В облаке (1С:Фреш, аренда у партнёра) конфигурацию обновляет провайдер. Доработки в основной конфигурации там обычно невозможны. Свои изменения держат в расширениях и внешних обработках. После очередного обновления провайдера проверяйте, что расширения подключились и работают.
Если базу арендуют у партнёра с доступом к Конфигуратору, порядок такой же, как для своей базы, но окно обновления согласуют с провайдером.
6. Ошибки при обновлении доработанной 1С
Здесь — проблемы, которые всплывают не на шагах, а после них.
- ❌ Обновили рабочую базу сразу. Конфликт в объединении всплыл в середине месяца, откатываться пришлось с
.dt, потеряли день ввода. Тестовая копия решает это полностью. - ❌ Доработки «исчезли» через полгода. При объединении выбрали «Взять из новой конфигурации поставщика» для объекта, где была правка. Сразу никто не заметил, потому что отчёт вызывают раз в квартал. Сравнивайте сохранённый перед обновлением
.cfс результатом. - ❌ Сняли поддержку с объекта целиком. Объект больше не обновляется, а соседние типовые объекты меняются. Через пару релизов база падает с ошибками. Снимайте поддержку точечно и только там, где без этого нельзя.
- ❌ Не проверили расширения. Расширение перехватывает процедуру, которую фирма 1С переименовала. Расширение после обновления отключается или выдаёт ошибку при подключении.
- ❌ Не записали, что меняли. Без описи доработок каждое обновление превращается в раскопки. Комментарий в коде с датой и автором правки экономит часы.
7. Автоматизация: пакетный режим и скрипты
Полностью автоматизировать обновление доработанной базы нельзя: конфликты объединения разбирает человек. Автоматизируют всё вокруг — копию, применение уже проверенной конфигурации и обновление структуры.
Схема для нескольких баз с одинаковыми доработками:
- Обновляете эталонную копию вручную, разбираете конфликты.
- Сохраняете результат в
.cf. - На рабочие базы этот
.cfзагружаете и применяете в пакетном режиме.
Пример bat-файла для файловой базы:
set V8="C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe"
set IB=/F"D:\Bases\Buh"
set USR=/N"Администратор" /P"пароль"
rem 1. Резервная копия в .dt
%V8% DESIGNER %IB% %USR% /DumpIB "D:\Backup\buh_before.dt" /Out "D:\Logs\dump.log"
rem 2. Загрузка проверенной конфигурации и обновление структуры
%V8% DESIGNER %IB% %USR% /LoadCfg "D:\Release\buh_merged.cf" /UpdateDBCfg /Out "D:\Logs\update.log"
Номер версии платформы в пути замените на свой. После скрипта всё равно запустите базу в пользовательском режиме, чтобы отработали обработчики обновления.
/LoadCfg полностью заменяет конфигурацию базы. Применяйте его только к базам, у которых доработки совпадают с эталоном. Иначе локальные правки этой базы пропадут.
Для серверных баз путь задают через /S"сервер\база". Перед запуском включите блокировку начала сеансов в Администрирование → Обслуживание или в консоли кластера — иначе пакетный режим не получит монопольный доступ. Блокировка выгонит работающих пользователей, поэтому включайте её после рабочего дня.
Для регулярной работы с десятками баз используют открытые инструменты на OneScript, например vanessa-runner. Они оборачивают те же ключи командной строки и добавляют логирование.
8. Проверка доработанной базы после обновления
Обновлённую копию проверяют до того, как трогать рабочую базу. Отмечайте пункты по мере проверки.
Сверка оборотно-сальдовой ведомости — самый честный тест. Сформируйте ОСВ за закрытый период до обновления и сохраните. После обновления сформируйте её снова с теми же настройками. Расхождение означает, что обработчики или доработки изменили данные.
Проверку прав делайте под обычным пользователем, а не под администратором. Новые объекты из релиза иногда не попадают в доработанные роли, и бухгалтер получает «Нарушение прав доступа» там, где у администратора всё открывается.
Когда копия прошла проверку, повторите обновление на рабочей базе тем же путём или загрузите проверенный .cf пакетным скриптом.