Как заменить расширение новой версией и не потерять данные базы

· 11 мин

Содержание

Чтобы обновить расширение конфигурации 1С, не удаляйте старое и не добавляйте новое рядом. Откройте список расширений (в БП 3.0 и ЗУП 3.1 это Администрирование → Печатные формы, отчеты и обработки → Расширения), выделите нужную строку и загрузите поверх неё новый файл .cfe. Имя расширения должно совпасть, тогда данные, которые хранит расширение, сохранятся.

Частая ошибка — «обновить» расширение удалением и повторным добавлением. Для расширения, которое только правит формы и печать, это пройдёт незаметно. Для расширения со своими справочниками или реквизитами такое удаление стирает его данные. Механизм общий для платформы 8.3 (расширения появились в версии 8.3.6), различаются только пути к списку в разных конфигурациях.

Подготовка к обновлению расширения: что проверить заранее

Обновление расширения — короткая операция, но ломается она обычно из-за того, что не проверили заранее. Перед загрузкой нового файла соберите четыре факта.

  1. Имя расширения. Оно указано в свойствах .cfe и в колонке «Имя» списка расширений. Если разработчик переименовал расширение, платформа воспримет файл как новое расширение, а не как новую версию.
  2. Для какого релиза конфигурации собрано. Расширение «заимствует» объекты основной конфигурации и помнит их состояние. Если вы недавно обновили типовую, а расширение собрано под старый релиз, конфликт почти гарантирован.
  3. Есть ли у расширения свои данные. Свои справочники, документы, регистры или новые реквизиты у заимствованных объектов означают, что в базе есть таблицы расширения. С таким расширением ошибка стоит дороже.
  4. Версия платформы. Режим совместимости расширения не может быть новее, чем у основной конфигурации. Номер платформы на сервере должен быть не ниже того, на котором расширение собирали.
Что проверитьГде посмотреть
Имя и версия расширенияСписок расширений, колонки «Имя» и «Версия»
Релиз основной конфигурацииСправка → О программе (кнопка с буквой «i» в заголовке окна)
Наличие данных у расширенияВ Конфигураторе: дерево расширения, ветки справочников, документов, регистров
Назначение расширенияСвойства расширения: «Исправление», «Адаптация» или «Дополнение»

Перед обновлением расширения с собственными данными сделайте резервную копию базы (выгрузку .dt или копию средствами СУБД). Старый файл .cfe тоже сохраните: в списке расширений есть команда сохранения расширения в файл.

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

Как обновить расширение конфигурации: три способа

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

СпособКогда подходитОграничения
Пользовательский режим (форма БСП)Типовые БП, ЗУП, УТ, КА, ERP; нужно просто заменить файлНужна роль «Полные права» или право администрирования
Стандартная форма платформыНетиповая конфигурация без формы «Расширения»Нужна команда «Все функции»
КонфигураторКонфликты, сравнение версий, правка расширенияНужен доступ к Конфигуратору
Пакетный режим 1cv8 DESIGNERОбновление по расписанию, много базОшибки видны только в логе

Обновление из файла в пользовательском режиме

Пути к списку расширений в типовых конфигурациях на БСП:

КонфигурацияПуть
Бухгалтерия предприятия 3.0Администрирование → Печатные формы, отчеты и обработки → Расширения
ЗУП 3.1Администрирование → Печатные формы, отчеты и обработки → Расширения
Управление торговлей 11НСИ и администрирование → Печатные формы, отчеты и обработки → Расширения

Порядок действий:

  1. Попросите пользователей завершить работу или хотя бы сохранить документы. Работающие сеансы продолжат видеть старую версию.
  2. Откройте список расширений и выделите строку обновляемого расширения.
  3. В меню «Ещё» или в командной панели выберите команду обновления из файла и укажите новый .cfe.
  4. Подтвердите предупреждение о безопасности: загрузка расширения даёт стороннему коду доступ к данным базы.
  5. Проверьте флажки в строке: «Безопасный режим» и «Защита от опасных действий». После обновления они должны остаться такими, как требуют ваши правила безопасности.
  6. Перезапустите программу. Платформа подключает расширения при старте сеанса, и только после перезапуска увидите новую версию.

💡 Если вместо обновления видите только кнопку добавления, проверьте, что выделена строка именно этого расширения. Команда добавления при совпадении имени выдаст ошибку о том, что расширение с таким именем уже есть. Это хороший знак: значит, имена совпадают и нужно именно обновление.

Стандартная форма «Управление расширениями конфигурации»

В нетиповых базах формы БСП может не быть. Тогда включите команду «Все функции»: Сервис и настройки → Параметры → Отображать команду «Все функции». Затем откройте Все функции → Стандартные → Управление расширениями конфигурации.

В этой форме выделите расширение и нажмите «Обновить», затем выберите файл. Колонки «Активно», «Безопасный режим», «Защита от опасных действий» и использование в РИБ меняются прямо в списке.

Обновление расширения через Конфигуратор

  1. Запустите Конфигуратор и откройте Конфигурация → Расширения конфигурации.
  2. Выделите расширение и в меню списка выберите загрузку конфигурации расширения из файла. Если нужно взять не всё, а выборочно, используйте сравнение и объединение с файлом: оно покажет различия по объектам.
  3. Откройте дерево расширения и выполните проверку конфигурации. Ошибки заимствований будут видны до того, как изменения попадут в базу.
  4. Нажмите «Обновить конфигурацию базы данных» (F7) для этого расширения. Загрузка .cfe и обновление конфигурации базы данных — два разных шага: без второго в базе останется старая версия.

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

Для регулярного обновления удобно запускать Конфигуратор без окна. Пример для файловой базы:

"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" ^
  /LoadCfg "D:\Ext\МоиДоработки.cfe" -Extension "МоиДоработки" ^
  /UpdateDBCfg -Extension "МоиДоработки" ^
  /Out "D:\Ext\update.log"

Для серверной базы вместо /F укажите /S"сервер\имя_базы". Путь к 1cv8.exe подставьте свой: номер в каталоге — это установленная версия платформы. Лог из /Out читайте после каждого запуска: при конфликте процесс завершится, а сообщение об ошибке останется только в файле.

Конфликты при обновлении и как их решать

Конфликт возникает, когда расширение «помнит» объект основной конфигурации не таким, каким он стал. Типичные причины:

  • 🔄 основную конфигурацию обновили, а расширение собрано под прошлый релиз;
  • ✂️ в типовой удалили реквизит, форму или метод, которые расширение заимствовало;
  • 🧩 два расширения перехватывают одну и ту же процедуру или меняют одну форму;
  • ⚙️ режим совместимости расширения не подходит основной конфигурации.

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

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

Как обновить заимствования в Конфигураторе

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

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

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

При конфликте двух расширений смотрите порядок их применения и то, какие процедуры перехватываются аннотациями &Перед, &После, &Вместо. Два обработчика &Вместо на одну процедуру — частый источник «плавающих» ошибок: срабатывает один, второй молча пропускается.

Расширения в клиент-серверной базе и в РИБ

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

Что отличается от файловой базы:

  • 👥 Сеансы. Пользователи, вошедшие до обновления, работают со старой версией расширения. Новая подхватится после переподключения.
  • 🗄️ Структура данных. Если новая версия добавляет таблицы или реквизиты, платформе нужно изменить структуру базы. Такое обновление планируйте на время, когда пользователей нет, иначе получите ошибки блокировки.
  • 🧹 Кэш клиента. Если после обновления у части пользователей остаются старые формы, запустите клиент с параметром /ClearCache. Он очищает только локальный кэш и не трогает данные.
  • 🔐 Права. Загрузка и обновление расширения требуют административных прав в базе. Права на сервер 1С и администратора кластера для этого не нужны.

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

Распределённая информационная база. У расширения есть флажок использования в РИБ. Если он включён, расширение загружают в главном узле, и оно приходит в подчинённые узлы с обменом. В подчинённом узле такое расширение не обновляют. Если флажок выключен, расширение живёт только в той базе, куда его загрузили, и обновлять его придётся в каждом узле отдельно.

Облако и 1С:Фреш. В сервисе вместо файла .cfe обычно используют механизм дополнительных расширений сервиса, и самостоятельная загрузка может быть ограничена правилами провайдера.

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

После загрузки не ограничивайтесь сообщением «обновлено». Проверьте, что расширение действительно работает и не задело основную конфигурацию.

Проверка после обновления расширения
Выполнено: 0 / 6

Журнал регистрации — главный источник правды: Администрирование → Обслуживание → Журнал регистрации. Отфильтруйте записи по уровню «Ошибка» и по времени после обновления. Ошибки модулей расширения в тексте содержат имя расширения перед именем модуля.

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

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

Откат и удаление расширения конфигурации

Расширение не хранит историю версий. Откатиться можно только загрузкой старого .cfe тем же способом, что и обновление. Поэтому старый файл стоит хранить хотя бы до закрытия ближайшего периода.

Варианты отката от мягкого к радикальному:

ДействиеЧто происходитДанные расширения
Снять флажок «Активно»Расширение не применяется со следующего сеансаСохраняются
Загрузить старый .cfe поверхВозвращается прежняя версияСохраняются, если в старой версии есть те же объекты
Удалить расширениеРасширение исчезает из базыУдаляются безвозвратно
Восстановить базу из копииВозвращается всё состояние на момент копииТеряются изменения, сделанные после копии

Отключение флажком — лучший первый шаг при неясной ошибке. Ничего не теряется, и можно спокойно разбираться в копии базы.

Удаление выполняют в том же списке расширений командой «Удалить», в Конфигураторе — в окне Конфигурация → Расширения конфигурации. Пакетно расширение удаляют параметром /DeleteCfg -Extension "Имя". Перед удалением расширения с данными выгрузите нужные сведения в Excel или в обработку переноса: после удаления их не восстановить иначе как из резервной копии.

Частые ошибки при обновлении расширений

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

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

Нужно ли обновлять расширение после обновления типовой конфигурации?
Не всегда. Если заимствованные объекты в новом релизе не менялись, расширение продолжит работать. Если при запуске появилось сообщение о неприменённом расширении, его нужно адаптировать под новый релиз.
Можно ли обновить расширение, пока пользователи работают?
Да, если расширение не меняет структуру данных. Работающие сеансы останутся на старой версии до перезапуска. Расширения с новыми таблицами и реквизитами лучше обновлять без пользователей.
Где взять файл .cfe текущей версии расширения?
Сохраните его из списка расширений командой сохранения в файл или в Конфигураторе через меню списка расширений. Это и есть резервная копия для отката.
Почему после обновления расширения не изменилась печатная форма?
Чаще всего сеанс открыт до обновления. Перезапустите программу. Если не помогло, проверьте, нет ли у этой формы пользовательского макета: он имеет приоритет над макетом из расширения.
Сколько расширений можно подключить к одной базе?
Жёсткого ограничения на практике нет, но каждое расширение увеличивает время запуска сеанса и риск конфликтов. Несколько мелких доработок одного подрядчика удобнее держать в одном расширении.