Командная разработка в 1С 8.3: как устроено хранилище, кто что захватывает и как откатить версию

· 10 мин

Содержание

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

Частое заблуждение — считать хранилище резервной копией рабочей базы. Это не так. Хранилище хранит только конфигурацию (метаданные, модули, формы, макеты) и её историю. Данные пользователей — документы, справочники, остатки — туда не попадают. Бэкап базы по-прежнему делают отдельно.

Как устроено хранилище и зачем оно команде

Без хранилища два программиста правят одну конфигурацию и потом вручную сливают изменения через сравнение файлов .cf. Хранилище убирает эту ручную работу. Оно решает три задачи:

  • 🔒 Блокировка. Объект, захваченный одним разработчиком, другие могут только читать. Два человека не правят один модуль одновременно.
  • 🕓 История. Каждое помещение создаёт новую версию с номером, автором, датой и комментарием.
  • 🔁 Синхронизация. Любой участник получает чужие изменения одной командой.

Физически хранилище — это каталог с файлом базы 1cv8ddb.1CD и служебными папками. У каждого разработчика своя информационная база, подключённая к этому каталогу. Рабочая база пользователей к хранилищу обычно не подключается: в неё переносят готовую версию через файл .cf или обновление.

Три способа доступа к хранилищу

СпособАдрес в окне подключенияКогда подходит
Файловый\\server\repo\erp или D:\repo\erpОдин-два разработчика в одной локальной сети
Сервер хранилища (TCP)tcp://server/erpКоманда от трёх человек, удалённые сотрудники через VPN
HTTP через веб-серверhttp://server/repo/erp/repo.1ccrДоступ из интернета, когда открыть TCP-порт нельзя

Файловый вариант самый простой, но медленный по сети: Конфигуратор читает файл хранилища напрямую по SMB. На крупных конфигурациях уровня ERP или КА операции с ним идут минутами. Сервер хранилища (crserver) работает быстрее и не требует давать разработчикам права на сетевую папку.

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

Шаг 1. Установите сервер хранилища (для TCP)

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

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

Шаг 2. Создайте хранилище из эталонной базы

Хранилище создаётся из той конфигурации, с которой начинается совместная работа.

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

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

Шаг 3. Что проверить до старта

Перед подключением команды
Выполнено: 0 / 6

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

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

Создание пользователей

  1. Администратор хранилища открывает окно хранилища: Конфигурация → Хранилище конфигурации → Открыть хранилище.
  2. В его меню действий находит команду управления пользователями хранилища (она в разделе администрирования).
  3. Для каждого разработчика заводит пользователя с именем и паролем.

Какие права выдавать

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

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

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

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

Один пользователь хранилища — одна база. Если разработчик подключит под тем же именем вторую базу, первая потеряет связь с захваченными объектами. Для второй базы заведите отдельного пользователя, например Иванов_тест.

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

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

Получение изменений

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

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

Захват объекта

  1. Выделите объект в дереве: документ, общий модуль, форму.
  2. Контекстное меню → «Захватить в хранилище».
  3. В окне захвата отметьте нужные объекты. Флаг рекурсивного захвата берёт объект вместе с подчинёнными: реквизитами, формами, макетами.

Захваченный вами объект помечается зелёной галочкой, захваченный коллегой — красным замком. Красный замок можно открыть только на чтение.

Помещение изменений

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

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

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

Что захватывать при новом объекте

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

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

Сравнение версий и откат изменений в хранилище

История хранилища

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

Сравнение

В окне истории доступны два вида сравнения:

  • 📄 Версия с версией. Выделите две версии и выполните сравнение. Откроется окно с деревом различий, а для модулей — построчное сравнение текста.
  • 🖥️ Хранилище с вашей конфигурацией. Команда «Сравнить конфигурацию с хранилищем» показывает, чем ваша база отличается от последней версии. Полезно перед помещением, чтобы не отправить отладочный код.

Метки

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

Откат к прошлой версии

Прямой команды «откатить хранилище» нет: история не переписывается, она только растёт. Откат делают так:

  1. В истории выделите версию, к которой нужно вернуться.
  2. Получите конфигурацию этой версии в свою базу или сохраните её в файл .cf.
  3. Захватите изменённые объекты (или корень рекурсивно, если правок много).
  4. Поместите их в хранилище с комментарием Откат к версии 312.

В истории появится новая версия, содержимое которой совпадает со старой. Все промежуточные версии сохранятся — при необходимости к ним можно вернуться.

Что нужно откатить?

Обслуживание и оптимизация хранилища

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

Хранилище — главный актив команды. Его потеря означает потерю истории за годы.

  1. Копируйте весь каталог хранилища, а не только файл 1cv8ddb.1CD.
  2. Делайте копию, когда никто не помещает изменения. Для TCP надёжнее остановить службу сервера хранилища на время копирования — предупредите разработчиков: на время остановки подключения к хранилищу оборвутся. Удобное время — ночь.
  3. Храните копии на другом диске или сервере, минимум 7–14 последних.

Проверка файла хранилища

Файл 1cv8ddb.1CD имеет тот же формат, что файловая база, поэтому его физическую целостность проверяет утилита chdbfl.exe из каталога bin платформы. Запускайте её только на копии или при остановленной службе, когда к хранилищу никто не подключён.

Оптимизация данных

В разделе администрирования окна хранилища есть команда оптимизации данных. Она перестраивает внутреннее хранение версий и уменьшает файл. На хранилищах с тысячами версий выигрыш бывает заметным. Выполняйте её в нерабочее время после резервной копии.

Производительность

  • 💾 Держите хранилище на SSD.
  • 🛡️ Добавьте каталог хранилища в исключения антивируса — проверка каждого обращения к .1CD резко замедляет операции.
  • 🌐 Для удалённых разработчиков используйте TCP или HTTP, а не файловый доступ через VPN.
  • 🧹 Раз в квартал удаляйте пользователей уволенных сотрудников и снимайте их зависшие захваты.

Обновление типовой конфигурации на поддержке

Если в хранилище типовая конфигурация (БП, ЗУП, УТ) с доработками, обновление выполняет один человек:

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

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

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

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

Хранилище и альтернативы: когда его недостаточно

Хранилище закрывает потребности команды из 2–10 человек, которая работает в Конфигураторе. Его ограничения:

  • нет веток: все работают в одной линии версий;
  • нет слияния модулей — пока объект захвачен, второй человек ждёт;
  • код-ревью до помещения не встроено.

Команды, которым нужны ветки и ревью, переходят на 1C:Enterprise Development Tools (EDT) с Git. Конфигурация там хранится в виде файлов, и работают с ней обычными инструментами Git. Переход требует перестройки процесса, поэтому для небольшой команды хранилище остаётся разумным выбором.

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

Частые вопросы

Можно ли подключить к хранилищу рабочую базу пользователей?
Технически можно, но не стоит. Любое получение изменений сразу попадёт к пользователям без проверки. В рабочую базу переносят протестированную версию с меткой.
Нужна ли отдельная лицензия для сервера хранилища?
Сервер хранилища входит в дистрибутив платформы и отдельной лицензии не требует. Лицензия нужна разработчикам для запуска Конфигуратора.
Сколько версий может хранить хранилище?
Жёсткого практического предела нет: хранилища с десятками тысяч версий работают. С ростом истории увеличивается файл, поэтому периодически выполняйте оптимизацию данных.
Что будет с захватом, если разработчик удалил свою базу?
Захват останется на его пользователе хранилища. Администратор снимает его вручную, несохранённые правки теряются.
Как отключить базу от хранилища?
Конфигурация → Хранилище конфигурации → Отключиться от хранилища. Конфигурация в базе остаётся как есть, но связь с историей и захватами пропадает.