Обновление расширения конфигурации 1С без потери данных и доработок

· 11 мин

Содержание

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

Типичная ситуация: программист прислал новую версию доработки печатной формы, а вчера бухгалтер ещё и поставил свежий релиз БП. Если загрузить файл «как есть», расширение может не примениться, а при неудаче с расширением, которое хранит свои данные, есть риск их потерять. Порядок действий ниже рассчитан на платформу 8.3 и интерфейс «Такси»; механизм расширений общий для всех конфигураций на платформе, расширения появились в версии 8.3.6.

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

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

📋 Что проверить до загрузки нового файла:

  • 💾 Копия текущего расширения. В списке расширений есть команда сохранения в файл. Сохраните действующую версию с понятным именем, например ZP_Pechat_2024-05-14_old.cfe.
  • 🗄 Копия базы. Обязательна, если расширение добавляет свои справочники, документы или реквизиты, то есть хранит данные. Для файловой базы — выгрузка .dt или копия каталога с 1Cv8.1CD, для клиент-серверной — резервная копия СУБД.
  • 🔢 Версия платформы. Файл .cfe, сохранённый в более новой платформе, может не загрузиться в базу на более старой. Номер платформы на рабочем сервере должен быть не ниже того, в котором разработчик сохранял расширение.
  • 🧩 Режим совместимости. У расширения есть своё свойство «Режим совместимости». Оно не должно быть выше режима совместимости основной конфигурации.
  • 📌 Релиз основной конфигурации. Спросите разработчика, под какой релиз собрано расширение. Если базу недавно обновили, а расширение собрано под прошлый релиз, заимствованные объекты могут не совпасть.

Храните все версии .cfe в одной папке с датой в имени. Через полгода по ним проще понять, какая доработка что меняла и к какой версии вернуться.

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

Способы обновить расширения 1С: что выбрать

Выбор зависит от того, кто обновляет, сколько баз и есть ли доступ к Конфигуратору.

СпособКогда подходитРиски и ограничения
Режим Предприятия, форма «Расширения»Одна-две базы, обновляет бухгалтер или администратор без навыков разработкиНет сравнения версий, загрузка «поверх»
Конфигуратор, загрузка .cfeНужен контроль, видны ошибки примененияНужен доступ к Конфигуратору и права администратора
Конфигуратор, сравнение и объединениеВ базе расширение дорабатывали на местеТребует понимания метаданных
Пакетный режим 1cv8 DESIGNERМного баз, регулярные обновленияОшибку видно только в логе
Хранилище расширенияКоманда разработчиков ведёт расширение в хранилищеНужно подключение базы к хранилищу

Обновление в режиме Предприятия

Этот способ работает в конфигурациях на Библиотеке стандартных подсистем. Пользователю нужна роль с полными правами.

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

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

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

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

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

Обновление расширений в файловой, серверной и облачной базе

Порядок шагов одинаковый, отличаются условия.

Файловая база. Обновлять удобнее, когда никто не работает . Пользователи, оставшиеся в базе, увидят новую версию только после перезапуска. Если после обновления у кого-то сохраняется старое поведение, запустите 1С с параметром /ClearCache или очистите кэш в окне запуска.

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

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

Облачная база. Здесь всё зависит от сервиса:

  • ☁️ Аренда сервера или базы с доступом к Конфигуратору. Работает так же, как клиент-серверная база.
  • 🌐 Сервис 1С:Фреш и сервисы на его технологии. Доступа к Конфигуратору нет. Расширения устанавливают через раздел расширений в самой программе или через менеджер сервиса; собственные расширения обычно проходят проверку на стороне сервиса перед публикацией. Новая версия своего расширения тоже идёт через эту процедуру, поэтому заложите время на проверку.
  • 🔒 Хостинг без прав администратора базы. Обновление делает поддержка хостинга по вашей заявке; приложите файл .cfe и укажите имя расширения.

Автоматизация: пакетное обновление расширений 1С скриптом

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

Пример для Windows, клиент-серверная база:

@echo off
set V8="C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe"
set EXT=ZP_Pechat
set CFE=D:\ext\ZP_Pechat.cfe
set BASE=srv1c\buh

rem 1. Сохранить текущую версию расширения
%V8% DESIGNER /S %BASE% /N "Администратор" /P "пароль" /DumpCfg "D:\ext\backup\%EXT%_old.cfe" -Extension %EXT% /Out "D:\ext\log_dump.txt" /DisableStartupDialogs

rem 2. Загрузить новую версию
%V8% DESIGNER /S %BASE% /N "Администратор" /P "пароль" /LoadCfg %CFE% -Extension %EXT% /Out "D:\ext\log_load.txt" /DisableStartupDialogs

rem 3. Применить расширение к базе данных
%V8% DESIGNER /S %BASE% /N "Администратор" /P "пароль" /UpdateDBCfg -Extension %EXT% /Out "D:\ext\log_update.txt" /DisableStartupDialogs

Для файловой базы замените /S srv1c\buh на /F "D:\Bases\Buh". Номер платформы в пути подставьте свой.

Что важно в таком скрипте:

  1. Лог на каждый шаг. Параметр /Out пишет результат в файл. Пакетный режим не показывает окон с ошибками, всё видно только в логе.
  2. Проверка результата. После каждого шага проверяйте код возврата (%ERRORLEVEL%) и не запускайте следующий шаг, если предыдущий завершился ошибкой.
  3. Пароли. Не храните пароль администратора в открытом виде в общедоступной папке. Для регламентного запуска лучше отдельный пользователь с нужными правами и скрипт в папке с ограниченным доступом.
  4. Цикл по базам. Список баз удобно держать в текстовом файле и обходить его циклом for /f, вызывая три команды для каждой базы.

На серверах с утилитой ibcmd расширения можно загружать и применять без запуска Конфигуратора. Набор команд и ключей зависит от версии платформы, поэтому сверяйтесь со справкой ibcmd help.

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

Обновление расширений в распределённой информационной базе (РИБ)

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

Порядок для РИБ:

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

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

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

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

Загрузка без ошибок ещё не значит, что доработка работает. Проверьте четыре вещи.

Что проверитьГдеПризнак успеха
Версия расширенияСписок расширений, колонка версииСовпадает с номером, который прислал разработчик
АктивностьФлажок «Активно» в спискеФлажок установлен, сообщений о неприменении нет
ФункциональностьОбъект, который меняет расширениеНовая печатная форма, команда или реквизит на месте
ПраваСеанс обычного пользователяДоработку видит не только администратор

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

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

Как откатить обновление расширения

Откат — это загрузка сохранённой ранее версии .cfe тем же способом, каким вы обновляли. Через Конфигуратор после загрузки снова нужно обновить конфигурацию базы данных.

Когда откат прост:

  • ✅ расширение не хранит данных;
  • ✅ новая версия не добавляла и не удаляла реквизиты;
  • ✅ с момента обновления прошло немного времени.

Когда откат опасен:

  • ❌ новая версия добавила реквизиты, и пользователи успели их заполнить. Возврат к старой версии удалит эти реквизиты вместе со значениями;
  • ❌ новая версия удалила реквизит. Старые значения уже потеряны, обратная загрузка вернёт пустое поле. Здесь помогает только восстановление базы из резервной копии, сделанной до обновления.

Если расширение в хранилище, нужную версию можно получить из истории хранилища и выгрузить в файл. Это удобно, когда старый .cfe не сохранили.

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

Ошибки при обновлении расширений и что с ними делать

Большинство проблем возникает после обновления основной конфигурации, а не самого расширения. Расширение «держится» за заимствованные объекты. Если в новом релизе объект изменился, расширение может перестать применяться.

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

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

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

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