К статье
Практический материал

Разработка и Конфигурация · 13 мин

Хранилище конфигурации 1С 8.3: как работать

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

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

Физически хранилище представляет собой файл 1cv8ddb.1cd (по умолчанию каталог 1Cv8ddb), размещённый в сетевой папке или на сервере. Подключение к нему выполняется из конфигуратора, и после подключения конфигурация переводится в режим «на поддержке хранилища»: любое изменение объекта требует предварительного захвата.

Механизм доступен на всех типовых и самописных конфигурациях без дополнительного лицензирования. Для небольших команд из 2–10 разработчиков это стандартный способ организации работы; для крупных команд с ветвлением и слиянием чаще рассматривают EDT с Git, но хранилище остаётся проще в развёртывании и не требует дополнительной инфраструктуры.

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

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

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

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

Как подключиться к существующему хранилищу

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

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

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

Захват и помещение объектов: основной цикл работы

Подключённая к хранилищу конфигурация находится в режиме «только чтение». Чтобы изменить объект, его нужно захватить: выделите объект в дереве конфигурации, откройте контекстное меню и выберите «Захватить в хранилище» либо воспользуйтесь пунктом «Захватить для изменения» при попытке редактирования. В диалоге захвата можно отметить сразу несколько объектов и включить рекурсивный захват подчинённых объектов (форм, макетов).

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

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

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

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

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

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

После обновления конфигурации из хранилища не забудьте выполнить «Обновить конфигурацию базы данных» (F7), иначе изменения останутся только в конфигурации поставщика/разработчика и не попадут в рабочую базу. Если обновление требует реструктуризации таблиц, запускайте его в монопольном режиме при отсутствии пользователей.

Типичные ошибки
01
Захват объекта «на всякий случай» и удержание его неделями — коллеги не могут менять объект и работа встаёт
02
Помещение без комментария — через месяц невозможно понять причину изменения по истории версий
03
Обновление из хранилища без сравнения конфликтующих модулей — чужие доработки молча затираются
04
Работа в общей тестовой базе, подключённой к хранилищу, несколькими разработчиками одновременно — изменения смешиваются и история перестаёт отражать реальность
05
Отсутствие резервной копии каталога хранилища — повреждение файла 1cv8ddb.1cd означает потерю всей истории версий

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

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

Откат отдельного объекта выполняется через «Сравнить и объединить с конфигурацией из файла/версии»: выберите нужную версию, отметьте только требуемые объекты и загрузите их старое состояние. Полный откат всей конфигурации на старую версию делается загрузкой сохранённого cf-файла, но делайте это осознанно — последующие версии в истории останутся, а текущее состояние будет перезаписано.

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

Контрольные точки

Как проверить результат

Подключение к хранилищу
Норма

В заголовке дерева конфигурации виден признак подключения, объекты доступны только для чтения до захвата

Тревожный признак

Ошибка доступа к каталогу или сообщение о несовпадении конфигурации

Захват объекта
Норма

Объект отмечен в дереве пиктограммой захвата, в статусе хранилища виден ваш пользователь

Тревожный признак

Сообщение, что объект захвачен другим пользователем

Помещение изменений
Норма

В истории хранилища появилась новая версия с вашим комментарием

Тревожный признак

Версия не создана, изменения остались только локально

Обновление из хранилища
Норма

Список различий пуст после обновления, конфигурация базы данных обновлена

Тревожный признак

Остались неразрешённые конфликты или база не обновлена (F7 не выполнено)

Администрирование: пользователи, блокировки и обслуживание

Управление пользователями хранилища выполняется через «Администрирование → Пользователи»: здесь добавляют разработчиков, меняют пароли и отключают уволившихся сотрудников. Пользователь с правами администратора хранилища может также отменить чужой захват — это нужно, когда разработчик ушёл в отпуск, не отпустив объекты.

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

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

Маршрут решения

Как выбрать действие

Объект захвачен коллегой, который недоступенАдминистратор хранилища отменяет захват через «Администрирование → Отменить захват»
Нужно временно поработать без связи с хранилищемВнесите правки локально без захвата нельзя — захватите объекты заранее или работайте в отдельной копии базы с последующим сравнением и объединением
Команда больше 5–7 человек и нужны параллельные ветки разработкиРассмотрите переход на 1C:EDT с Git — хранилище не поддерживает ветвление
Конфликт при обновлении в общем модулеОткройте построчное сравнение текстов модулей и объедините изменения вручную, затем проверьте синтаксис

Хранилище или Git через EDT: что выбрать

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

Связка 1C:EDT и Git снимает эти ограничения: ветки, pull request, распределённая работа без постоянного доступа к серверу. Цена вопроса — смена среды разработки, иной формат проекта и необходимость обучения команды. Для сопровождения типовых конфигураций с небольшим числом доработок переход обычно не оправдан, для продуктовой разработки — оправдан почти всегда.

Сравнение вариантов

Хранилище конфигурации

Команда 2–10 человек, работа в конфигураторе, простое развёртывание. Ограничение: нет ветвления, эксклюзивный захват объектов, нужен постоянный доступ к сетевому каталогу.

1C:EDT + Git

Крупные команды, параллельные ветки, код-ревью, автономная работа. Ограничение: требуется переход на EDT и инфраструктура Git, другой цикл сборки конфигурации.

Работа без хранилища (cf-файлы)

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

Частые вопросы о работе с хранилищем

Можно ли работать с хранилищем через интернет, а не по локальной сети?

Да, если каталог хранилища опубликован по протоколу HTTP через веб-сервер (IIS или Apache) с настройкой публикации хранилища. Подключение тогда выполняется по URL вместо пути к папке. Для небольшой команды проще использовать VPN-доступ к сетевой папке, но веб-публикация удобнее при постоянной удалённой работе.

Что делать, если забыт пароль пользователя хранилища?

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

Почему объект нельзя захватить, хотя коллега его не трогал?

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

Как перенести хранилище на другой сервер?

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

Можно ли подключить к одному хранилищу несколько разных конфигураций?

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

Теряются ли данные информационной базы при работе с хранилищем?

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

Итог

Что важно запомнить

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