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

· 9 мин

Содержание

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

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

Что проверить до обновления расширения

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

Резервная копия и монопольный доступ

Перед любым обновлением выгрузите информационную базу в файл .dt или сделайте копию файловой базы целиком. Для серверной базы подойдёт бэкап СУБД. Копию кладите вне каталога базы.

Для замены расширения в Конфигураторе нужен монопольный режим, поэтому заранее попросите пользователей выйти. Список активных сеансов смотрите в консоли кластера серверов или в разделе «Администрирование — Активные пользователи» самой базы. Забытый сеанс в фоне — частая причина отказа.

Версии: что с чем совместимо

Выясните три вещи:

  • версия вашей основной конфигурации (в форме «О программе»);
  • версия самого расширения (в списке расширений, колонка с версией, если разработчик её заполнил);
  • на какую версию основной конфигурации рассчитана новая сборка расширения. Это написано в описании от поставщика или в сопроводительном файле.

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

Что сделано в расширении руками

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

Выгрузка: в Конфигураторе откройте список расширений («Конфигурация» — «Расширения конфигурации»), выделите нужное и выберите команду сохранения в файл. Имя файла лучше сразу снабдить датой.

Перед заменой расширения
Выполнено: 0 / 5

Обновление расширения из режима 1С:Предприятие

Если в базе есть библиотека стандартных подсистем (БСП, она входит в большинство типовых решений), расширениями можно управлять без Конфигуратора. Это самый безопасный вариант для обычного пользователя с правами администратора: вы не лезете в структуру базы.

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

После перезапуска базы расширение применяется само. Список объектов и форм обновится, а ссылки на справочники и документы останутся на местах.

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

Этот способ не годится, если в базе нет БСП или раздела управления расширениями (например, в самописной конфигурации). Тогда переходите к Конфигуратору.

Замена файла .cfe через Конфигуратор

Универсальный путь. Работает в любой базе, где есть Конфигуратор и права администратора.

Шаг за шагом

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

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

Когда лучше удалить и поставить заново

Обычно замена поверх справляется. Но иногда расширение «залипает» после неудачного обновления: объекты есть, а формы не открываются. Тогда:

  1. Выгрузите текущее состояние в .cfe (на случай, если понадобится вернуться).
  2. Удалите расширение из списка.
  3. Загрузите свежий файл как новое расширение.

Перед удалением убедитесь, что в расширении нет собственных справочников или документов с данными. Удаление расширения вместе с такими объектами уничтожает и введённые записи.

Расширения в хранилище и автоматическая подгрузка

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

В Конфигураторе откройте хранилище расширения. Затем:

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

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

Обновлять расширение «автоматом» без участия человека можно по расписанию. Для этого пишут bat-файл с вызовом пакетного режима 1cv8. Пример для одной базы:

"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Admin" /P "пароль" /LoadCfg "D:\Ext\MyExt.cfe" -Extension "МоёРасширение" /UpdateDBCfg -Extension "МоёРасширение" /Out "D:\Ext\log.txt" /DisableStartupDialogs

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

Пароль в bat-файле хранить небезопасно. Заведите отдельного пользователя только под обновление расширений и ограничьте доступ к скрипту средствами ОС.

Применение расширения: обновление конфигурации базы данных

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

В Конфигураторе нажмите F7 или команду «Конфигурация» — «Обновить конфигурацию базы данных». Система сравнит структуру расширений с таблицами базы и перестроит их. На больших базах это занимает от нескольких минут до часа, особенно если расширение добавило реквизиты в крупные документы.

Что происходит на разных этапах:

ЭтапЧто делает 1СВремя
ПроверкаСравнивает структуру расширения и базысекунды
РеструктуризацияДобавляет колонки и таблицызависит от размера базы
Обновление регистровПересчитывает индексы при измененияхминуты

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

Для серверной базы понадобится монопольный доступ к ней. Установите сначала запрет на соединения в консоли кластера или с помощью параметров информационной базы. Иначе F7 прервётся сообщением о том, что база занята.

После обновления запустите 1С:Предприятие под администратором и проверьте, что расширение показано как активное и версия в списке новая.

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

Как проверить, что обновление прошло чисто

Запуститься без ошибок мало. Пройдите короткую проверку на копии или в рабочей базе в нерабочее время:

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

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

Диагностика ошибок и проблем совместимости

Большинство сбоев после обновления можно отнести к трём причинам: расширение не соответствует версии конфигурации, повреждён файл, не хватает прав.

Расширение рассчитано на другой релиз

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

Что делать:

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

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

Режим совместимости и версия платформы

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

Проверьте версию платформы в форме «О программе» (или в запуске 1С, колонка версии). Сравните с требованиями к расширению.

Повреждённый файл и права

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

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

Если не помогло

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

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

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

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