Как вести групповую разработку через хранилище конфигурации 1С 8.3

· 9 мин

Содержание

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

Механизм общий для платформы 8.3 и не зависит от конфигурации: одинаково работает для Бухгалтерии, ЗУП, УТ и самописных решений. Хранилище решает две задачи: не даёт двум людям править один объект одновременно и хранит полную историю изменений с авторами и датами.

Создание хранилища конфигурации: папка или сервер

Есть три способа разместить хранилище. Выбор влияет на скорость и надёжность сильнее, чем кажется на старте.

ВариантАдрес при подключенииКогда подходитРиски
Локальная или сетевая папкаD:\Repo\Buh или \\srv\Repo\Buh1–2 разработчика в одной сетиСбой сети при записи может повредить файл хранилища
Сервер хранилища (crserver)tcp://srv-repo/BuhКоманда, удалённые разработчикиНужен отдельный процесс или служба
Публикация на веб-сервереhttp://srv-web/repo/repo.1ccrДоступ через интернет, без открытия портов crserverНужна настройка IIS или Apache

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

  1. Откройте базу разработки в Конфигураторе. В ней должна быть та конфигурация, с которой начнётся история.
  2. Выберите Конфигурация → Хранилище конфигурации → Создать хранилище….
  3. Укажите адрес: путь к пустой папке или tcp:// адрес сервера.
  4. Задайте имя и пароль администратора хранилища. По умолчанию платформа предлагает пользователя «Администратор».
  5. Подтвердите создание. Текущая конфигурация базы станет первой версией, а сама база сразу окажется подключённой к хранилищу.

Пользователи хранилища не связаны с пользователями информационной базы. Это отдельный список со своими паролями и правами.

Сервер хранилища crserver

Сервер хранилища ставится вместе с платформой (компонент «Сервер хранилища конфигураций 1С:Предприятия»). Исполняемый файл crserver.exe лежит в папке bin нужной версии платформы. Порт по умолчанию — 1542.

Регистрация службы выглядит так:

"C:\Program Files\1cv8\8.3.24.1548\bin\crserver.exe" -instsrvc -port 1542 -d "D:\Repo"

Параметр -d задаёт корневой каталог. Хранилище, созданное по адресу tcp://srv-repo/Buh, окажется в папке D:\Repo\Buh. Остальные ключи (учётная запись службы, диапазон портов) смотрите в справке, которую выводит crserver.exe -help.

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

Подключение разработчиков и права в хранилище

Администратор хранилища заводит каждому разработчику своего пользователя. Общая учётка «Разработчик» на троих лишает историю смысла: не видно, кто и что поменял.

Как завести пользователя

  1. Подключитесь к хранилищу под администратором.
  2. Откройте Конфигурация → Хранилище конфигурации → Администрирование….
  3. На закладке пользователей добавьте нового, задайте имя и пароль.
  4. Отметьте права.

Права хранилища:

  • 🔒 Захват объектов — можно захватывать и помещать изменения. Это основное право разработчика.
  • 📝 Изменение состава версий — можно править комментарии к версиям, ставить метки.
  • 🛠 Административные функции — управление пользователями, отмена чужих захватов, настройки хранилища.

Без права захвата пользователь может только читать: получать конфигурацию и смотреть историю. Так удобно подключать тестировщика или консультанта.

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

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

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

Захват, изменение и помещение объектов в хранилище

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

Значки в дереве метаданных:

  • ✅ зелёная галочка — объект захвачен вами;
  • 🔴 красный замок — объект захвачен другим пользователем;
  • без значка — объект свободен.

Рабочий цикл

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

Хороший комментарий отвечает на вопрос «зачем». Например: Задача 412: добавлен реквизит «Склад отгрузки» в заказ, печатная форма доработана. Через полгода по такой строке найдут нужную версию за минуту.

Что захватывать вместе

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

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

Отмена захвата

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

История хранилища, метки и откат изменений

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

Что умеет окно истории:

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

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

Как откатить неудачное изменение

Кнопки «удалить версию» в обычной работе нет: история линейна, откат делают новым помещением.

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

Если откатить нужно всю конфигурацию, сохраните старую версию в .cf, захватите корень рекурсивно и загрузите изменения через Конфигурация → Сравнить, объединить с конфигурацией из файла…. Затем поместите результат одной версией.

Конфликты версий и рассинхронизация с хранилищем

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

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

Если база «отвязалась» от хранилища

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

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

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

Типовую конфигурацию с доработками обновляют централизованно, в одной базе, а не у каждого разработчика.

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

Помещение после обновления типовой занимает заметное время: меняются сотни объектов. Делайте это вне рабочего дня разработчиков.

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

Обслуживание хранилища: резервные копии, очистка и перенос

Хранилище — это обычная папка с файлами, главный из которых 1cv8ddb.1CD. Её и нужно беречь.

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

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

Остановка службы crserver разорвёт соединение у всех подключённых разработчиков. Незавершённое помещение прервётся. Предупредите команду заранее и выбирайте время без активной работы.

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

Очистка и сокращение размера

За годы работы хранилище разрастается до гигабайт. Варианты:

  • 🧹 Очистка локального кэша. При подключении платформа кэширует данные хранилища в профиле пользователя. Если окно истории или получение версий работают со странностями, закройте все сеансы 1С на этом компьютере и удалите папки кэша в %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8. Список баз при этом не пострадает: он хранится в файле ibases.v8i в %APPDATA%\1C\1CEStart.
  • 🗜 Оптимизация хранения. В окне администрирования хранилища в актуальных версиях платформы есть команда оптимизации хранения данных. Она уменьшает размер без потери истории. Запускайте её при остановленной работе команды.
  • 📦 Новое хранилище с нуля. Если история старше нескольких лет уже не нужна, сохраните последнюю версию в .cf и в архив — всю папку старого хранилища. Создайте новое хранилище из базы с этой конфигурацией и переподключите разработчиков.

Перенос на другой сервер

  1. Попросите всех поместить изменения.
  2. Остановите службу crserver или запретите доступ к папке.
  3. Скопируйте папку хранилища на новый сервер в корневой каталог службы.
  4. Запустите службу той же версии платформы.
  5. Разработчики отключаются от старого адреса и подключаются к новому.

Шаг 5 заменит конфигурацию в базе разработчика, поэтому непомещённых правок к этому моменту быть не должно.

Регламент хранилища для команды
Выполнено: 0 / 7

Частые вопросы о хранилище конфигурации

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