Командная разработка расширений 1С через хранилище: от сервера до истории версий

· 9 мин

Содержание

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

Нужен такой режим, когда расширение правят двое и больше: без хранилища кто-то обязательно затрёт чужой модуль, выгрузив свой .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. Запустите установщик технологической платформы на сервере и отметьте компонент «Сервер хранилища конфигураций 1С:Предприятия».
  2. Зарегистрируйте службу: это делает установщик либо команда crserver -instsrvc с указанием порта и каталога данных. Точный набор ключей выведет crserver -help.
  3. Откройте на брандмауэре порт, на котором слушает служба. По умолчанию это 1542.
  4. Создайте каталог для хранилищ и дайте учётной записи службы полные права на него.

Версия сервера хранилища должна совпадать с версией платформы у разработчиков. Обновили платформу на рабочих местах — обновите и crserver, иначе подключение не пройдёт.

Создание хранилища для расширения

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

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

Перед созданием проверьте, что в расширении нет незаконченных правок «на потом». Первая версия хранилища становится точкой отсчёта для всей команды.

Если хотите сразу хранить метку релиза, после создания откройте историю хранилища и поставьте метку на версию 1 — например, «Исходное состояние, базовая конфигурация 3.0.x».

Пользователи и права в хранилище расширения

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

Как добавить разработчика:

  1. Подключитесь к хранилищу под администратором.
  2. В том же подменю Хранилище конфигурации выберите Администрирование.
  3. На закладке пользователей нажмите добавление, введите имя и пароль.
  4. Отметьте права.

Набор прав небольшой:

  • 🔒 Захват объектов — можно брать объекты на редактирование и помещать изменения. Это базовое право разработчика.
  • 🗂 Изменение состава версий — можно править комментарии и метки, удалять версии из истории.
  • 🛠 Административные функции — управление пользователями, оптимизация хранения, отключение чужих подключений.

Пользователь без галочек может только получать объекты и смотреть историю. Такой логин удобен для тестовой базы или CI-сборки: он не захватит объект случайно.

💡 Заводите каждому свой логин. Общий логин на двоих — это два человека, которые видят захват «самих себя» и затирают друг другу работу.

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

Подключение расширения к хранилищу: Конфигуратор и пользовательский режим

Из новой базы, где расширения ещё нет

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

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

Если расширение в базе уже есть

Бывает, что .cfe загрузили раньше вручную, а потом решили поставить на хранилище. Конфигуратор всё равно сравнит и предложит заменить расширение версией из хранилища. Ваши локальные правки, которых нет в хранилище, пропадут. Сохраните их заранее: выделите расширение и сохраните его в файл .cfe.

Что доступно в режиме 1С:Предприятие

В пользовательском режиме к хранилищу не подключаются. Там видно только результат: применённое расширение.

Пользователь с полными правами видит список расширений в Администрирование → Печатные формы, отчеты и обработки → Расширения (в БП, ЗУП и УТ раздел называется так). Через него можно:

Не загружайте .cfe в пользовательском режиме в базу, где то же расширение подключено к хранилищу в Конфигураторе. Загрузка заменит расширение, а связь с хранилищем придётся восстанавливать заново.

Захват, помещение и получение объектов расширения

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

КомандаЧто делаетКогда нужна
Захватить в хранилищеБлокирует объект за вами, другие его не изменятперед правкой
Поместить в хранилищеФиксирует изменения новой версией, снимает захватправка закончена и проверена
Отменить захватСнимает блокировку, откатывает локальные правки объектапередумали менять
Получить из хранилищаЗагружает последнюю версию выбранных объектовзабрать чужие изменения точечно
Обновить расширение из хранилищаПолучает всё, что изменилосьначало рабочего дня

Несколько правил, которые экономят время в команде:

  1. Обновляйтесь перед захватом. Захват не тянет за собой зависимые объекты. Если коллега поменял общий модуль, а вы захватили форму, которая его вызывает, синтаксис-контроль у вас сломается.
  2. Захватывайте вместе с зависимыми. Добавили реквизит в заимствованный справочник и используете его в форме — захватывайте и справочник, и форму, и помещайте одной версией.
  3. Пишите комментарий к помещению. «Задача 412: печатная форма акта, исправлена сумма НДС» через полгода стоит больше, чем просто «правки».
  4. Опция «Оставить объекты захваченными» при помещении подходит, если правка большая и вы хотите зафиксировать промежуточный результат, не отпуская объект.

Особенность заимствованных объектов

Когда вы заимствуете объект основной конфигурации, в расширении появляется его «копия-ссылка». Она тоже объект хранилища: заимствование — это изменение корня расширения и нужного раздела. Захватите корень расширения, позаимствуйте объект, поместите. Иначе коллеги не увидят новый объект и получат ошибку при обновлении.

После обновления основной конфигурации (например, на новый релиз БП) проверьте применимость расширения: в списке расширений есть проверка, которая покажет, какие заимствованные объекты изменились. Чинят несоответствия по обычному циклу — захват, правка, помещение.

История версий расширения и откат изменений

Историю открывают из подменю хранилища командой История хранилища. В ней видно номер версии, автора, дату и комментарий.

Что умеет окно истории:

  • 🔍 Сравнить версию с текущим расширением или две версии между собой — видно, какие модули и формы менялись.
  • 💾 Сохранить версию в файл — получится .cfe нужной версии. Так передают расширение на рабочую базу.
  • 🏷 Установить метку — отмечают версию, которая ушла в эксплуатацию.
  • ↩ Получить версию — загрузить старое состояние в свою базу, чтобы посмотреть или откатиться.

Как откатить неудачное помещение

Удалять версии из хранилища ради отката не нужно. Безопасный путь такой:

  1. Захватите объекты, которые хотите вернуть.
  2. Через историю получите нужные объекты из прежней версии.
  3. Проверьте синтаксис и работу.
  4. Поместите их новой версией с комментарием «Откат изменений версии 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 из истории, создайте новое хранилище и раздайте пользователей заново. Старый каталог не удаляйте, пока не убедитесь, что история вам не понадобится.

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

Можно ли поставить на хранилище только расширение, а основную конфигурацию оставить без хранилища?
Да. Хранилища основной конфигурации и расширения независимы. Типовая конфигурация может обновляться штатно, а расширение — вестись командой через своё хранилище.
Можно ли хранить несколько расширений в одном хранилище?
Нет. Каждому расширению нужно своё хранилище: отдельный каталог или отдельное имя на сервере хранилища.
Нужна ли лицензия для сервера хранилища?
Отдельная лицензия для службы crserver не требуется. Лицензия нужна разработчикам для запуска Конфигуратора.
Как перенести хранилище расширения на другой сервер?
Остановите службу или попросите команду не работать с хранилищем, скопируйте каталог целиком на новый сервер и переподключите базы по новому адресу. История и пользователи сохранятся.
Почему коллега видит мои изменения только после обновления?
Хранилище не рассылает изменения само. Каждый разработчик забирает их командой обновления из хранилища и затем применяет расширение к своей базе.