Как развернуть хранилище конфигураций для командной разработки в 1С 8.3

· 9 мин

Содержание

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

Типичная ситуация: два программиста дорабатывают одну типовую базу, каждый в своей копии, а потом полдня сливают изменения через сравнение .cf-файлов и теряют чьи-то правки. Хранилище конфигураций в 1С:Предприятии решает это блокировкой на уровне объекта и историей версий. Настройка занимает час, если заранее решить, где оно будет жить и кто какие права получит.

Где разместить хранилище: папка, сервер или веб-доступ

Хранилище — это каталог с файлом базы 1cv8ddb.1CD и служебными данными. К нему можно обращаться тремя способами.

ВариантАдрес при подключенииКогда подходитРиски
Локальная или сетевая папкаD:\Repo\ERP_dev или \\srv\Repo\ERP_dev1–2 разработчика в одной локальной сетиСбой сети во время помещения может повредить файл хранилища
Сервер хранилища crservertcp://srv-1c/ERP_devКоманда из 3+ человек, удалённые сотрудники через VPNНужна служба, открытый порт, одинаковая версия платформы
Публикация через веб-серверhttp://…Доступ из интернета без VPNНастройка веб-сервера, защита HTTPS

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

Подготовка сервера хранилища

  1. Запустите установщик платформы на сервере и отметьте компонент Сервер хранилища конфигураций 1С:Предприятия.
  2. Создайте каталог, в котором будут лежать все хранилища, например D:\1C_Repository. Положите его на диск, который попадает в резервное копирование .
  3. Зарегистрируйте сервер как службу Windows и запустите её. Команды выполняются из командной строки от имени администратора:
cd "C:\Program Files\1cv8\8.3.24.1548\bin"
crserver.exe -instsrvc -port 1542 -d "D:\1C_Repository" -usr .\USR1CV8 -pwd ПарольСлужбы
crserver.exe -start
  1. Откройте в брандмауэре входящий TCP-порт 1542 (это порт по умолчанию; если задали другой, указывайте его в адресе: tcp://srv-1c:1600/ERP_dev).
  2. Дайте учётной записи службы полные права на каталог D:\1C_Repository.

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

💡 Номер версии в пути bin из примера условный — подставьте каталог той платформы, что установлена у вас.

Создание хранилища конфигурации в Конфигураторе

Создаёт хранилище один человек — будущий администратор. Берите базу с актуальной конфигурацией: именно она станет версией 1.

  1. Сделайте выгрузку базы в .dt или хотя бы сохраните конфигурацию в .cf — это точка отката.
  2. Откройте базу в Конфигураторе и выполните Конфигурация → Хранилище конфигурации → Создать хранилище….
  3. Укажите адрес. Для сервера — tcp://srv-1c/ERP_dev: часть после имени сервера — это подкаталог внутри каталога, заданного ключом -d. Несуществующую папку сервер создаст сам.
  4. Задайте имя и пароль администратора хранилища. Это учётная запись именно хранилища, она не связана с пользователями базы и Windows.
  5. Подтвердите создание. Платформа поместит конфигурацию в хранилище и подключит к нему текущую базу.

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

Не создавайте второе хранилище из той же базы «на всякий случай» — две параллельные истории одной конфигурации быстро расходятся, и сводить их приходится вручную.

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

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

У пользователя три флага прав:

  • 🔒 Захват объектов — может захватывать и помещать изменения. Без него пользователь только получает версии и смотрит историю.
  • 📚 Изменение состава версий — операции с самой историей версий. Выдавайте ведущему разработчику, а не всем.
  • 🛠 Административные функции — управление пользователями, снятие чужих захватов, настройки хранилища.
Роль в командеЗахватСостав версийАдминистрирование
Разработчик✅——
Ведущий / тимлид✅✅✅
Тестировщик, аналитик———
Сборка релизов (отдельная учётка)———

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

Подключение разработчика

Каждый программист работает в своей отдельной базе. Порядок такой:

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

При подключении собственная конфигурация базы заменяется версией из хранилища. Если в базе были несохранённые доработки, сначала выгрузите их в .cf.

Как организовать ветки и релизы, если веток нет

В платформе нет веток в понимании Git: одно хранилище — одна линейная история. Работу всё равно можно разложить по линиям, если договориться о схеме.

  • 🏷 Метки на версиях. Перед передачей в продуктив ставьте метку на версию в окне истории (Конфигурация → Хранилище конфигурации → История хранилища…): например, «Релиз 2.4 — в продуктив». По метке потом быстро находят, что именно ушло пользователям.
  • 🧪 Отдельное хранилище для поддержки релиза. Сохраните отмеченную версию в .cf и создайте из неё второе хранилище. В основном идёт новая разработка, во втором — только срочные исправления того, что уже работает. Исправление потом переносят в основное сравнением и объединением.
  • 🧩 Расширения в своём хранилище. Расширение конфигурации тоже подключается к хранилищу, отдельно от основной конфигурации. Если доработки живут в расширениях, основная конфигурация остаётся типовой, а обновление поставщика почти не конфликтует с вашим кодом.
  • 🌿 Git вместо хранилища. Когда нужны настоящие ветки, код-ревью и слияния, команды переходят на 1С:EDT с Git. Хранилище при этом часто оставляют как источник для сборочных баз.

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

Ежедневный цикл: захват, правка, помещение

Все команды доступны в окне хранилища (Конфигурация → Хранилище конфигурации → Хранилище…) и из контекстного меню объекта в дереве конфигурации.

Захват

  1. Выделите объект и выполните Захватить в хранилище.
  2. В диалоге оставьте включённым получение актуальной версии захватываемых объектов — тогда вы начнёте правку с последнего помещённого состояния.
  3. Флаг рекурсивного захвата берите только когда нужен весь подчинённый состав, например все формы и макеты документа.

Захваченный вами объект отмечен зелёной галочкой, захваченный коллегой — красным замком. Править объект без захвата нельзя: он открыт только для чтения.

Помещение

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

Получение изменений коллег

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

Договорённости в команде

Хранилище не заменяет регламент. Запишите несколько правил и закрепите их в чате команды:

  • 📌 Общие модули и роли захватывает только тот, кто сейчас реально их правит, и не дольше чем на день. Если правка большая — вынесите код в новый общий модуль.
  • 🗓 Помещение в конце дня обязательно, даже с флагом сохранения захвата. Так работа не потеряется, если сломается ноутбук разработчика.
  • 🚫 Корень конфигурации захватывает только ведущий: при этом блокируются свойства конфигурации, а новые объекты верхнего уровня без него не добавить.
  • 🔁 Получение изменений утром, до начала правок. Так меньше шансов, что вы допишете код поверх старой версии соседнего объекта.

Новый объект верхнего уровня, например справочник, добавляют так: ненадолго захватывают корень Конфигурация (без рекурсии), создают объект и сразу помещают его вместе с корнем. Затем корень отпускают, а сам справочник дорабатывают уже обычным захватом. Если корень держит коллега, добавление придётся отложить — поэтому корень и нельзя держать долго.

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

💡 Захватывайте объекты ровно под задачу и отпускайте сразу после помещения. Чем дольше вы держите общие модули и роли, тем чаще коллеги ждут.

Конфликты, обновление типовой и обслуживание хранилища

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

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

Обновление типовой конфигурации через хранилище

Обновление поставщика — главная операция, где появляется слияние. Порядок:

  1. Предупредите команду и попросите поместить или отпустить все захваты.
  2. Ведущий разработчик рекурсивно захватывает корень конфигурации — объект Конфигурация.
  3. В Конфигураторе выполняется обновление конфигурации поставщика из файла .cf или .cfu с режимом сравнения и объединения. Изменённые вами объекты разбирайте вручную в окне сравнения.
  4. Конфигурация проверяется, база обновляется, тестируется основной функционал.
  5. Результат помещается одной версией с комментарием «Обновление до релиза …», на неё ставится метка.
  6. Остальные выполняют Обновить конфигурацию из хранилища.

Резервное копирование

  • 💾 Копируйте весь каталог хранилища, а не только файл 1cv8ddb.1CD.
  • ⏰ Делайте копию, когда никто не помещает изменения, например ночью. Для надёжности останавливайте службу сервера на время копирования.
  • 📦 Дополнительно сохраняйте отмеченные релизные версии в .cf через историю хранилища — такой файл открывается без хранилища и без сервера.

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

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