Как заменить расширение новой версией и не потерять данные базы
Содержание
Чтобы обновить расширение конфигурации
1С, не удаляйте старое и не добавляйте новое рядом. Откройте список расширений (в БП 3.0 и ЗУП 3.1 это Администрирование → Печатные формы, отчеты и обработки → Расширения), выделите нужную строку и загрузите поверх неё новый файл .cfe. Имя расширения должно совпасть, тогда данные, которые хранит расширение, сохранятся.
Частая ошибка — «обновить» расширение удалением и повторным добавлением. Для расширения, которое только правит формы и печать, это пройдёт незаметно. Для расширения со своими справочниками или реквизитами такое удаление стирает его данные. Механизм общий для платформы 8.3 (расширения появились в версии 8.3.6), различаются только пути к списку в разных конфигурациях.
Подготовка к обновлению расширения: что проверить заранее
Обновление расширения — короткая операция, но ломается она обычно из-за того, что не проверили заранее. Перед загрузкой нового файла соберите четыре факта.
- Имя расширения. Оно указано в свойствах
.cfeи в колонке «Имя» списка расширений. Если разработчик переименовал расширение, платформа воспримет файл как новое расширение, а не как новую версию. - Для какого релиза конфигурации собрано. Расширение «заимствует» объекты основной конфигурации и помнит их состояние. Если вы недавно обновили типовую, а расширение собрано под старый релиз, конфликт почти гарантирован.
- Есть ли у расширения свои данные. Свои справочники, документы, регистры или новые реквизиты у заимствованных объектов означают, что в базе есть таблицы расширения. С таким расширением ошибка стоит дороже.
- Версия платформы. Режим совместимости расширения не может быть новее, чем у основной конфигурации. Номер платформы на сервере должен быть не ниже того, на котором расширение собирали.
| Что проверить | Где посмотреть |
|---|---|
| Имя и версия расширения | Список расширений, колонки «Имя» и «Версия» |
| Релиз основной конфигурации | Справка → О программе (кнопка с буквой «i» в заголовке окна) |
| Наличие данных у расширения | В Конфигураторе: дерево расширения, ветки справочников, документов, регистров |
| Назначение расширения | Свойства расширения: «Исправление», «Адаптация» или «Дополнение» |
Перед обновлением расширения с собственными данными сделайте резервную копию базы (выгрузку .dt или копию средствами СУБД). Старый файл .cfe тоже сохраните: в списке расширений есть команда сохранения расширения в файл.
Если расширение пришло от подрядчика, попросите короткий список изменений: какие объекты добавлены, какие заимствования удалены. Удалённое заимствование с данными — повод отложить обновление и сначала выгрузить эти данные.
Как обновить расширение конфигурации: три способа
Способ выбирают по ситуации. Для бухгалтера с правами администратора хватит пользовательского режима. Для разработчика и для сложных конфликтов нужен Конфигуратор. Для десятков баз — пакетный запуск.
| Способ | Когда подходит | Ограничения |
|---|---|---|
| Пользовательский режим (форма БСП) | Типовые БП, ЗУП, УТ, КА, ERP; нужно просто заменить файл | Нужна роль «Полные права» или право администрирования |
| Стандартная форма платформы | Нетиповая конфигурация без формы «Расширения» | Нужна команда «Все функции» |
| Конфигуратор | Конфликты, сравнение версий, правка расширения | Нужен доступ к Конфигуратору |
Пакетный режим 1cv8 DESIGNER | Обновление по расписанию, много баз | Ошибки видны только в логе |
Обновление из файла в пользовательском режиме
Пути к списку расширений в типовых конфигурациях на БСП:
| Конфигурация | Путь |
|---|---|
| Бухгалтерия предприятия 3.0 | Администрирование → Печатные формы, отчеты и обработки → Расширения |
| ЗУП 3.1 | Администрирование → Печатные формы, отчеты и обработки → Расширения |
| Управление торговлей 11 | НСИ и администрирование → Печатные формы, отчеты и обработки → Расширения |
Порядок действий:
- Попросите пользователей завершить работу или хотя бы сохранить документы. Работающие сеансы продолжат видеть старую версию.
- Откройте список расширений и выделите строку обновляемого расширения.
- В меню «Ещё» или в командной панели выберите команду обновления из файла и укажите новый
.cfe. - Подтвердите предупреждение о безопасности: загрузка расширения даёт стороннему коду доступ к данным базы.
- Проверьте флажки в строке: «Безопасный режим» и «Защита от опасных действий». После обновления они должны остаться такими, как требуют ваши правила безопасности.
- Перезапустите программу. Платформа подключает расширения при старте сеанса, и только после перезапуска увидите новую версию.
💡 Если вместо обновления видите только кнопку добавления, проверьте, что выделена строка именно этого расширения. Команда добавления при совпадении имени выдаст ошибку о том, что расширение с таким именем уже есть. Это хороший знак: значит, имена совпадают и нужно именно обновление.
Стандартная форма «Управление расширениями конфигурации»
В нетиповых базах формы БСП может не быть. Тогда включите команду «Все функции»: Сервис и настройки → Параметры → Отображать команду «Все функции». Затем откройте Все функции → Стандартные → Управление расширениями конфигурации.
В этой форме выделите расширение и нажмите «Обновить», затем выберите файл. Колонки «Активно», «Безопасный режим», «Защита от опасных действий» и использование в РИБ меняются прямо в списке.
Обновление расширения через Конфигуратор
- Запустите Конфигуратор и откройте
Конфигурация → Расширения конфигурации. - Выделите расширение и в меню списка выберите загрузку конфигурации расширения из файла. Если нужно взять не всё, а выборочно, используйте сравнение и объединение с файлом: оно покажет различия по объектам.
- Откройте дерево расширения и выполните проверку конфигурации. Ошибки заимствований будут видны до того, как изменения попадут в базу.
- Нажмите «Обновить конфигурацию
базы данных» (
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 читайте после каждого запуска: при конфликте процесс завершится, а сообщение об ошибке останется только в файле.
Конфликты при обновлении и как их решать
Конфликт возникает, когда расширение «помнит» объект основной конфигурации не таким, каким он стал. Типичные причины:
- 🔄 основную конфигурацию обновили, а расширение собрано под прошлый релиз;
- ✂️ в типовой удалили реквизит, форму или метод, которые расширение заимствовало;
- 🧩 два расширения перехватывают одну и ту же процедуру или меняют одну форму;
- ⚙️ режим совместимости расширения не подходит основной конфигурации.
При запуске программы платформа сообщает, что расширение не может быть применено, и перечисляет объекты и свойства, которые разошлись. Сохраните этот текст целиком: по нему разработчик найдёт место за минуты.
Как обновить заимствования в Конфигураторе
Самый надёжный приём практика — перезаимствовать конфликтный объект:
- Откройте основную конфигурацию и дерево расширения рядом.
- В дереве основной конфигурации найдите объект, на который ругается платформа.
- В контекстном меню выберите «Добавить в расширение» и укажите обновляемое расширение. Заимствованный объект подтянет текущее состояние основной конфигурации.
- Если в расширении на этом объекте были свои реквизиты или обработчики, проверьте их: ссылки на удалённые элементы формы нужно убрать вручную.
- Повторите проверку конфигурации, сохраните расширение в новый
.cfeи обновите конфигурацию базы данных.
Если в типовой удалили реквизит, к которому расширение добавляло свой реквизит с данными, сначала решите, куда перенести эти данные. После удаления реквизита из расширения и обновления базы значения не вернуть без резервной копии.
При конфликте двух расширений смотрите порядок их применения и то, какие процедуры перехватываются аннотациями &Перед, &После, &Вместо. Два обработчика &Вместо на одну процедуру — частый источник «плавающих» ошибок: срабатывает один, второй молча пропускается.
Расширения в клиент-серверной базе и в РИБ
Расширение хранится в самой информационной базе, а не на компьютере пользователя. Поэтому в клиент-серверном варианте файл .cfe не нужно копировать на рабочие места: достаточно один раз загрузить его в базу.
Что отличается от файловой базы:
- 👥 Сеансы. Пользователи, вошедшие до обновления, работают со старой версией расширения. Новая подхватится после переподключения.
- 🗄️ Структура данных. Если новая версия добавляет таблицы или реквизиты, платформе нужно изменить структуру базы. Такое обновление планируйте на время, когда пользователей нет, иначе получите ошибки блокировки.
- 🧹 Кэш клиента. Если после обновления у части пользователей остаются старые формы, запустите клиент с параметром
/ClearCache. Он очищает только локальный кэш и не трогает данные. - 🔐 Права. Загрузка и обновление расширения требуют административных прав в базе. Права на сервер 1С и администратора кластера для этого не нужны.
Если для чистого применения новой версии решили завершить сеансы пользователей через консоль кластера, предупредите людей заранее: несохранённые документы будут потеряны. Делайте это вне рабочего времени.
Распределённая информационная база. У расширения есть флажок использования в РИБ. Если он включён, расширение загружают в главном узле, и оно приходит в подчинённые узлы с обменом. В подчинённом узле такое расширение не обновляют. Если флажок выключен, расширение живёт только в той базе, куда его загрузили, и обновлять его придётся в каждом узле отдельно.
Облако и 1С:Фреш. В сервисе вместо файла .cfe обычно используют механизм дополнительных расширений сервиса, и самостоятельная загрузка может быть ограничена правилами провайдера.
Проверка расширения после обновления
После загрузки не ограничивайтесь сообщением «обновлено». Проверьте, что расширение действительно работает и не задело основную конфигурацию.
Журнал регистрации — главный источник правды: Администрирование → Обслуживание → Журнал регистрации. Отфильтруйте записи по уровню «Ошибка» и по времени после обновления. Ошибки модулей расширения в тексте содержат имя расширения перед именем модуля.
💡 Перед обновлением рабочей базы прогоните тот же .cfe на копии. Копия делается выгрузкой .dt и загрузкой в новую пустую базу. Если в копии нет ошибок применения и проведение документов не изменилось, в рабочей базе сюрпризов будет меньше.
Проводить документы в рабочей базе «для проверки» не стоит. Если всё же нужно, создайте тестовый документ, проверьте движения и пометьте его на удаление: иначе тестовые суммы попадут в учёт.
Откат и удаление расширения конфигурации
Расширение не хранит историю версий. Откатиться можно только загрузкой старого .cfe тем же способом, что и обновление. Поэтому старый файл стоит хранить хотя бы до закрытия ближайшего периода.
Варианты отката от мягкого к радикальному:
| Действие | Что происходит | Данные расширения |
|---|---|---|
| Снять флажок «Активно» | Расширение не применяется со следующего сеанса | Сохраняются |
Загрузить старый .cfe поверх | Возвращается прежняя версия | Сохраняются, если в старой версии есть те же объекты |
| Удалить расширение | Расширение исчезает из базы | Удаляются безвозвратно |
| Восстановить базу из копии | Возвращается всё состояние на момент копии | Теряются изменения, сделанные после копии |
Отключение флажком — лучший первый шаг при неясной ошибке. Ничего не теряется, и можно спокойно разбираться в копии базы.
Удаление выполняют в том же списке расширений командой «Удалить», в Конфигураторе — в окне Конфигурация → Расширения конфигурации. Пакетно расширение удаляют параметром /DeleteCfg -Extension "Имя". Перед удалением расширения с данными выгрузите нужные сведения в Excel или в обработку переноса: после удаления их не восстановить иначе как из резервной копии.
Частые ошибки при обновлении расширений
- ❌ Новая версия загружена как второе расширение. В списке два расширения с похожими именами, оба перехватывают одни процедуры. Удалите лишнее, предварительно убедившись, что у него нет данных.
- ❌ Сначала расширение, потом конфигурация. Правильный порядок при плановом обновлении: обновить основную конфигурацию в копии, проверить расширение на новом релизе, получить исправленный
.cfe, и только потом обновлять рабочую базу целиком. - ❌ Выключенный безопасный режим «чтобы заработало». Если расширению нужен небезопасный режим, это должно быть решение администратора по известному коду, а не реакция на ошибку.
- ❌ Обновление в разгар закрытия месяца. Даже исправительное расширение может изменить расчёт. Окно для обновления — когда документы за период уже проверены или ещё не начаты.