Расширение не мешает обновлению: порядок действий до, во время и после установки релиза
Содержание
Если в базе 1С подключено расширение, конфигурацию обновляют как обычно — через Администрирование → Интернет-поддержка и сервисы → Обновление версии программы или в Конфигураторе. Расширение при этом не удаляется и не снимается с поддержки: оно хранится в базе отдельно от основной конфигурации. Риск один — после обновления расширение может перестать применяться, если в типовой изменились объекты, которые оно заимствует или перехватывает.
Типичная картина: бухгалтер в пятницу ставит свежий релиз Бухгалтерии, а в понедельник пропадает доработанная печатная форма счёта или кнопка загрузки выписки. Платформа при запуске показывает ошибку применения расширения. Данные целы, но доработка «отвалилась». Задача — чтобы при обновлении 1С с расширением это случалось на тестовой копии, а не в рабочей базе.
Что проверить до обновления базы с расширением
Начните с инвентаризации. Нужно понять, какие расширения есть и что в них заимствовано.
- Откройте список расширений в режиме Предприятия:
Администрирование → Печатные формы, отчеты и обработки → Расширения. В Конфигураторе тот же список —Конфигурация → Расширения конфигурации. - Запишите для каждого расширения имя, версию, назначение (исправление, адаптация, дополнение) и флаг «Активно».
- Сохраните каждое расширение в файл
.cfe. В Конфигураторе: выделите расширение в списке и выберите в меню «Действия» сохранение в файл. Это ваша страховка, если при обновлении придётся откатываться. - Сделайте полную копию базы
: выгрузку
.dt(Администрирование → Выгрузить информационную базув Конфигураторе) или резервную копию средствами СУБД для клиент-серверного варианта.
Обновляйте сначала копию базы, а не рабочую. Развернуть .dt в новую пустую базу занимает минуты, а починка рабочей базы с отвалившимся расширением во время сдачи отчётности — часы простоя.
Насколько рискованно ваше расширение
Риск зависит от того, что именно расширение делает с типовыми объектами.
| Что внутри расширения | Риск при обновлении | Почему |
|---|---|---|
| Только свои объекты: новые отчёты, обработки, справочники | 🟢 Низкий | Типовые объекты не затронуты |
| Заимствованные формы с добавленными реквизитами и кнопками | 🟡 Средний | Ломается, если в типовой форме удалили или переименовали элемент |
Перехват методов через &Перед, &После, &Вместо | 🟡 Средний | Ломается, если метод переименовали, удалили или поменяли параметры |
Перехват через &ИзменениеИКонтроль | 🔴 Высокий | Платформа сверяет текст метода с типовым — любое изменение кода метода в релизе даёт ошибку |
| Заимствованные объекты с контролем свойств | 🔴 Высокий | Изменение контролируемого свойства в типовой делает расширение неприменимым |
Если расширение писал программист, попросите у него список заимствованных объектов. Его же можно увидеть самому: в дереве расширения в Конфигураторе заимствованные объекты отмечены отдельным значком.
Обновление из режима Предприятия
Для файловых и небольших клиент-серверных баз основной путь — встроенный механизм обновления типовых конфигураций.
- Перейдите в
Администрирование → Интернет-поддержка и сервисы → Обновление версии программы. - Выберите получение обновления из интернета или из файла
.cfu. - Программа проверит, что в базе нет других пользователей, и при необходимости предложит завершить их сеансы.
- Подтвердите создание резервной копии, если механизм это предлагает.
- Дождитесь окончания загрузки релиза и обработчиков обновления. При первом запуске после обновления запустятся обработчики перехода на новую версию.
Расширения в этом сценарии остаются на месте. После перезапуска платформа пытается применить каждое активное расширение к новой версии конфигурации. Если всё совместимо, пользователь ничего не заметит.
Если расширение не применилось, появится сообщение с именем расширения и описанием причины: какой объект или свойство изменились. Сохраните текст этой ошибки целиком — он нужен программисту и понадобится в разделе про конфликты ниже.
Если доработка не критична на ближайшие дни, временно снимите флаг «Активно» у проблемного расширения в списке расширений. Программа запустится без него, а данные расширения останутся в базе.
Расширения в Конфигураторе: загрузка, проверка, применение
Когда расширение требует правки, работа переходит в Конфигуратор. Главные действия собраны в окне Конфигурация → Расширения конфигурации.
Основные операции
- 📂 Открыть расширение — двойной щелчок по строке в списке. Откроется дерево расширения в отдельном окне.
- 💾 Сохранить в файл — выгрузка
.cfeдля архива или переноса в другую базу. - 📥 Загрузить из файла — замена расширения в базе на версию из
.cfe. Удобно, когда программист прислал исправленный файл. - 🔄 Обновить конфигурацию базы данных — применение изменений расширения к базе. После загрузки из файла этот шаг обязателен: загрузка и обновление конфигурации БД — два отдельных действия.
- ✅ Проверка конфигурации — синтаксический контроль модулей расширения после обновления типовой.
Почему не стоит удалять расширение
Удалить расширение и подключить заново кажется быстрым решением. Но если у расширения есть собственные объекты с данными — справочники, регистры, реквизиты, добавленные к типовым объектам, — при удалении эти данные будут потеряны. Платформа предупредит об этом, но многие нажимают «Да» не читая.
Не удаляйте расширение с данными ради обновления. Для временного отключения есть флаг «Активно», для исправления — загрузка новой версии .cfe поверх старой.
Конфликты версий: почему расширение «отвалилось» после релиза
Причина почти всегда одна: расширение опирается на состояние типовой конфигурации, которого больше нет. Разберём по видам.
Изменилось контролируемое свойство заимствованного объекта
При заимствовании объекта часть его свойств можно поставить на контроль. Например, тип реквизита или состав формы. Если в новом релизе разработчики 1С поменяли такое свойство, расширение перестаёт применяться.
Что делать:
- Откройте расширение в Конфигураторе на обновлённой копии базы.
- Запустите проверку — платформа покажет объект и свойство, которое не совпало.
- Решите, нужен ли контроль этого свойства. Если доработка от него не зависит, снимите контроль. Если зависит — поправьте код под новое значение.
- Обновите конфигурацию базы данных для расширения и перезапустите сеанс.
Изменился перехваченный метод
Аннотации &Перед, &После и &Вместо проверяют только имя и параметры метода. Если в релизе метод переименовали или добавили параметр, перехват ломается. Решение — найти новое имя метода в типовом модуле и переписать перехват.
С &ИзменениеИКонтроль строже: платформа сравнивает текст типового метода с тем, что сохранён в расширении. Любая правка в типовом коде метода даёт ошибку. Практичный приём:
- Откройте в расширении метод с
&ИзменениеИКонтроль. - Сравните его с новым текстом типового метода — Конфигуратор умеет сравнивать модули расширения и основной конфигурации.
- Перенесите в метод расширения новый типовой код и заново вставьте свои вставки между
#Вставкаи#КонецВставки. - Проверьте, что удаления в блоках
#Удаление … #КонецУдалениявсё ещё относятся к нужным строкам.
Удалён элемент формы
Расширение добавило кнопку рядом с типовой, а в релизе типовую кнопку убрали или перенесли в другую группу. Форма расширения ссылается на элемент, которого нет. Лечится переносом своего элемента в существующую группу формы и повторным заимствованием формы, если структура поменялась сильно.
Порядок обновления типовой конфигурации с доработками в расширении
Сведём всё в рабочую последовательность. Её удобно повторять при каждом релизе.
- Копия. Разверните свежую копию рабочей базы из
.dtили резервной копии СУБД. - Обновление копии. Установите релиз на копию тем же способом, что будете использовать в рабочей базе.
- Запуск копии. Откройте её в режиме Предприятия под пользователем с полными правами и посмотрите, нет ли ошибки применения расширений.
- Проверка доработок. Пройдите сценарии, ради которых делали расширение: печать, кнопки, отчёты, заполнение документов.
- Исправление. Если что-то сломалось — правьте расширение на копии, сохраняйте исправленную версию в
.cfe. - Окно обновления. Договоритесь с пользователями о времени, когда база будет свободна. Для обновления структуры базы нужен монопольный доступ.
- Рабочая база. Сделайте резервную копию, установите релиз, затем загрузите исправленный
.cfeи обновите конфигурацию БД расширения. - Контроль. Запустите базу, проверьте ключевые сценарии и только после этого откройте доступ пользователям.
Если цепочка релизов длинная — например, база отстала на 5–6 версий, — обновляйтесь по порядку, как требует типовая конфигурация. Расширение проверяйте после последнего промежуточного релиза, а не после каждого: промежуточные состояния никто, кроме вас, не увидит.
Если расширение — это небольшое исправление (назначение «Исправление»), загляните в описание нового релиза. Часто фирма 1С уже исправила ту же ошибку в типовой, и расширение можно просто отключить.
Пакетное обновление: командная строка и bat-файлы
Когда баз много или обновление нужно запускать ночью, удобнее пакетный режим Конфигуратора. Ниже — пример для файловой базы. Для клиент-серверной замените /F на /S"сервер\имя_базы".
@echo off
set V8="C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe"
set BASE=/F"D:\Bases\Buh"
set AUTH=/N"Администратор" /P"пароль"
set LOG=/Out"D:\Logs\update.log" -NoTruncate
rem 1. Выгрузка базы в .dt
%V8% DESIGNER %BASE% %AUTH% /DisableStartupDialogs /DumpIB"D:\Backup\Buh.dt" %LOG%
rem 2. Обновление основной конфигурации из файла поставки
%V8% DESIGNER %BASE% %AUTH% /DisableStartupDialogs /UpdateCfg"D:\Update\1Cv8.cfu" /UpdateDBCfg %LOG%
rem 3. Загрузка исправленного расширения и обновление его конфигурации БД
%V8% DESIGNER %BASE% %AUTH% /DisableStartupDialogs /LoadCfg"D:\Update\MyExt.cfe" -Extension "МоеРасширение" %LOG%
%V8% DESIGNER %BASE% %AUTH% /DisableStartupDialogs /UpdateDBCfg -Extension "МоеРасширение" %LOG%
Путь к 1cv8.exe укажите для своей версии платформы. Номер в примере условный.
Что важно в этой схеме:
- 📌 Расширение загружается отдельной командой с ключом
-Extensionи именем расширения так, как оно записано в базе. - 📌 Сохранить расширение в файл заранее можно той же командой
/DumpCfg"путь.cfe" -Extension "Имя". - 📌 Лог
/Outс ключом-NoTruncateдописывается, а не перезаписывается — после ночного запуска видно, на каком шаге всё остановилось. - 📌 После обновления запустите базу в режиме Предприятия, чтобы отработали обработчики обновления. Без этого пользователи первыми увидят окно обновления.
Пакетное обновление структуры требует, чтобы в базе не было пользователей. Для клиент-серверной базы перед запуском установите блокировку начала сеансов в консоли кластера и предупредите сотрудников: их сеансы будут завершены. Запускайте такие задания вне рабочего времени.
Ошибки при обновлении 1С с расширением и как их устранить
Здесь — ситуации, которые не сводятся к конфликту заимствованных объектов.
Расширение работает у администратора, но не у пользователей. Проверьте роли. Если расширение добавило свои объекты, к ним нужны права: их дают роли самого расширения или заимствованные типовые роли. После обновления типовых ролей состав прав в расширении мог разойтись с новым.
Обновление в режиме Предприятия не запускается. Механизм обновления требует, чтобы в базе не было других сеансов. Проверьте активных пользователей в Администрирование → Обслуживание → Активные пользователи или в консоли кластера.
Расширение подключено в безопасном режиме и перестало что-то делать. Если программист добавил в новую версию расширения работу с файлами или внешними компонентами, безопасный режим может её блокировать. Решение принимает администратор: снимать безопасный режим можно только для расширений из доверенного источника.
Поменялся режим совместимости конфигурации. Новый релиз типовой может требовать более свежую версию платформы и менять режим совместимости. У расширения есть собственный режим совместимости. Если он расходится с режимом основной конфигурации, расширение может не примениться — сверьте свойство «Режим совместимости» у конфигурации и у расширения и выровняйте его в расширении.
После загрузки .cfe изменения не видны. Забыли обновить конфигурацию базы данных для расширения или не перезапустили сеанс. Изменения расширения вступают в силу при новом входе.