Обновление нетиповой конфигурации 1С без потери доработок
Содержание
Доработанную конфигурацию 1С обновляют в Конфигураторе через Конфигурация → Поддержка → Обновить конфигурацию: вы указываете файл .cf или .cfu новой версии, платформа сравнивает три конфигурации, а вы решаете по каждому изменённому объекту, чья версия остаётся. Потом выполняете Обновить конфигурацию базы данных (F7) и запускаете программу, чтобы отработали обработчики обновления.
Автообновление из режима «Предприятие» здесь не поможет: оно работает только для типовых конфигураций на полной поддержке. Как только в объекты поставщика внесены правки, обновить базу без ручного объединения нельзя. Доработки при этом сохраняются, если соблюдать порядок шагов и разбирать конфликты осознанно.
Подготовка базы и резервные копии перед обновлением
Начните с проверки, в каком состоянии конфигурация. Откройте Конфигурация → Поддержка → Настройка поддержки. В окне видно:
- 📌 версию поставщика, на которой сейчас стоит база;
- 🔒 режим поддержки: «на поддержке», «с сохранением поддержки» (объекты редактируются, но поставщик учитывается) или «снята с поддержки»;
- 🧩 список объектов с их правилами поддержки.
Если конфигурация снята с поддержки полностью, обычное обновление не сработает. Этот случай разобран в разделе про конфликты.
Что сохранить до первого шага
Обновление доработанной базы делайте только после резервной копии и сначала на тестовой копии. Сохраните три вещи:
- Выгрузку базы:
Администрирование → Выгрузить информационную базув Конфигураторе. Получится файл.dt— полная копия с данными. - Текущую конфигурацию:
Конфигурация → Сохранить конфигурацию в файл. Файл.cfс вашими доработками пригодится для сравнения, если что-то пойдёт не так. - Отчёт о доработках:
Конфигурация → Сравнить конфигурации, слева основная, справа конфигурация поставщика. Сохраните отчёт о сравнении в файл. Это список всех ваших изменений до обновления — по нему потом проверяют, ничего ли не пропало.
Проверьте цепочку версий и платформу
Файлы обновления .cfu накатываются только с определённых версий. В описании каждого обновления перечислено, с каких релизов на него можно перейти. Если ваша версия старше, придётся пройти несколько промежуточных обновлений по очереди.
| Файл | Когда подходит | Особенность |
|---|---|---|
.cfu (файл обновления) | Ваша текущая версия есть в списке поддерживаемых | Меньше по размеру, но строгий к версии |
.cf (полный дистрибутив) | Нужно перескочить через несколько версий или нет подходящего .cfu | Объединение крупнее, конфликтов больше |
У нового релиза есть требование к минимальной версии платформы. Сравните номер установленной платформы (Справка → О программе) с требованием: он должен быть не ниже указанного в описании релиза. Платформу обновляйте до обновления конфигурации.
Перед загрузкой обновления выгоните пользователей из базы и запретите вход на время работ. Для обновления структуры базы нужен монопольный режим — при активных сеансах платформа его не получит, а принудительное завершение сеансов оборвёт работу людей без сохранения.
Загрузка обновления и выбор режима сравнения
Запустите Конфигуратор под пользователем с правами администратора и откройте конфигурацию (Конфигурация → Открыть конфигурацию).
- Выберите
Конфигурация → Поддержка → Обновить конфигурацию. - Укажите «Выбор файла обновления» и найдите
.cfили.cfu. Если шаблоны обновлений установлены в каталог по умолчанию, можно выбрать «Поиск доступных обновлений» — платформа покажет подходящие. - Платформа проверит файл. Если появилось сообщение
Файл не содержит доступных обновлений, значит, текущая версия поставщика не входит в список, с которого этот.cfuумеет обновлять. Нужен промежуточный релиз или полный.cf. - Откроется окно сравнения и объединения.
Как читать окно сравнения
В окне участвуют три конфигурации:
- 🟦 старая конфигурация поставщика — типовая версия, на которой стоит база;
- 🟩 основная конфигурация — ваша, с доработками;
- 🟨 новая конфигурация поставщика — то, что пришло в обновлении.
Самое важное — объекты, изменённые и у вас, и у поставщика. Включите фильтр отображения дважды изменённых свойств: список сократится с тысяч объектов до десятков. Остальное платформа объединит сама — если объект меняли только в новой версии, он просто берётся оттуда.
Перед нажатием «Выполнить» сохраните настройки объединения в файл через меню окна сравнения. Если объединение придётся откатить и повторить, не нужно будет заново расставлять решения по каждому объекту.
Разбор конфликтов и ручное слияние доработок
Для каждого дважды изменённого объекта задайте порядок объединения. Смысл вариантов:
| Решение | Когда выбирать | Риск |
|---|---|---|
| Взять из новой конфигурации поставщика | Ваша правка устарела или поставщик сделал то же самое | Доработка пропадёт |
| Объединить с приоритетом основной конфигурации | Доработка важнее, типовые изменения второстепенны | Могут не попасть исправления ошибок поставщика |
| Объединить с приоритетом поставщика | Нужны все типовые изменения, доработку сохранить где возможно | Часть доработки может перезаписаться |
| Не объединять (оставить основную) | Объект полностью ваш, типовые изменения не нужны | Объект «отстанет» от версии |
Модули: объединение по процедурам
Модули — главный источник проблем. Для модуля откройте сравнение и настройте объединение по процедурам и функциям. Это даёт точный контроль:
- Процедуры, которые трогали только вы, оставьте из основной конфигурации.
- Процедуры, которые менял только поставщик, возьмите из новой конфигурации.
- Процедуры, изменённые обеими сторонами, разбирайте вручную: откройте обе версии рядом и перенесите вашу вставку в новый типовой код.
Приём практиков: свои вставки в типовой код помечают комментариями вида // +Доработка Иванов 12.03 и // -Доработка. При объединении такие блоки видно сразу, и их легко перенести в новый текст процедуры.
Формы и макеты
Формы объединяются по элементам, но сложные изменения формы платформа сливает хуже, чем модули. Если вы добавили на типовую форму пару полей, часто проще взять форму поставщика и добавить поля заново. Для макетов печатных форм действует то же правило: изменённый макет либо оставляют свой, либо переносят правки в новый вручную.
Ссылки на неотмеченные объекты
После нажатия «Выполнить» платформа может сообщить, что отмеченные объекты ссылаются на объекты, которые не отмечены для объединения. Не игнорируйте это окно. Обычно это новый реквизит поставщика, тип которого — новый справочник, а справочник вы случайно сняли с объединения. Включите связанные объекты, иначе после обновления появятся пустые ссылки и ошибки проверки.
Если конфигурация снята с поддержки
Когда поддержка снята полностью, обновить конфигурацию через поддержку нельзя: платформе не с чем сравнивать ваши правки. Рабочий путь:
- Получите
.cfтой версии поставщика, на которой стоит ваша база (старая типовая). - Выполните
Конфигурация → Сравнить, объединить с конфигурацией из файла, выбрав этот старый.cf. Платформа предложит поставить конфигурацию на поддержку — согласитесь. Ничего при этом из своих объектов не берите из файла: цель только восстановить связь с поставщиком. - После этого обновляйте обычным способом, как описано выше.
Без восстановления поддержки придётся объединять ваш код с новой версией двухсторонним сравнением, где платформа не отличает ваши правки от типовых. Это долго и опасно.
Обновление конфигурации базы данных
После объединения изменилась только основная конфигурация, база ещё работает по старой структуре. Выполните Конфигурация → Обновить конфигурацию базы данных или нажмите F7.
Что происходит дальше:
- Платформа проверяет конфигурацию и при ошибках выводит их в окно сообщений. Обновление не начнётся, пока ошибки не исправлены.
- Показывается список изменений структуры: какие таблицы добавятся, какие реквизиты изменятся, нужна ли реструктуризация.
- Вы принимаете изменения, и платформа перестраивает таблицы.
Реструктуризация большой базы может длиться от минут до нескольких часов — это зависит от объёма регистров и изменённых таблиц. Планируйте окно работ с запасом.
Если платформа пишет, что не может установить монопольный режим, в базе остались сеансы. Для клиент-серверной базы их видно в консоли кластера. Завершайте их только после предупреждения пользователей: несохранённые документы пропадут.
После F7 запустите базу в режиме «Предприятие» под администратором. Программа покажет окно обновления и выполнит обработчики обновления данных. Не прерывайте этот этап. Часть обработчиков в современных типовых конфигурациях выполняется отложенно, в фоне, уже после входа пользователей.
Проверка работоспособности после обновления
Обновлённую конфигурацию сначала проверяют на тестовой копии, и только потом повторяют на рабочей базе с теми же сохранёнными настройками объединения.
Технические проверки в Конфигураторе
- 🔍
Конфигурация → Проверка конфигурации: включите синтаксический контроль модулей и поиск неиспользуемых процедур и ссылок на несуществующие объекты. - 🧾 Повторное сравнение:
Конфигурация → Сравнить конфигурации, основная против новой конфигурации поставщика. Сверьте результат с отчётом о доработках, сохранённым до обновления. Каждая ваша правка должна найтись в новом отчёте. - 🛠️ При сомнениях в целостности данных —
Администрирование → Тестирование и исправление. Запускайте его в монопольном режиме и только после резервной копии.
Проверки в программе
В режиме «Предприятие» в разделе Администрирование → Обслуживание есть сведения о результатах обновления и отложенной обработке данных. Убедитесь, что отложенные обработчики завершены без ошибок.
Дальше прогоните сценарии, которые затрагивают доработки:
Отдельно проверьте права. Поставщик часто добавляет новые роли и меняет состав профилей групп доступа. Если вы дорабатывали типовые роли, объединение могло оставить их без прав на новые объекты. Зайдите под обычным пользователем и откройте основные разделы — сообщение о нарушении прав доступа укажет на роль, которую надо поправить.
Хранилище конфигураций и автоматизация обновления
Обновление базы, подключённой к хранилищу
Если над конфигурацией работают несколько разработчиков через хранилище, обновление поставщика выполняют в одной базе разработки:
- Обновите конфигурацию из хранилища, чтобы у вас была последняя версия .
- Захватите в хранилище корень конфигурации рекурсивно: в окне хранилища выберите корень и захват со всеми подчинёнными объектами. Остальные разработчики на это время не смогут захватывать объекты.
- Выполните обновление через поддержку, разберите конфликты.
- Проверьте конфигурацию и поместите изменения в хранилище с комментарием о номере релиза.
- В рабочих базах получите конфигурацию из хранилища и выполните
Обновить конфигурацию базы данных.
Ошибка, которую делают часто: обновляют рабочую базу напрямую из .cfu, не трогая хранилище. После этого рабочая база и хранилище расходятся, и следующее обновление из хранилища затрёт типовые изменения.
Пакетный режим Конфигуратора
Когда настройки объединения уже отлажены на тестовой базе, рабочую можно обновить из командной строки. Конфигуратор запускается в пакетном режиме с параметром DESIGNER:
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /DumpIB"D:\Backup\buh_before.dt" /Out"D:\Logs\dump.log"
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /UpdateCfg"D:\Upd\1Cv8.cfu" -Settings"D:\Upd\merge_settings.xml" /UpdateDBCfg /Out"D:\Logs\update.log"
Номер платформы и пути подставьте свои. Для клиент-серверной базы вместо /F используется /S"сервер\имя_базы". Ключ -Settings подключает файл настроек объединения, сохранённый в окне сравнения. Полный список параметров /UpdateCfg смотрите во встроенной справке платформы, раздел о параметрах командной строки.
Всегда читайте журнал из /Out: в пакетном режиме ошибки не выводятся на экран, и неудачное обновление выглядит как обычное завершение программы.
Как снизить затраты на следующие обновления
Главный приём — переносить доработки в расширения конфигурации (они появились в платформе 8.3.6). Расширение подключается поверх типовой конфигурации, и сама конфигурация может оставаться на поддержке без изменений. Тогда обновление проходит как у типовой базы, а расширение проверяют на совместимость.
Что хорошо переносится в расширения:
- 🖨️ новые печатные формы и отчёты;
- 📝 дополнительные реквизиты и поля на формах;
- ⚙️ изменение поведения типовых процедур через аннотации
&Перед,&После,&Вместо,&ИзменениеИКонтроль.
Чем меньше правок осталось в самой конфигурации, тем короче список дважды изменённых объектов при каждом релизе.