Получение свежей версии расширения из хранилища конфигурации и выкладка в рабочую базу
Содержание
Чтобы обновить расширение
из хранилища 1С, откройте Конфигуратор, в окне Конфигурация → Расширения конфигурации откройте дерево нужного расширения и сделайте его окно активным. Затем выполните Конфигурация → Хранилище конфигурации → Обновить конфигурацию из хранилища и после получения нажмите Обновить конфигурацию базы данных (F7) — так изменения дойдут до базы.
Главная ловушка одна: команды меню хранилища действуют на ту конфигурацию, чьё окно сейчас активно. Щёлкнули по дереву основной конфигурации — и вместо расширения обновили типовую. Ниже — порядок действий для Конфигуратора платформы 8.3 с интерфейсом «Такси», от проверки доступа до выкладки .cfe в рабочую базу.
1. Подготовка: расширение подключено к своему хранилищу
У расширения своё хранилище, отдельное от хранилища основной конфигурации. Подключение к одному не даёт доступа к другому. Поэтому сначала убедитесь, что к хранилищу подключено именно расширение.
Как проверить:
- Откройте базу в режиме Конфигуратора.
- Выберите
Конфигурация → Расширения конфигурации. - Выделите расширение в списке и откройте его дерево кнопкой
Конфигурацияв командной панели этого окна. - Щёлкните по заголовку дерева расширения, чтобы окно стало активным.
- Откройте меню
Конфигурация → Хранилище конфигурации.
Если в меню доступны команды Получить из хранилища и История хранилища, подключение есть. Если активна только Подключение к хранилищу... — расширение работает автономно.
Подключение расширения к хранилищу
При подключении укажите путь к хранилищу (каталог или адрес вида tcp://server/repo_ext), имя пользователя хранилища и пароль. Платформа предупредит, что текущее расширение будет заменено версией из хранилища. Если в локальном расширении есть несохранённые в хранилище правки, сначала сохраните его в файл .cfe: Конфигурация → Сохранить конфигурацию в файл при активном окне расширения.
Для сетевого хранилища через сервер хранилища (crserver) версия сервера должна совпадать с версией платформы, из которой вы подключаетесь. При расхождении подключение не пройдёт, и сообщение об ошибке укажет на версию.
Что проверить до получения версии
- 🔑 Права пользователя в хранилище: минимум чтение. Для захвата объектов — право захвата.
- 🔒 Список захваченных вами объектов:
История хранилищаих не покажет, смотрите окноКонфигурация хранилища— там у каждого объекта отображается, кто его захватил. - 📌 Режим совместимости и назначение расширения (
Исправление,Адаптация,Дополнение) в его свойствах. Если их поменяли в хранилище, после получения поменяются и у вас. - 💾 Несохранённые локальные правки. Если вы меняли незахваченные объекты, получение из хранилища их перезапишет.
2. Что поменялось: история версий и сравнение с хранилищем
Перед обновлением полезно знать, что именно приедет. Особенно если расширение правит несколько разработчиков.
История хранилища
Команда Конфигурация → Хранилище конфигурации → История хранилища (окно расширения активно) показывает список версий: номер, дату, пользователя, комментарий и метку. Отберите версии по дате или пользователю — так проще найти нужную поставку.
По каждой версии можно:
- посмотреть список изменённых объектов;
- сравнить версию с соседней или с любой другой;
- получить конфигурацию этой версии в текущее расширение;
- сохранить её в файл
.cfe, не трогая локальное расширение.
Сравнение с хранилищем
Сравнить конфигурацию с хранилищем строит дерево различий между вашим локальным расширением и последней версией в хранилище. Включите в окне сравнения отбор только по различиям, чтобы не листать одинаковые объекты.
На что смотреть в дереве различий:
| Что отличается | Чем грозит при получении |
|---|---|
| Модули объектов и форм | Ваш незахваченный код заменится кодом из хранилища |
| Новые заимствованные объекты | Расширение может не примениться, если в основной конфигурации объекта нет |
| Свойства расширения | Меняется режим совместимости или назначение |
| Удалённые объекты | Объект исчезнет и у вас, вместе с данными его реквизитов в базе |
Если в хранилище удалили реквизит или табличную часть, данные в этих полях пропадут после обновления базы. Проверьте это до F7, а не после.
3. Как обновить расширение из хранилища: три способа
Способ выбирают по задаче: забрать всё, забрать часть объектов или откатиться на старую версию.
| Способ | Когда применять | Риск |
|---|---|---|
| Обновить конфигурацию из хранилища | Нужна последняя версия целиком | Перезапишет все незахваченные правки |
| Получить из хранилища (выборочно) | Нужны только конкретные объекты | Можно забрать объект без связанных с ним |
| Получить версию из истории | Откат или сборка конкретной поставки | Расширение «уедет» назад по всем объектам |
Способ 1. Получение последней версии целиком
- Сделайте окно дерева расширения активным.
- Выберите
Конфигурация → Хранилище конфигурации → Обновить конфигурацию из хранилища. - Если среди изменённых объектов есть захваченные вами, платформа спросит, что делать с вашими правками. Откажитесь от замены, если правки нужно сохранить.
- Дождитесь окончания получения: в окне сообщений появится итог.
Захваченные вами объекты по умолчанию остаются вашими: ваш код в них не затирается.
Способ 2. Выборочное получение объектов
Подходит, когда коллега поправил одну форму, а остальное трогать рано.
- Выделите в дереве расширения нужные объекты.
- Выберите
Получить из хранилища. - В открывшемся окне проверьте список и флажки. Включите получение подчинённых объектов (форм, макетов, модулей), если правки затронули их.
- Нажмите
ОК.
Выборочное получение не тянет зависимости. Если новая форма ссылается на новый реквизит, а реквизит вы не забрали, при проверке модулей появятся ошибки. Забирайте связанные объекты вместе.
Способ 3. Конкретная версия из истории
- Откройте
История хранилища. - Выделите нужную версию.
- Выберите команду получения версии в командной панели окна истории.
Если локальное расширение трогать не хочется, сохраните выбранную версию в .cfe командой сохранения в файл из того же окна. Получится файл для загрузки в другую базу или для сравнения.
4. Конфликты при получении и ручное слияние кода
В хранилище нет автоматического слияния, как в Git. Объект в один момент времени захватывает только один разработчик. Поэтому классических конфликтов в одном модуле не бывает, но бывают три других ситуации.
Вы правили объект, не захватив его
Получение из хранилища затрёт ваши правки. Порядок спасения:
- Сохраните расширение в файл
.cfeдо получения. - Получите версию из хранилища.
- Выберите
Конфигурация → Сравнить, объединить с конфигурацией из файла...и укажите сохранённый.cfe. - В окне сравнения отметьте только свои объекты и выполните объединение.
- Захватите объекты и поместите их в хранилище.
Для модулей в окне объединения можно настроить слияние по процедурам: взять одни процедуры из файла, а другие оставить из текущей версии. Спорные места правьте вручную в модуле после объединения.
Основная конфигурация обновилась, а расширение нет
Типичный случай после установки нового релиза типовой. Расширение заимствует объекты основной конфигурации и перехватывает их методы. Если в новом релизе метод переименовали или удалили, аннотация &Перед, &После или &Вместо указывает в пустоту.
Признаки:
- при обновлении базы данных расширения появляются ошибки применения;
- в режиме Предприятия расширение помечено как не применённое, а в окне сообщений есть причина.
Что делать:
- Откройте модуль заимствованного объекта и найдите перехват из сообщения об ошибке.
- Найдите в основной конфигурации новое имя метода или новый способ обработки.
- Исправьте аннотацию и код, захватив объект в хранилище.
- Проверьте модули:
Конфигурация → Проверка конфигурациипри активном окне расширения. - Поместите исправления в хранилище с комментарием, к какому релизу типовой они относятся.
Помечайте версии хранилища метками вида «для БП 3.0.xxx». Через полгода по истории легко понять, какая версия расширения с каким релизом типовой работала.
Объект захвачен другим пользователем
Получить его можно, изменить нельзя. Захват виден в окне Конфигурация хранилища. Снять чужой захват может администратор хранилища, но правки коллеги при этом останутся у него локально и не попадут в хранилище. Договоритесь с ним, прежде чем отменять захват.
5. Сохранение и обновление расширения в базе данных
Получение из хранилища меняет только редактируемую копию расширения. В базе продолжает работать старая версия, пока вы не обновите конфигурацию базы данных расширения.
- Сделайте окно дерева расширения активным.
- Нажмите
F7илиКонфигурация → Обновить конфигурацию базы данных. - Если изменилась структура данных (реквизиты, табличные части, новые объекты), Конфигуратор покажет список изменений. Прочитайте его и подтвердите.
- Дождитесь сообщения об успешном обновлении.
Обновление расширения не требует монопольного режима, если структура данных расширения не меняется. Если меняется — платформа может потребовать монопольный доступ или отложить реструктуризацию, в зависимости от того, что именно изменилось.
Пользователи, которые уже работают в базе, увидят новое расширение только после перезапуска сеанса. Предупредите их заранее, а массовый перезапуск планируйте на время без активной работы.
Перед обновлением рабочей, а не тестовой базы, сделайте резервную копию. Для файловой базы — выгрузка .dt или копия каталога базы, для клиент-серверной — штатный бэкап СУБД.
6. Тестирование и публикация расширения в рабочей базе
Хорошая практика: хранилище подключено к базе разработки или тестовой копии, а в рабочую базу едет готовый .cfe. Так недоделанные правки коллег не попадут к бухгалтерам.
Проверка на тестовой копии
Что проверить после обновления:
- ✅ расширение применилось без ошибок, в списке расширений нет пометок о проблеме;
- ✅ перехваченные методы срабатывают: проведите документ или откройте форму, которую правили;
- ✅ новые реквизиты видны на формах и сохраняются;
- ✅ печатные формы и отчёты расширения формируются;
- ✅ под пользователем с ограниченными правами расширение тоже работает.
Для пошаговой проверки кода запустите отладку из Конфигуратора (F5) и поставьте точки останова в модулях расширения: отладчик видит их так же, как модули основной конфигурации.
Выкладка в рабочую базу
Через Конфигуратор рабочей базы:
- Сохраните расширение в файл
.cfeв тестовой базе или из истории хранилища. - В рабочей базе откройте
Конфигурация → Расширения конфигурации. - Выделите расширение и загрузите в него конфигурацию из файла.
- Обновите конфигурацию базы данных расширения.
В режиме Предприятия (конфигурации на БСП, например Бухгалтерия 3.0):
- Откройте
Администрирование → Печатные формы, отчеты и обработки → Расширения. - Выделите расширение и обновите его из файла
.cfe. - Перезапустите программу.
Права на эту операцию есть только у пользователя с полными правами. Если расширение загружено в безопасном режиме, а коду нужен доступ к файлам или внешним ресурсам, проверьте флажки безопасного режима в карточке расширения.
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 /?.