Командная разработка расширений 1С через хранилище: от сервера до истории версий
Содержание
Расширение подключают к хранилищу в Конфигураторе: Конфигурация → Расширения конфигурации, выделите нужное расширение и в меню Конфигурация командной панели этого окна выберите Хранилище конфигурации → Подключиться к хранилищу. Укажите адрес хранилища, имя и пароль пользователя хранилища — и расширение начинает жить по тем же правилам захвата и помещения, что и основная конфигурация.
Нужен такой режим, когда расширение правят двое и больше: без хранилища кто-то обязательно затрёт чужой модуль, выгрузив свой .cfe поверх. Хранилище расширения настраивается за 15–20 минут: сервер, пользователи, первое помещение. Дальше каждый разработчик подключается к нему из своей копии базы.
Как устроено хранилище расширения и что подготовить заранее
У каждого расширения своё хранилище. Основная конфигурация и расширение в один каталог не кладутся, два расширения тоже. Если в базе три расширения и все в командной разработке — будет три хранилища.
Сами расширения появились в платформе 8.3.6, хранилище для них добавили в следующих релизах. На практике берите актуальную платформу 8.3.2x: там меньше ограничений на то, что можно заимствовать и менять.
Основную конфигурацию при этом не обязательно ставить на хранилище. Типичный случай: типовая БП или ЗУП обновляется штатно, а доработки живут в расширении, которое ведут несколько разработчиков.
Три варианта размещения хранилища:
| Вариант | Адрес | Когда подходит |
|---|---|---|
| Файловый каталог | D:\Repo\MyExt или \\srv\Repo\MyExt | один-два разработчика в одной сети |
| Сервер хранилища (crserver) | tcp://srv:1542/MyExt | команда, удалённые сотрудники, VPN |
| Публикация через веб-сервер | http://srv/repo/MyExt/repository.1ccr | доступ через интернет, только 80/443 порт |
💡 Для команды берите сервер хранилища. Через сетевую папку тоже работает, но при обрыве связи во время помещения хранилище можно повредить, а права на каталог приходится раздавать на уровне Windows.
Установка сервера хранилища
- Запустите установщик технологической платформы на сервере и отметьте компонент «Сервер хранилища конфигураций 1С:Предприятия».
- Зарегистрируйте службу: это делает установщик либо команда
crserver -instsrvcс указанием порта и каталога данных. Точный набор ключей выведетcrserver -help. - Откройте на брандмауэре порт, на котором слушает служба. По умолчанию это
1542. - Создайте каталог для хранилищ и дайте учётной записи службы полные права на него.
Версия сервера хранилища должна совпадать с версией платформы у разработчиков. Обновили платформу на рабочих местах — обновите и crserver, иначе подключение не пройдёт.
Создание хранилища для расширения
Хранилище создаёт тот, кто первым выложит расширение. Обычно это ведущий разработчик.
- Откройте базу в Конфигураторе с расширением, которое нужно поставить на хранилище.
- Перейдите в
Конфигурация → Расширения конфигурациии выделите расширение. - В меню Конфигурация этого окна выберите
Хранилище конфигурации → Создать хранилище. - Укажите адрес: каталог,
tcp://илиhttp://— по таблице выше. Для сервера хранилища путь после порта — это имя подкаталога внутри каталога данных службы. - Задайте имя и пароль администратора хранилища. Этот пользователь получит все права.
- Подтвердите создание. Расширение помещается в хранилище первой версией, у его объектов в дереве появляется значок блокировки.
Перед созданием проверьте, что в расширении нет незаконченных правок «на потом». Первая версия хранилища становится точкой отсчёта для всей команды.
Если хотите сразу хранить метку релиза, после создания откройте историю хранилища и поставьте метку на версию 1 — например, «Исходное состояние, базовая конфигурация 3.0.x».
Пользователи и права в хранилище расширения
Пользователи хранилища не связаны с пользователями информационной базы. Это отдельный список, и вести его нужно для каждого хранилища расширения отдельно.
Как добавить разработчика:
- Подключитесь к хранилищу под администратором.
- В том же подменю
Хранилище конфигурациивыберитеАдминистрирование. - На закладке пользователей нажмите добавление, введите имя и пароль.
- Отметьте права.
Набор прав небольшой:
- 🔒 Захват объектов — можно брать объекты на редактирование и помещать изменения. Это базовое право разработчика.
- 🗂 Изменение состава версий — можно править комментарии и метки, удалять версии из истории.
- 🛠 Административные функции — управление пользователями, оптимизация хранения, отключение чужих подключений.
Пользователь без галочек может только получать объекты и смотреть историю. Такой логин удобен для тестовой базы или CI-сборки: он не захватит объект случайно.
💡 Заводите каждому свой логин. Общий логин на двоих — это два человека, которые видят захват «самих себя» и затирают друг другу работу.
Если сотрудник ушёл, а его объекты остались захвачены, администратор хранилища снимает захват через то же окно администрирования, без доступа к его базе. Все незафиксированные изменения ушедшего при этом теряются.
Подключение расширения к хранилищу: Конфигуратор и пользовательский режим
Из новой базы, где расширения ещё нет
Самый частый сценарий: новый разработчик развернул копию рабочей базы и хочет подключиться к хранилищу расширения.
- В Конфигураторе откройте
Конфигурация → Расширения конфигурации. - Добавьте новое пустое расширение. Имя и префикс можно оставить предложенные — они будут заменены.
- Выделите это расширение и выберите
Хранилище конфигурации → Подключиться к хранилищу. - Введите адрес хранилища, имя и пароль своего пользователя.
- Конфигуратор сообщит, что расширение будет заменено содержимым хранилища. Согласитесь.
- Дождитесь загрузки и обновите расширение в базе данных: с открытым деревом расширения выполните
Конфигурация → Обновить конфигурацию базы данных(F7).
Если расширение в базе уже есть
Бывает, что .cfe загрузили раньше вручную, а потом решили поставить на хранилище. Конфигуратор всё равно сравнит и предложит заменить расширение
версией из хранилища. Ваши локальные правки, которых нет в хранилище, пропадут. Сохраните их заранее: выделите расширение и сохраните его в файл .cfe.
Что доступно в режиме 1С:Предприятие
В пользовательском режиме к хранилищу не подключаются. Там видно только результат: применённое расширение.
Пользователь с полными правами видит список расширений в Администрирование → Печатные формы, отчеты и обработки → Расширения (в БП, ЗУП и УТ раздел называется так). Через него можно:
- 📥 загрузить расширение
из
.cfeбез Конфигуратора; - ⛔ отключить расширение флагом «Активно» без удаления;
- 🛡 задать флаги безопасного режима и защиты от опасных действий.
Не загружайте .cfe в пользовательском режиме в базу, где то же расширение подключено к хранилищу в Конфигураторе. Загрузка заменит расширение, а связь с хранилищем придётся восстанавливать заново.
Захват, помещение и получение объектов расширения
Цикл работы ничем не отличается от основной конфигурации: захватил, исправил, поместил. Команды вызываются из контекстного меню объекта в дереве расширения или из подменю хранилища.
| Команда | Что делает | Когда нужна |
|---|---|---|
| Захватить в хранилище | Блокирует объект за вами, другие его не изменят | перед правкой |
| Поместить в хранилище | Фиксирует изменения новой версией, снимает захват | правка закончена и проверена |
| Отменить захват | Снимает блокировку, откатывает локальные правки объекта | передумали менять |
| Получить из хранилища | Загружает последнюю версию выбранных объектов | забрать чужие изменения точечно |
| Обновить расширение из хранилища | Получает всё, что изменилось | начало рабочего дня |
Несколько правил, которые экономят время в команде:
- Обновляйтесь перед захватом. Захват не тянет за собой зависимые объекты. Если коллега поменял общий модуль, а вы захватили форму, которая его вызывает, синтаксис-контроль у вас сломается.
- Захватывайте вместе с зависимыми. Добавили реквизит в заимствованный справочник и используете его в форме — захватывайте и справочник, и форму, и помещайте одной версией.
- Пишите комментарий к помещению. «Задача 412: печатная форма акта, исправлена сумма НДС» через полгода стоит больше, чем просто «правки».
- Опция «Оставить объекты захваченными» при помещении подходит, если правка большая и вы хотите зафиксировать промежуточный результат, не отпуская объект.
Особенность заимствованных объектов
Когда вы заимствуете объект основной конфигурации, в расширении появляется его «копия-ссылка». Она тоже объект хранилища: заимствование — это изменение корня расширения и нужного раздела. Захватите корень расширения, позаимствуйте объект, поместите. Иначе коллеги не увидят новый объект и получат ошибку при обновлении.
После обновления основной конфигурации (например, на новый релиз БП) проверьте применимость расширения: в списке расширений есть проверка, которая покажет, какие заимствованные объекты изменились. Чинят несоответствия по обычному циклу — захват, правка, помещение.
История версий расширения и откат изменений
Историю открывают из подменю хранилища командой История хранилища. В ней видно номер версии, автора, дату и комментарий.
Что умеет окно истории:
- 🔍 Сравнить версию с текущим расширением или две версии между собой — видно, какие модули и формы менялись.
- 💾 Сохранить версию в файл — получится
.cfeнужной версии. Так передают расширение на рабочую базу. - 🏷 Установить метку — отмечают версию, которая ушла в эксплуатацию.
- ↩ Получить версию — загрузить старое состояние в свою базу, чтобы посмотреть или откатиться.
Как откатить неудачное помещение
Удалять версии из хранилища ради отката не нужно. Безопасный путь такой:
- Захватите объекты, которые хотите вернуть.
- Через историю получите нужные объекты из прежней версии.
- Проверьте синтаксис и работу.
- Поместите их новой версией с комментарием «Откат изменений версии N».
История остаётся честной: видно и ошибку, и исправление.
Выкладка на рабочую базу по расписанию
Рабочую базу к хранилищу не подключают. Её обновляют готовым .cfe либо пакетно из командной строки. Пример bat для ночного обновления:
"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER /S "srv1c\buh_test" /N "Admin" /P "pass" ^
/ConfigurationRepositoryF "tcp://srv:1542/MyExt" /ConfigurationRepositoryN "build" /ConfigurationRepositoryP "pwd" ^
/ConfigurationRepositoryUpdateCfg -Extension MyExt /UpdateDBCfg -Extension MyExt /Out "C:\logs\ext.log"
Номер платформы в пути подставьте свой. Скрипт подключается к тестовой базе, забирает последнюю версию расширения и применяет её. Пользователь build нужен только для чтения хранилища.
Применение расширения к рабочей базе делайте вне рабочего времени. Пользователи, которые уже в базе, увидят изменения только после перезапуска сеанса.
Если Конфигуратор не подключается или ругается
Если ничего не помогло
Когда хранилище начинает вести себя странно — версии не получаются, сравнение падает — администратор может запустить оптимизацию хранения данных из окна администрирования хранилища. Перед этим сделайте копию каталога хранилища и предупредите команду: на время операции работать с хранилищем никто не сможет.
Крайний вариант — поднять новое хранилище из последней рабочей версии. Сохраните её в .cfe из истории, создайте новое хранилище и раздайте пользователей заново. Старый каталог не удаляйте, пока не убедитесь, что история вам не понадобится.