Хранилище конфигурации 1С 8.3: создание, захват и помещение изменений
Содержание
Структуру конфигурации помещают в хранилище в Конфигураторе: Конфигурация → Хранилище конфигурации → Создать хранилище для первой выкладки и Конфигурация → Хранилище конфигурации → Поместить в хранилище для каждой следующей правки. Первая команда копирует всю конфигурацию базы в новое хранилище и сразу подключает к нему базу. Вторая отправляет туда захваченные объекты с комментарием и создаёт новую версию.
Типичная ситуация: над доработками типовой Бухгалтерии работают двое, и каждый раз после «я поправил модуль у себя» приходится вручную сравнивать и объединять файлы .cf. Хранилище снимает эту проблему: объект правит тот, кто его захватил, а история показывает, кто, когда и что поменял.
Подготовка базы и прав перед созданием хранилища
Хранилище создаётся из конкретной информационной базы. Та конфигурация, что открыта в Конфигураторе, и станет первой версией хранилища.
Что сделать до начала:
- 💾 Выгрузите копию базы
через
Администрирование → Выгрузить информационную базу(файл .dt). Это страховка на случай, если подключение пойдёт не так. - 🧹 Приведите основную конфигурацию в порядок: она должна совпадать с конфигурацией базы данных. Если в заголовке дерева висит звёздочка или есть необновлённые изменения, выполните
Конфигурация → Обновить конфигурацию базы данных(F7). - 🔐 Пользователь Конфигуратора должен иметь в информационной базе роль с административными правами (в типовых — «Полные права» и «Администратор системы»).
- 📁 Выберите место хранения: пустую папку на диске или сервер хранилища. Папка должна быть пустой, иначе Конфигуратор откажется создавать в ней хранилище.
- 🧩 Решите заранее, на поддержке ли конфигурация. Хранилище переносит и настройки поддержки, поэтому типовая доработанная конфигурация попадёт туда вместе с ними.
Версия платформы у всех разработчиков должна быть одной и той же. Хранилище, к которому подключаются с разных сборок 8.3, рано или поздно потребует конвертации формата, и работать перестанут все, кто на старой сборке.
Как поместить конфигурацию в хранилище впервые
Первичное помещение — это и есть создание хранилища. Отдельной команды «выложить конфигурацию» нет: при создании вся структура метаданных копируется автоматически.
Шаг за шагом
- Откройте базу в Конфигураторе и откройте конфигурацию (
Конфигурация → Открыть конфигурацию). - Выберите
Конфигурация → Хранилище конфигурации → Создать хранилище. - Укажите адрес хранилища — путь к папке, адрес
tcp://илиhttp://(варианты ниже). - Задайте имя и пароль администратора хранилища. По умолчанию предлагается имя «Администратор». Пароль не оставляйте пустым, если к хранилищу будут подключаться другие люди.
- Подтвердите создание. Конфигуратор выгрузит всю конфигурацию в хранилище и подключит к нему текущую базу.
- После этого в дереве конфигурации у объектов появятся значки состояния. Все объекты сначала свободны: ни один не захвачен.
Где разместить хранилище
| Вариант | Адрес | Когда подходит | Ограничения |
|---|---|---|---|
| Файловое | 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 и т. п.). Синхронизация посреди записи версии портит файлы хранилища.
Пользователи хранилища и их права
Пользователи хранилища не связаны с пользователями информационной базы. Это отдельный список, его ведёт администратор хранилища.
Где настраивается: Конфигурация → Хранилище конфигурации → Администрирование, в открывшемся окне — список пользователей. Для каждого задаются имя, пароль и права:
- 🛠 административные функции — управлять пользователями, снимать чужие захваты, выполнять обслуживание;
- ✏️ захват объектов — брать объекты на редактирование и помещать изменения;
- 📜 право изменять версии — ставить метки и править комментарии к версиям.
Разработчику обычно хватает права захвата. Административные функции оставьте одному-двум людям.
Подключение второй базы разработчика
Каждый разработчик работает в своей копии базы. Порядок такой:
- Развернуть у себя базу из той же .dt или создать пустую.
- В Конфигураторе выбрать
Конфигурация → Хранилище конфигурации → Подключиться к хранилищу. - Указать адрес, своё имя пользователя хранилища и пароль.
- Согласиться с заменой конфигурации на конфигурацию из хранилища.
- Выполнить обновление конфигурации базы данных (F7).
Подключение заменяет основную конфигурацию базы содержимым хранилища. Всё, что разработчик правил у себя без хранилища, пропадёт, если заранее не выгрузить это в .cf.
Как поместить изменения в хранилище: захват, правка, выкладка
Ежедневная работа идёт по циклу «захватить → изменить → поместить». Пока объект не захвачен, редактировать его нельзя.
Захват объектов
Выделите объект в дереве и выберите в контекстном меню Хранилище → Захватить в хранилище. В диалоге есть флажок рекурсивного захвата: с ним берутся и подчинённые объекты (реквизиты, формы, макеты).
Приём, без которого не обойтись: чтобы добавить новый объект метаданных (справочник, документ, общий модуль), захватите корень конфигурации — без рекурсии. Новый объект добавляется в коллекцию корня, и без захвата корня кнопка «Добавить» неактивна. Корень держите захваченным как можно меньше времени: пока он у вас, коллеги не могут добавлять свои объекты.
Для новой формы или реквизита у документа достаточно захватить сам документ.
Помещение
- Внесите изменения и проверьте их: синтаксический контроль модулей, обновление конфигурации базы данных, запуск в режиме «1С:Предприятие».
- Выберите
Конфигурация → Хранилище конфигурации → Поместить в хранилище— откроется список всех захваченных вами объектов. - Снимите флажки с объектов, которые не готовы.
- Напишите комментарий: номер задачи и суть правки («#412 печатная форма счёта: добавлен банк получателя»).
- Флажок «Оставить объекты захваченными» включайте, если продолжаете работу с этими объектами.
- Нажмите «Поместить».
Если помещаете новый объект, а на него ссылается уже изменённый объект, Конфигуратор проверит ссылочную целостность и предложит поместить связанные объекты вместе. Соглашайтесь: иначе в хранилище окажется версия, которая не собирается.
Помещение из командной строки
Для автоматизации (сборка по расписанию, 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 и создать новое хранилище из неё. История версий при втором способе теряется, поэтому резервное копирование папки хранилища лучше поставить в расписание сразу.
Как ускорить работу с хранилищем
Медленное помещение и долгое обновление из хранилища почти всегда упираются в канал и диск.
Что даёт заметный эффект:
- 🚀 Перейти с файлового хранилища на общей папке на сервер хранилища (
tcp://). По сети через SMB каждый захват гоняет много мелких файлов; crserver передаёт только нужное. - 💽 Держать папку хранилища на SSD сервера.
- 🛡 Исключить папку хранилища и каталог кэша Конфигуратора из проверки антивирусом в реальном времени — после согласования с тем, кто отвечает за безопасность.
- 🎯 Не захватывать всю конфигурацию рекурсивно без нужды. Захват и помещение сотен объектов идут минутами.
- 📦 Помещать часто и небольшими порциями. Версия из пяти объектов выкладывается за секунды и легко откатывается.
- 🗜 Раз в квартал запускать оптимизацию хранения данных, если хранилище разрослось до гигабайтов.
Для удалённых разработчиков с медленным каналом лучше подходит публикация хранилища через веб-сервер: HTTP проходит через прокси и не требует VPN.