Хранилище конфигурации 1С для командной разработки: от создания до разбора ошибок
Содержание
Хранилище конфигурации 1С — это общая база версий, через которую несколько разработчиков меняют одну конфигурацию и не затирают работу друг друга. Работает оно по принципу «захватил → изменил → поместил»: объект, захваченный одним человеком, остальные видят только для чтения. Все команды собраны в Конфигураторе: Конфигурация → Хранилище конфигурации.
Ниже — как хранилище устроено внутри, какие объекты в нём живут по своим правилам, как его настроить и как сделать так, чтобы оно не тормозило на большой конфигурации вроде ERP или БП 3.0.
Как работает хранилище конфигурации 1С и кому оно нужно
У каждого разработчика своя информационная база — копия рабочей или отдельная тестовая. Эти базы подключены к одному хранилищу. Хранилище хранит эталонную конфигурацию и всю историю её изменений.
Цикл работы одинаков для всех:
- 🔒 Разработчик захватывает объект — например, документ «Реализация товаров и услуг» или общий модуль.
- ✏️ Меняет его в своей базе и проверяет.
- 📤 Помещает изменения в хранилище с комментарием. Создаётся новая версия.
- 📥 Остальные получают изменения к себе.
Кому хранилище нужно:
- 👥 командам от двух человек, которые правят одну конфигурацию;
- 🧾 одиночке, которому важна история: кто, когда и зачем поменял модуль;
- 🏢 компаниям, где доработки идут в отдельной базе, а в рабочую выкатываются проверенные версии.
Хранилище работает только с конфигурацией. Данные базы — справочники, документы, остатки — в нём не хранятся и между базами не переносятся.
Архитектура хранилища: где лежат версии и как к ним подключаются
Физически хранилище — каталог с файлом базы версий 1cv8ddb.1CD и служебными файлами. Подключиться к
нему можно тремя способами.
| Способ | Адрес при подключении | Когда подходит | Минусы |
|---|---|---|---|
| Файловый каталог | D:\Repo\ERP или \\server\Repo\ERP | 1-2 разработчика в одной сети | Медленно по сети, риск повредить файл при обрыве |
| Сервер хранилища (crserver) | tcp://server/D:\Repo\ERP | Команда, большая конфигурация | Нужно установить и запустить службу |
| Через веб-сервер | http://server/repo/repo.1ccr | Удалённые разработчики без VPN | Нужна публикация на IIS или Apache |
Сервер хранилища ставится вместе с платформой: компонент «Сервер хранилища конфигураций 1С:Предприятия». По умолчанию он слушает порт 1542. Это отдельная служба, она не связана с кластером серверов 1С и его портами 1540-1541.
Регистрация службы из командной строки, запущенной от имени администратора:
cd "C:\Program Files\1cv8\8.3.24.1548\bin"
crserver.exe -instsrvc -usr .\USR1CV8 -pwd "Пароль" -port 1542 -d "D:\Repo"
crserver.exe -start
Каталог из параметра -d — корень, внутри которого лежат хранилища. Номер платформы в пути замените на свой. Версия сервера хранилища должна совпадать с версией платформы, из которой к нему подключаются.
Не открывайте файловое хранилище одновременно из сетевой папки и через crserver. Работайте с ним одним способом, иначе блокировки начинают конфликтовать.
Объекты в хранилище: что захватывается и почему это важно
Хранилище оперирует объектами метаданных, а не строками кода. Захватить можно любой узел дерева конфигурации, но вести себя они будут по-разному.
Основные группы объектов
- 📁 Корень «Конфигурация» — свойства конфигурации, основные роли, модули приложения и сеанса. Пока он захвачен, коллеги не могут менять эти свойства, поэтому держать корень долго нельзя.
- 📄 Прикладные объекты — справочники, документы, регистры. Реквизиты и табличные части входят в объект и захватываются вместе с ним.
- 🪟 Формы, макеты, команды — подчинённые объекты. Их можно захватить отдельно от владельца. Два человека могут одновременно править разные формы одного документа.
- ⚙️ Общие модули, общие формы, общие макеты — самостоятельные объекты, захват по одному.
- 🔑 Роли — права на объекты хранятся внутри ролей, а не внутри справочника или документа.
- 🗂 Подсистемы — состав подсистемы хранится в самой подсистеме.
Скрытые зависимости
Здесь новички чаще всего ошибаются. Добавили новый документ — этого мало:
- Чтобы документ попал в подсистему, нужно захватить подсистему.
- Чтобы дать на него права, нужно захватить роли, где эти права выставляются.
- Если документ участвует в плане обмена, нужно захватить план обмена.
- Для добавления объекта верхнего уровня платформа может потребовать захват корня конфигурации — захватите его, добавьте объект и сразу поместите.
Если поместить новый документ без ролей, коллеги получат его, но без прав пользователи его не увидят. Ошибку найдут только при тестировании.
Расширения конфигурации подключаются к своему, отдельному хранилищу. Команды те же, только вызываются из окна расширений.
Настройка хранилища 1С: пошаговая инструкция
Шаг 1. Создать хранилище
- Откройте в Конфигураторе базу с актуальной конфигурацией — она станет первой версией.
- Выполните
Конфигурация → Хранилище конфигурации → Создать хранилище. - Укажите адрес: путь к пустому каталогу или
tcp://server/D:\Repo\ERP. - Задайте пользователя-администратора хранилища и пароль.
Создание большой конфигурации занимает от нескольких минут до получаса: платформа помещает в хранилище все объекты.
Шаг 2. Завести пользователей
Откройте Конфигурация → Хранилище конфигурации → Администрирование. На каждого разработчика — свой пользователь. Общий логин «разработчик» лишает историю смысла: не видно, кто что поменял.
Права пользователя хранилища:
| Право | Что даёт |
|---|---|
| Захват объектов | Захватывать и помещать изменения |
| Изменение версий | Править метки и комментарии к версиям |
| Административные функции | Управлять пользователями, снимать чужие захваты, оптимизировать хранилище |
Пользователь без права захвата может только получать версии — так удобно подключать тестовые базы.
Шаг 3. Подключить базы разработчиков
- Сделайте копию рабочей базы для разработчика (выгрузка
.dtи загрузка в новую базу). - В этой базе:
Конфигурация → Хранилище конфигурации → Подключиться к хранилищу. - Введите адрес, имя пользователя и пароль.
- Если конфигурация базы отличается от хранилища, платформа предложит заменить её конфигурацией из хранилища. Соглашайтесь — иначе работать не получится.
- Выполните «Обновить конфигурацию базы данных» (F7), чтобы база перешла на структуру из хранилища.
Конфигурация базы, подключённой к хранилищу, по умолчанию закрыта для изменений. Редактировать можно только захваченные объекты — это и есть защита от случайных правок.
Работа с версиями: захват, помещение, получение и слияние
Захват
Выделите объект в дереве и выберите «Захватить в хранилище». Галочка «Рекурсивно» захватит его вместе с формами и макетами. Если нужна одна форма — снимите галочку и захватите только её.
Перед захватом платформа получает последнюю версию объекта. Поэтому захват всегда идёт со свежего состояния, и вы не перетрёте чужую работу.
Помещение
Команда «Поместить в хранилище» открывает список изменённых объектов. Здесь:
- ✍️ пишите комментарий по делу: номер задачи и суть, например «ЗАД-1452: проверка лимита кредита в заказе»;
- 📌 ставьте флаг «Оставить объекты захваченными», если работа не закончена, а промежуточный результат нужен коллегам;
- 🔍 проверьте, что в список попали все связанные объекты: роли, подсистемы, общие модули.
Получение
«Получить из хранилища» по всей конфигурации — ежедневная привычка, лучше с утра. После получения база данных не обновляется сама: нажмите F7.
Сравнить свою конфигурацию с хранилищем можно командой «Сравнить конфигурацию с хранилищем». Она покажет, что у вас изменено и не помещено.
История и метки
Конфигурация → Хранилище конфигурации → История хранилища показывает версии, авторов, даты и комментарии. Из истории можно:
- 🔎 открыть изменения версии и сравнить её с любой другой;
- 🏷 поставить метку, например «Релиз 2.4 — выкачено в рабочую»;
- 💾 сохранить версию в файл
.cf— для поставки в рабочую базу или для отката.
Откат делается так: сохраните нужную старую версию в .cf, захватите объекты, загрузите или сравните-объедините их с этой версией и поместите как новую. Удалить версии из истории штатными средствами нельзя — история только растёт.
Слияние и ветки
Веток, как в Git, в хранилище нет. Типовая схема с ветками строится на двух хранилищах:
- Основное хранилище — для текущей разработки.
- Отдельное хранилище — для исправлений в выпущенной версии.
- Перенос между ними — через
Конфигурация → Сравнить, объединить с конфигурацией из файлав базе, подключённой к целевому хранилищу, с предварительным захватом затронутых объектов.
При обновлении типовой конфигурации на поддержке порядок такой: захват корня и всех объектов, которые затронет обновление, обновление в одной базе разработчика, проверка, помещение. Остальные получают результат обычным способом.
Оптимизация производительности хранилища
На конфигурации ERP хранилище легко разрастается до десятков гигабайт, а получение версии превращается в получасовое ожидание. Что помогает:
Переход на сервер хранилища
Файловое хранилище по сети — главная причина тормозов. Каждый захват и получение гоняют данные через SMB. Сервер хранилища crserver обрабатывает запросы на стороне сервера и передаёт клиенту только нужное. На команде от трёх человек это даёт кратный выигрыш.
Железо и размещение
- 💽 каталог хранилища — на SSD, не на сетевом хранилище;
- 🛡 антивирус — исключение для каталога хранилища и процесса
crserver.exe; - 🌐 между разработчиками и сервером хранилища — нормальная сеть, а не VPN через половину страны; для удалённых — доступ по HTTP.
Обслуживание
- 🧹 В окне администрирования хранилища есть команда оптимизации данных. Выполняйте её, когда к хранилищу никто не подключён.
- 📦 Снимайте забытые захваты. Объекты, захваченные уволенным сотрудником, держат работу команды. Администратор хранилища может отменить чужой захват.
- 🗜 Если история за годы стала неподъёмной, создайте новое хранилище из текущей версии. Старое оставьте только для чтения как архив.
Автоматизация в пакетном режиме
Тестовые и стендовые базы удобно обновлять из хранилища ночью, без ручных кликов:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /S "srv1c\erp_test" /N "Админ" /P "Пароль" ^
/ConfigurationRepositoryF "tcp://repo-srv/D:\Repo\ERP" ^
/ConfigurationRepositoryN "test_reader" /ConfigurationRepositoryP "Пароль" ^
/ConfigurationRepositoryUpdateCfg -force /UpdateDBCfg /Out "C:\Logs\update_test.log"
Пользователю test_reader достаточно прав только на получение. Если обновление меняет структуру данных, /UpdateDBCfg потребует монопольный доступ: сеансы пользователей тестовой базы будут прерваны, запускайте задание ночью.
Резервная копия хранилища
Хранилище — это вся история разработки. Копируйте его каталог по расписанию. Перед копированием остановите службу crserver или убедитесь, что никто не помещает изменения: копия, снятая в момент записи, может оказаться повреждённой. Остановка службы прервёт подключения разработчиков — делайте это вне рабочего времени.
Типичные ошибки с хранилищем и их решения
Ещё три ошибки организации работы, а не платформы:
- ❌ Держать захват неделями. Захватывайте ровно то, что правите сейчас, и помещайте хотя бы раз в день.
- ❌ Править рабочую базу напрямую, мимо хранилища. Следующее обновление из хранилища затрёт такие правки.
- ❌ Пустые комментарии к версиям. Через полгода история «изменения», «правка», «ещё правка» бесполезна для разбора инцидента.