Хранилище конфигурации 1С 8.3: создание, захват и помещение изменений

· 9 мин

Содержание

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

Типичная ситуация: над доработками типовой Бухгалтерии работают двое, и каждый раз после «я поправил модуль у себя» приходится вручную сравнивать и объединять файлы .cf. Хранилище снимает эту проблему: объект правит тот, кто его захватил, а история показывает, кто, когда и что поменял.

Подготовка базы и прав перед созданием хранилища

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

Что сделать до начала:

  • 💾 Выгрузите копию базы через Администрирование → Выгрузить информационную базу (файл .dt). Это страховка на случай, если подключение пойдёт не так.
  • 🧹 Приведите основную конфигурацию в порядок: она должна совпадать с конфигурацией базы данных. Если в заголовке дерева висит звёздочка или есть необновлённые изменения, выполните Конфигурация → Обновить конфигурацию базы данных (F7).
  • 🔐 Пользователь Конфигуратора должен иметь в информационной базе роль с административными правами (в типовых — «Полные права» и «Администратор системы»).
  • 📁 Выберите место хранения: пустую папку на диске или сервер хранилища. Папка должна быть пустой, иначе Конфигуратор откажется создавать в ней хранилище.
  • 🧩 Решите заранее, на поддержке ли конфигурация. Хранилище переносит и настройки поддержки, поэтому типовая доработанная конфигурация попадёт туда вместе с ними.

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

Как поместить конфигурацию в хранилище впервые

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

Шаг за шагом

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

Где разместить хранилище

ВариантАдресКогда подходитОграничения
ФайловоеD:\Repo\Buh или \\srv\Repo\BuhОдин-два разработчика в одной сетиМедленно по сети, риск повреждения при обрыве связи
Сервер хранилищаtcp://srv:1542/BuhКоманда в офисе или по VPNНужна служба crserver той же версии, что у клиентов
Через веб-серверhttp://srv/repo/repository.1ccrУдалённые разработчики без VPNНужна публикация на IIS или Apache

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

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

Номер сборки в пути замените на свой. После этого хранилище создаётся по адресу вида tcp://имя_сервера:1542/Buh, где Buh — подпапка внутри D:\Repo.

Не кладите файловое хранилище в папку, которая синхронизируется облачным клиентом (Яндекс Диск, OneDrive и т. п.). Синхронизация посреди записи версии портит файлы хранилища.

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

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

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

  • 🛠 административные функции — управлять пользователями, снимать чужие захваты, выполнять обслуживание;
  • ✏️ захват объектов — брать объекты на редактирование и помещать изменения;
  • 📜 право изменять версии — ставить метки и править комментарии к версиям.

Разработчику обычно хватает права захвата. Административные функции оставьте одному-двум людям.

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

Каждый разработчик работает в своей копии базы. Порядок такой:

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

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

Как поместить изменения в хранилище: захват, правка, выкладка

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

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

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

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

Для новой формы или реквизита у документа достаточно захватить сам документ.

Помещение

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

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

Помещение из командной строки

Для автоматизации (сборка по расписанию, CI) помещение запускают пакетным режимом Конфигуратора:

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F "D:\Bases\BuhDev" ^
  /ConfigurationRepositoryF "tcp://srv:1542/Buh" ^
  /ConfigurationRepositoryN "Робот" /ConfigurationRepositoryP "пароль" ^
  /ConfigurationRepositoryCommit -comment "Ночная выкладка" -keepLocked ^
  /Out "D:\Logs\commit.log"

Параметры, в которых сомневаетесь, проверяйте по справке «Запуск 1С:Предприятия из командной строки» в документации платформы. Пароль в bat-файле храните в защищённой папке или передавайте из переменной окружения.

Свойства и обслуживание хранилища

Настройки хранилища собраны в окне администрирования. Кроме пользователей, там есть команды обслуживания.

Что стоит знать администратору:

  • 🗜 Оптимизация хранения данных — пересобирает внутренние файлы хранилища и уменьшает их объём. Запускайте, когда никто не работает : операция долгая.
  • 🔓 Отмена чужого захвата — администратор может освободить объект, если коллега в отпуске. Несохранённые правки того разработчика при этом не попадут в хранилище, предупредите его.
  • 🔄 Формат хранилища — после перехода на новую сборку платформы Конфигуратор может предложить конвертировать хранилище. Сначала обновите платформу у всех разработчиков и crserver, потом конвертируйте.

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

Версии и история изменений

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

Что можно делать с версиями:

ЗадачаКак сделать
Посмотреть, что поменялосьВыделить версию → открыть её и сравнить с предыдущей
Отметить релиз для выкладки в рабочую базуУстановить метку на версию (например, «Релиз 2.3 — в работу»)
Вернуть старый вариант объектаПолучить нужную версию объекта и поместить её заново
Отдать конфигурацию в рабочую базуСохранить версию в файл .cf
Найти, кто сломал модульОткрыть историю конкретного объекта из его контекстного меню

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

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

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

Ошибки при помещении в хранилище и что с ними делать

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

Если ничего не помогло

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

Как ускорить работу с хранилищем

Медленное помещение и долгое обновление из хранилища почти всегда упираются в канал и диск.

Что даёт заметный эффект:

  1. 🚀 Перейти с файлового хранилища на общей папке на сервер хранилища (tcp://). По сети через SMB каждый захват гоняет много мелких файлов; crserver передаёт только нужное.
  2. 💽 Держать папку хранилища на SSD сервера.
  3. 🛡 Исключить папку хранилища и каталог кэша Конфигуратора из проверки антивирусом в реальном времени — после согласования с тем, кто отвечает за безопасность.
  4. 🎯 Не захватывать всю конфигурацию рекурсивно без нужды. Захват и помещение сотен объектов идут минутами.
  5. 📦 Помещать часто и небольшими порциями. Версия из пяти объектов выкладывается за секунды и легко откатывается.
  6. 🗜 Раз в квартал запускать оптимизацию хранения данных, если хранилище разрослось до гигабайтов.

Для удалённых разработчиков с медленным каналом лучше подходит публикация хранилища через веб-сервер: HTTP проходит через прокси и не требует VPN.

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

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