Получение свежей версии расширения из хранилища конфигурации и выкладка в рабочую базу

· 10 мин

Содержание

Чтобы обновить расширение из хранилища 1С, откройте Конфигуратор, в окне Конфигурация → Расширения конфигурации откройте дерево нужного расширения и сделайте его окно активным. Затем выполните Конфигурация → Хранилище конфигурации → Обновить конфигурацию из хранилища и после получения нажмите Обновить конфигурацию базы данных (F7) — так изменения дойдут до базы.

Главная ловушка одна: команды меню хранилища действуют на ту конфигурацию, чьё окно сейчас активно. Щёлкнули по дереву основной конфигурации — и вместо расширения обновили типовую. Ниже — порядок действий для Конфигуратора платформы 8.3 с интерфейсом «Такси», от проверки доступа до выкладки .cfe в рабочую базу.

1. Подготовка: расширение подключено к своему хранилищу

У расширения своё хранилище, отдельное от хранилища основной конфигурации. Подключение к одному не даёт доступа к другому. Поэтому сначала убедитесь, что к хранилищу подключено именно расширение.

Как проверить:

  1. Откройте базу в режиме Конфигуратора.
  2. Выберите Конфигурация → Расширения конфигурации.
  3. Выделите расширение в списке и откройте его дерево кнопкой Конфигурация в командной панели этого окна.
  4. Щёлкните по заголовку дерева расширения, чтобы окно стало активным.
  5. Откройте меню Конфигурация → Хранилище конфигурации.

Если в меню доступны команды Получить из хранилища и История хранилища, подключение есть. Если активна только Подключение к хранилищу... — расширение работает автономно.

Подключение расширения к хранилищу

При подключении укажите путь к хранилищу (каталог или адрес вида tcp://server/repo_ext), имя пользователя хранилища и пароль. Платформа предупредит, что текущее расширение будет заменено версией из хранилища. Если в локальном расширении есть несохранённые в хранилище правки, сначала сохраните его в файл .cfe: Конфигурация → Сохранить конфигурацию в файл при активном окне расширения.

Для сетевого хранилища через сервер хранилища (crserver) версия сервера должна совпадать с версией платформы, из которой вы подключаетесь. При расхождении подключение не пройдёт, и сообщение об ошибке укажет на версию.

Что проверить до получения версии

  • 🔑 Права пользователя в хранилище: минимум чтение. Для захвата объектов — право захвата.
  • 🔒 Список захваченных вами объектов: История хранилища их не покажет, смотрите окно Конфигурация хранилища — там у каждого объекта отображается, кто его захватил.
  • 📌 Режим совместимости и назначение расширения (Исправление, Адаптация, Дополнение) в его свойствах. Если их поменяли в хранилище, после получения поменяются и у вас.
  • 💾 Несохранённые локальные правки. Если вы меняли незахваченные объекты, получение из хранилища их перезапишет.

2. Что поменялось: история версий и сравнение с хранилищем

Перед обновлением полезно знать, что именно приедет. Особенно если расширение правит несколько разработчиков.

История хранилища

Команда Конфигурация → Хранилище конфигурации → История хранилища (окно расширения активно) показывает список версий: номер, дату, пользователя, комментарий и метку. Отберите версии по дате или пользователю — так проще найти нужную поставку.

По каждой версии можно:

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

Сравнение с хранилищем

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

На что смотреть в дереве различий:

Что отличаетсяЧем грозит при получении
Модули объектов и формВаш незахваченный код заменится кодом из хранилища
Новые заимствованные объектыРасширение может не примениться, если в основной конфигурации объекта нет
Свойства расширенияМеняется режим совместимости или назначение
Удалённые объектыОбъект исчезнет и у вас, вместе с данными его реквизитов в базе

Если в хранилище удалили реквизит или табличную часть, данные в этих полях пропадут после обновления базы. Проверьте это до F7, а не после.

3. Как обновить расширение из хранилища: три способа

Способ выбирают по задаче: забрать всё, забрать часть объектов или откатиться на старую версию.

СпособКогда применятьРиск
Обновить конфигурацию из хранилищаНужна последняя версия целикомПерезапишет все незахваченные правки
Получить из хранилища (выборочно)Нужны только конкретные объектыМожно забрать объект без связанных с ним
Получить версию из историиОткат или сборка конкретной поставкиРасширение «уедет» назад по всем объектам

Способ 1. Получение последней версии целиком

  1. Сделайте окно дерева расширения активным.
  2. Выберите Конфигурация → Хранилище конфигурации → Обновить конфигурацию из хранилища.
  3. Если среди изменённых объектов есть захваченные вами, платформа спросит, что делать с вашими правками. Откажитесь от замены, если правки нужно сохранить.
  4. Дождитесь окончания получения: в окне сообщений появится итог.

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

Способ 2. Выборочное получение объектов

Подходит, когда коллега поправил одну форму, а остальное трогать рано.

  1. Выделите в дереве расширения нужные объекты.
  2. Выберите Получить из хранилища.
  3. В открывшемся окне проверьте список и флажки. Включите получение подчинённых объектов (форм, макетов, модулей), если правки затронули их.
  4. Нажмите ОК.

Выборочное получение не тянет зависимости. Если новая форма ссылается на новый реквизит, а реквизит вы не забрали, при проверке модулей появятся ошибки. Забирайте связанные объекты вместе.

Способ 3. Конкретная версия из истории

  1. Откройте История хранилища.
  2. Выделите нужную версию.
  3. Выберите команду получения версии в командной панели окна истории.

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

Какой у вас случай?

4. Конфликты при получении и ручное слияние кода

В хранилище нет автоматического слияния, как в Git. Объект в один момент времени захватывает только один разработчик. Поэтому классических конфликтов в одном модуле не бывает, но бывают три других ситуации.

Вы правили объект, не захватив его

Получение из хранилища затрёт ваши правки. Порядок спасения:

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

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

Основная конфигурация обновилась, а расширение нет

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

Признаки:

  • при обновлении базы данных расширения появляются ошибки применения;
  • в режиме Предприятия расширение помечено как не применённое, а в окне сообщений есть причина.

Что делать:

  1. Откройте модуль заимствованного объекта и найдите перехват из сообщения об ошибке.
  2. Найдите в основной конфигурации новое имя метода или новый способ обработки.
  3. Исправьте аннотацию и код, захватив объект в хранилище.
  4. Проверьте модули: Конфигурация → Проверка конфигурации при активном окне расширения.
  5. Поместите исправления в хранилище с комментарием, к какому релизу типовой они относятся.

Помечайте версии хранилища метками вида «для БП 3.0.xxx». Через полгода по истории легко понять, какая версия расширения с каким релизом типовой работала.

Объект захвачен другим пользователем

Получить его можно, изменить нельзя. Захват виден в окне Конфигурация хранилища. Снять чужой захват может администратор хранилища, но правки коллеги при этом останутся у него локально и не попадут в хранилище. Договоритесь с ним, прежде чем отменять захват.

5. Сохранение и обновление расширения в базе данных

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

  1. Сделайте окно дерева расширения активным.
  2. Нажмите F7 или Конфигурация → Обновить конфигурацию базы данных.
  3. Если изменилась структура данных (реквизиты, табличные части, новые объекты), Конфигуратор покажет список изменений. Прочитайте его и подтвердите.
  4. Дождитесь сообщения об успешном обновлении.

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

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

Перед обновлением рабочей, а не тестовой базы, сделайте резервную копию. Для файловой базы — выгрузка .dt или копия каталога базы, для клиент-серверной — штатный бэкап СУБД.

6. Тестирование и публикация расширения в рабочей базе

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

Проверка на тестовой копии

Что проверить после обновления:

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

Для пошаговой проверки кода запустите отладку из Конфигуратора (F5) и поставьте точки останова в модулях расширения: отладчик видит их так же, как модули основной конфигурации.

Выкладка в рабочую базу

Через Конфигуратор рабочей базы:

  1. Сохраните расширение в файл .cfe в тестовой базе или из истории хранилища.
  2. В рабочей базе откройте Конфигурация → Расширения конфигурации.
  3. Выделите расширение и загрузите в него конфигурацию из файла.
  4. Обновите конфигурацию базы данных расширения.

В режиме Предприятия (конфигурации на БСП, например Бухгалтерия 3.0):

  1. Откройте Администрирование → Печатные формы, отчеты и обработки → Расширения.
  2. Выделите расширение и обновите его из файла .cfe.
  3. Перезапустите программу.

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

Перед выкладкой расширения в рабочую базу
Выполнено: 0 / 5

7. Автоматическое обновление расширения из хранилища командной строкой

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

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER ^
  /S "server\base_test" /N "Администратор" /P "pass" ^
  /ConfigurationRepositoryF "tcp://repo-server/ext_repo" ^
  /ConfigurationRepositoryN "builder" /ConfigurationRepositoryP "repo_pass" ^
  /ConfigurationRepositoryUpdateCfg -Extension "МоеРасширение" -force ^
  /UpdateDBCfg -Extension "МоеРасширение" ^
  /Out "C:\logs\ext_update.log" /DisableStartupDialogs

Что делает команда:

  • /ConfigurationRepositoryUpdateCfg получает последнюю версию расширения из хранилища;
  • -v <номер> после неё позволяет взять конкретную версию вместо последней;
  • -force получает изменения без вопросов о захваченных объектах;
  • /UpdateDBCfg -Extension обновляет конфигурацию базы данных расширения;
  • /Out пишет журнал, по которому видно, чем закончился запуск.

Выгрузить расширение в файл для рабочей базы можно отдельным запуском с /DumpCfg "C:\build\ext.cfe" -Extension "МоеРасширение", а загрузить в целевую базу — через /LoadCfg с тем же параметром -Extension.

Пароль в bat-файле открытым текстом — плохая идея на общем сервере. Храните скрипт в каталоге с ограниченным доступом или передавайте пароли из переменных окружения. Полный список параметров для вашей версии платформы смотрите в справке 1cv8 /?.

Если расширение не обновляется: разбор ошибок

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

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

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