Хранилище конфигурации 1С для командной разработки: от создания до разбора ошибок

· 9 мин

Содержание

Хранилище конфигурации 1С — это общая база версий, через которую несколько разработчиков меняют одну конфигурацию и не затирают работу друг друга. Работает оно по принципу «захватил → изменил → поместил»: объект, захваченный одним человеком, остальные видят только для чтения. Все команды собраны в Конфигураторе: Конфигурация → Хранилище конфигурации.

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

Как работает хранилище конфигурации 1С и кому оно нужно

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

Цикл работы одинаков для всех:

  1. 🔒 Разработчик захватывает объект — например, документ «Реализация товаров и услуг» или общий модуль.
  2. ✏️ Меняет его в своей базе и проверяет.
  3. 📤 Помещает изменения в хранилище с комментарием. Создаётся новая версия.
  4. 📥 Остальные получают изменения к себе.

Кому хранилище нужно:

  • 👥 командам от двух человек, которые правят одну конфигурацию;
  • 🧾 одиночке, которому важна история: кто, когда и зачем поменял модуль;
  • 🏢 компаниям, где доработки идут в отдельной базе, а в рабочую выкатываются проверенные версии.

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

Архитектура хранилища: где лежат версии и как к ним подключаются

Физически хранилище — каталог с файлом базы версий 1cv8ddb.1CD и служебными файлами. Подключиться к нему можно тремя способами.

СпособАдрес при подключенииКогда подходитМинусы
Файловый каталогD:\Repo\ERP или \\server\Repo\ERP1-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. Чтобы документ попал в подсистему, нужно захватить подсистему.
  2. Чтобы дать на него права, нужно захватить роли, где эти права выставляются.
  3. Если документ участвует в плане обмена, нужно захватить план обмена.
  4. Для добавления объекта верхнего уровня платформа может потребовать захват корня конфигурации — захватите его, добавьте объект и сразу поместите.

Если поместить новый документ без ролей, коллеги получат его, но без прав пользователи его не увидят. Ошибку найдут только при тестировании.

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

Настройка хранилища 1С: пошаговая инструкция

Шаг 1. Создать хранилище

  1. Откройте в Конфигураторе базу с актуальной конфигурацией — она станет первой версией.
  2. Выполните Конфигурация → Хранилище конфигурации → Создать хранилище.
  3. Укажите адрес: путь к пустому каталогу или tcp://server/D:\Repo\ERP.
  4. Задайте пользователя-администратора хранилища и пароль.

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

Шаг 2. Завести пользователей

Откройте Конфигурация → Хранилище конфигурации → Администрирование. На каждого разработчика — свой пользователь. Общий логин «разработчик» лишает историю смысла: не видно, кто что поменял.

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

ПравоЧто даёт
Захват объектовЗахватывать и помещать изменения
Изменение версийПравить метки и комментарии к версиям
Административные функцииУправлять пользователями, снимать чужие захваты, оптимизировать хранилище

Пользователь без права захвата может только получать версии — так удобно подключать тестовые базы.

Шаг 3. Подключить базы разработчиков

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

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

Работа с версиями: захват, помещение, получение и слияние

Захват

Выделите объект в дереве и выберите «Захватить в хранилище». Галочка «Рекурсивно» захватит его вместе с формами и макетами. Если нужна одна форма — снимите галочку и захватите только её.

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

Помещение

Команда «Поместить в хранилище» открывает список изменённых объектов. Здесь:

  • ✍️ пишите комментарий по делу: номер задачи и суть, например «ЗАД-1452: проверка лимита кредита в заказе»;
  • 📌 ставьте флаг «Оставить объекты захваченными», если работа не закончена, а промежуточный результат нужен коллегам;
  • 🔍 проверьте, что в список попали все связанные объекты: роли, подсистемы, общие модули.

Получение

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

Сравнить свою конфигурацию с хранилищем можно командой «Сравнить конфигурацию с хранилищем». Она покажет, что у вас изменено и не помещено.

История и метки

Конфигурация → Хранилище конфигурации → История хранилища показывает версии, авторов, даты и комментарии. Из истории можно:

  • 🔎 открыть изменения версии и сравнить её с любой другой;
  • 🏷 поставить метку, например «Релиз 2.4 — выкачено в рабочую»;
  • 💾 сохранить версию в файл .cf — для поставки в рабочую базу или для отката.

Откат делается так: сохраните нужную старую версию в .cf, захватите объекты, загрузите или сравните-объедините их с этой версией и поместите как новую. Удалить версии из истории штатными средствами нельзя — история только растёт.

Слияние и ветки

Веток, как в Git, в хранилище нет. Типовая схема с ветками строится на двух хранилищах:

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

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

Оптимизация производительности хранилища

На конфигурации 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 или убедитесь, что никто не помещает изменения: копия, снятая в момент записи, может оказаться повреждённой. Остановка службы прервёт подключения разработчиков — делайте это вне рабочего времени.

Типичные ошибки с хранилищем и их решения

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

Ещё три ошибки организации работы, а не платформы:

  • ❌ Держать захват неделями. Захватывайте ровно то, что правите сейчас, и помещайте хотя бы раз в день.
  • ❌ Править рабочую базу напрямую, мимо хранилища. Следующее обновление из хранилища затрёт такие правки.
  • ❌ Пустые комментарии к версиям. Через полгода история «изменения», «правка», «ещё правка» бесполезна для разбора инцидента.

Частые вопросы о хранилище 1С

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