Как развернуть хранилище конфигураций для командной разработки в 1С 8.3
Содержание
Хранилище конфигурации создают в Конфигураторе командой Конфигурация → Хранилище конфигурации → Создать хранилище…: указываете папку или адрес сервера tcp://…, задаёте администратора, и текущая конфигурация базы становится первой версией. Дальше каждый разработчик подключает к хранилищу свою базу, захватывает объекты, правит их и помещает обратно.
Типичная ситуация: два программиста дорабатывают одну типовую базу, каждый в своей копии, а потом полдня сливают изменения через сравнение .cf-файлов и теряют чьи-то правки. Хранилище конфигураций в 1С:Предприятии решает это блокировкой на уровне объекта и историей версий. Настройка занимает час, если заранее решить, где оно будет жить и кто какие права получит.
Где разместить хранилище: папка, сервер или веб-доступ
Хранилище — это каталог с файлом базы 1cv8ddb.1CD и служебными данными. К нему можно обращаться тремя способами.
| Вариант | Адрес при подключении | Когда подходит | Риски |
|---|---|---|---|
| Локальная или сетевая папка | D:\Repo\ERP_dev или \\srv\Repo\ERP_dev | 1–2 разработчика в одной локальной сети | Сбой сети во время помещения может повредить файл хранилища |
Сервер хранилища crserver | tcp://srv-1c/ERP_dev | Команда из 3+ человек, удалённые сотрудники через VPN | Нужна служба, открытый порт, одинаковая версия платформы |
| Публикация через веб-сервер | http://… | Доступ из интернета без VPN | Настройка веб-сервера, защита HTTPS |
Для постоянной командной работы почти всегда выбирают сервер хранилища. Сетевая папка проще, но клиент работает с файлом напрямую, и обрыв соединения в момент записи — частая причина повреждения.
Подготовка сервера хранилища
- Запустите установщик платформы на сервере и отметьте компонент
Сервер хранилища конфигураций 1С:Предприятия. - Создайте каталог, в котором будут лежать все хранилища, например
D:\1C_Repository. Положите его на диск, который попадает в резервное копирование . - Зарегистрируйте сервер как службу 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
- Откройте в брандмауэре входящий TCP-порт
1542(это порт по умолчанию; если задали другой, указывайте его в адресе:tcp://srv-1c:1600/ERP_dev). - Дайте учётной записи службы полные права на каталог
D:\1C_Repository.
Версия сервера хранилища должна совпадать с версией платформы, на которой работают разработчики. Обновили платформу у программистов — обновите и crserver, иначе подключение завершится ошибкой о несовместимых версиях. Перед остановкой службы для обновления предупредите команду: незавершённые помещения прервутся.
💡 Номер версии в пути bin из примера условный — подставьте каталог той платформы, что установлена у вас.
Создание хранилища конфигурации в Конфигураторе
Создаёт хранилище один человек — будущий администратор. Берите базу с актуальной конфигурацией: именно она станет версией 1.
- Сделайте выгрузку базы в .dt или хотя бы сохраните конфигурацию в .cf — это точка отката.
- Откройте базу в Конфигураторе и выполните
Конфигурация → Хранилище конфигурации → Создать хранилище…. - Укажите адрес. Для сервера —
tcp://srv-1c/ERP_dev: часть после имени сервера — это подкаталог внутри каталога, заданного ключом-d. Несуществующую папку сервер создаст сам. - Задайте имя и пароль администратора хранилища. Это учётная запись именно хранилища, она не связана с пользователями базы и Windows.
- Подтвердите создание. Платформа поместит конфигурацию в хранилище и подключит к нему текущую базу.
После этого в дереве конфигурации у объектов появятся значки состояния, а в меню хранилища станут доступны команды захвата и помещения. Если конфигурация на поддержке поставщика, настройки поддержки тоже уходят в хранилище — обновлять типовую дальше придётся через него.
Не создавайте второе хранилище из той же базы «на всякий случай» — две параллельные истории одной конфигурации быстро расходятся, и сводить их приходится вручную.
Пользователи хранилища и права доступа
Пользователей заводит администратор: Конфигурация → Хранилище конфигурации → Администрирование…. В списке пользователей добавьте учётную запись для каждого разработчика — общий логин на всех убивает смысл истории, потому что в ней не видно, кто что поместил.
У пользователя три флага прав:
- 🔒 Захват объектов — может захватывать и помещать изменения. Без него пользователь только получает версии и смотрит историю.
- 📚 Изменение состава версий — операции с самой историей версий. Выдавайте ведущему разработчику, а не всем.
- 🛠 Административные функции — управление пользователями, снятие чужих захватов, настройки хранилища.
| Роль в команде | Захват | Состав версий | Администрирование |
|---|---|---|---|
| Разработчик | ✅ | — | — |
| Ведущий / тимлид | ✅ | ✅ | ✅ |
| Тестировщик, аналитик | — | — | — |
| Сборка релизов (отдельная учётка) | — | — | — |
Учётная запись без прав захвата подходит тестовым и сборочным базам: они подключены к хранилищу только чтобы забирать свежие версии.
Подключение разработчика
Каждый программист работает в своей отдельной базе. Порядок такой:
- Создайте пустую информационную базу или скопируйте рабочую через .dt (если для отладки нужны данные).
- Откройте её в Конфигураторе и выполните
Конфигурация → Хранилище конфигурации → Подключиться к хранилищу…. - Введите адрес, логин и пароль своего пользователя хранилища.
- Согласитесь на замену конфигурации базы конфигурацией из хранилища.
- Обновите конфигурацию базы данных (
F7).
При подключении собственная конфигурация базы заменяется версией из хранилища. Если в базе были несохранённые доработки, сначала выгрузите их в .cf.
Как организовать ветки и релизы, если веток нет
В платформе нет веток в понимании Git: одно хранилище — одна линейная история. Работу всё равно можно разложить по линиям, если договориться о схеме.
- 🏷 Метки на версиях. Перед передачей в продуктив ставьте метку на версию в окне истории (
Конфигурация → Хранилище конфигурации → История хранилища…): например, «Релиз 2.4 — в продуктив». По метке потом быстро находят, что именно ушло пользователям. - 🧪 Отдельное хранилище для поддержки релиза. Сохраните отмеченную версию в .cf и создайте из неё второе хранилище. В основном идёт новая разработка, во втором — только срочные исправления того, что уже работает. Исправление потом переносят в основное сравнением и объединением.
- 🧩 Расширения в своём хранилище. Расширение конфигурации тоже подключается к хранилищу, отдельно от основной конфигурации. Если доработки живут в расширениях, основная конфигурация остаётся типовой, а обновление поставщика почти не конфликтует с вашим кодом.
- 🌿 Git вместо хранилища. Когда нужны настоящие ветки, код-ревью и слияния, команды переходят на 1С:EDT с Git. Хранилище при этом часто оставляют как источник для сборочных баз.
Простое правило для небольшой команды: основное хранилище, метка на каждом релизе и одна база «тест», которая забирает версии без права захвата.
Ежедневный цикл: захват, правка, помещение
Все команды доступны в окне хранилища (Конфигурация → Хранилище конфигурации → Хранилище…) и из контекстного меню объекта в дереве конфигурации.
Захват
- Выделите объект и выполните
Захватить в хранилище. - В диалоге оставьте включённым получение актуальной версии захватываемых объектов — тогда вы начнёте правку с последнего помещённого состояния.
- Флаг рекурсивного захвата берите только когда нужен весь подчинённый состав, например все формы и макеты документа.
Захваченный вами объект отмечен зелёной галочкой, захваченный коллегой — красным замком. Править объект без захвата нельзя: он открыт только для чтения.
Помещение
- Проверьте модули синтаксически и убедитесь, что база обновляется без ошибок.
- Выполните
Поместить в хранилищедля своих объектов. - Напишите комментарий по сути: номер задачи и что изменено. «Правки» и пустая строка через месяц не скажут ничего.
- Если работа не закончена, а промежуточный результат нужно сохранить, включите флаг сохранения захвата: объекты уйдут в хранилище, но останутся за вами.
Получение изменений коллег
Команда Обновить конфигурацию из хранилища забирает все помещённые с прошлого раза изменения. Получить из хранилища — только выбранные объекты. После получения обязательно обновите конфигурацию базы данных, иначе отладка пойдёт на старой структуре.
Договорённости в команде
Хранилище не заменяет регламент. Запишите несколько правил и закрепите их в чате команды:
- 📌 Общие модули и роли захватывает только тот, кто сейчас реально их правит, и не дольше чем на день. Если правка большая — вынесите код в новый общий модуль.
- 🗓 Помещение в конце дня обязательно, даже с флагом сохранения захвата. Так работа не потеряется, если сломается ноутбук разработчика.
- 🚫 Корень конфигурации захватывает только ведущий: при этом блокируются свойства конфигурации, а новые объекты верхнего уровня без него не добавить.
- 🔁 Получение изменений утром, до начала правок. Так меньше шансов, что вы допишете код поверх старой версии соседнего объекта.
Новый объект верхнего уровня, например справочник, добавляют так: ненадолго захватывают корень Конфигурация (без рекурсии), создают объект и сразу помещают его вместе с корнем. Затем корень отпускают, а сам справочник дорабатывают уже обычным захватом. Если корень держит коллега, добавление придётся отложить — поэтому корень и нельзя держать долго.
💡 Захватывайте объекты ровно под задачу и отпускайте сразу после помещения. Чем дольше вы держите общие модули и роли, тем чаще коллеги ждут.
Конфликты, обновление типовой и обслуживание хранилища
Блокировка захватом исключает одновременную правку одного объекта. Поэтому классических конфликтов слияния, как в Git, почти нет, а проблемы возникают в других местах.
Обновление типовой конфигурации через хранилище
Обновление поставщика — главная операция, где появляется слияние. Порядок:
- Предупредите команду и попросите поместить или отпустить все захваты.
- Ведущий разработчик рекурсивно захватывает корень конфигурации — объект
Конфигурация. - В Конфигураторе выполняется обновление конфигурации поставщика из файла .cf или .cfu с режимом сравнения и объединения. Изменённые вами объекты разбирайте вручную в окне сравнения.
- Конфигурация проверяется, база обновляется, тестируется основной функционал.
- Результат помещается одной версией с комментарием «Обновление до релиза …», на неё ставится метка.
- Остальные выполняют
Обновить конфигурацию из хранилища.
Резервное копирование
- 💾 Копируйте весь каталог хранилища, а не только файл
1cv8ddb.1CD. - ⏰ Делайте копию, когда никто не помещает изменения, например ночью. Для надёжности останавливайте службу сервера на время копирования.
- 📦 Дополнительно сохраняйте отмеченные релизные версии в .cf через историю хранилища — такой файл открывается без хранилища и без сервера.