Групповая разработка в 1С 8.3: сервер хранилища, пользователи, захват объектов
Содержание
Хранилище конфигурации 1С 8.3 создают в конфигураторе: Конфигурация → Хранилище конфигурации → Создать хранилище.... В поле адреса указывают каталог на диске или адрес сервера хранилища вида tcp://имя_сервера/имя_хранилища, затем задают администратора хранилища. Для командной работы на сервере ставят отдельную службу crserver (порт по умолчанию — 1542), а не кладут хранилище в общую сетевую папку.
Частое заблуждение: «создадим на сервере папку, откроем к ней общий доступ — и это уже хранилище на сервере». Технически это работает, но обращение идёт по SMB к файловой базе хранилища. При трёх-четырёх разработчиках, медленной сети и антивирусе на файловом сервере такая схема тормозит и рискует повредить файл. Настоящая организация хранилища на сервере — это служба сервера хранилища и подключение по TCP.
Что подготовить на сервере до создания хранилища
Три способа доступа к хранилищу отличаются скоростью и требованиями к инфраструктуре.
| Способ | Адрес в конфигураторе | Когда подходит | Риски |
|---|---|---|---|
| 📁 Локальный или сетевой каталог | D:\Repo\Buh или \\srv\Repo\Buh | Один разработчик, тест | Медленно по сети, файл можно повредить при обрыве |
🖥️ Сервер хранилища (crserver) | tcp://srv/Buh | Команда в одной сети | Нужна служба и открытый порт |
| 🌐 Публикация через веб-сервер | http://srv/repo/... | Разработчики вне офиса | Нужен веб-сервер, настройка публикации |
Для командной работы выбирайте второй вариант. Подготовка займёт полчаса.
Компоненты платформы
Сервер хранилища входит в дистрибутив серверной части платформы. В установщике выберите компонент «Сервер хранилища конфигураций 1С:Предприятия». После установки исполняемый файл лежит в каталоге платформы, например C:\Program Files\1cv8\8.3.24.1548\bin\crserver.exe.
Версия сервера хранилища должна совпадать с версией платформы, на которой работают разработчики, до последней цифры. Если в команде одна часть сидит на 8.3.23, а другая на 8.3.24, договоритесь о единой версии до старта.
Каталог и учётная запись службы
- 📂 Заведите каталог-корень для всех хранилищ, например
D:\Repositories. Лучше на SSD и не на системном диске. - 👤 Служба работает от учётной записи (обычно
USR1CV8или отдельная доменная). Ей нужны полные права на каталог-корень. - 🛡️ Добавьте каталог в исключения антивируса: проверка файлов при каждой записи заметно замедляет помещение изменений.
- 🔌 Откройте входящий TCP-порт 1542 в брандмауэре сервера.
Регистрация службы
Службу регистрируют из командной строки, запущенной от администратора:
cd "C:\Program Files\1cv8\8.3.24.1548\bin"
crserver.exe -instsrvc -usr .\USR1CV8 -pwd ПарольСлужбы -port 1542 -d "D:\Repositories"
crserver.exe -start
Параметр -d задаёт каталог-корень. Все адреса tcp:// дальше считаются относительно него. Хранилище по адресу tcp://srv/Buh окажется в папке D:\Repositories\Buh.
Нестандартный порт указывают в адресе: tcp://srv:1642/Buh. Это пригодится, если на одном сервере работают два сервера хранилища разных версий.
Проверьте, что служба запустилась: в services.msc она должна быть в состоянии «Выполняется». С рабочего места разработчика доступность порта проверяют в PowerShell:
Test-NetConnection srv -Port 1542
Создание хранилища конфигурации пошагово
Хранилище создают один раз, из той информационной базы, конфигурация которой станет исходной. Обычно это копия рабочей базы, выделенная под разработку.
Шаг 1. Подготовить базу-источник
- Сделайте резервную копию:
Администрирование → Выгрузить информационную базув файл.dt. - Если конфигурация типовая и стоит на поддержке, проверьте, что изменения разрешены:
Конфигурация → Поддержка → Настройка поддержки. При режиме «без возможности изменения» объекты нельзя будет захватывать и править. - Сохраните основную конфигурацию в базу данных, если в ней есть несохранённые правки (
F7). В хранилище попадёт именно основная конфигурация.
Шаг 2. Создать хранилище
- Откройте базу в режиме «Конфигуратор» и откройте дерево конфигурации.
- Выберите
Конфигурация → Хранилище конфигурации → Создать хранилище.... - В поле «Адрес хранилища» введите
tcp://srv/Buh(или путь к каталогу для файлового варианта). - Укажите имя и пароль первого пользователя. Он станет администратором хранилища.
- Подтвердите создание. Платформа выгрузит конфигурацию в хранилище, и база автоматически окажется к нему подключена.
На большой типовой конфигурации вроде Бухгалтерии предприятия первичная выгрузка занимает от нескольких минут до получаса. Прерывать её нельзя.
Шаг 3. Подключить остальных разработчиков
У каждого разработчика своя копия базы для работы. Подключение из его базы:
Конфигурация → Хранилище конфигурации → Подключиться к хранилищу....- Адрес тот же, имя и пароль — его личные, выданные администратором.
- Платформа предложит заменить конфигурацию базы конфигурацией из хранилища. Согласитесь: база должна совпадать с хранилищем.
Конфигурация базы при подключении замещается конфигурацией хранилища. Несохранённые в хранилище доработки в этой базе пропадут. Если они нужны — сначала сохраните конфигурацию в файл .cf.
После подключения конфигурация в базе становится доступной только для чтения. Править можно лишь захваченные объекты.
Пользователи хранилища и права доступа
Пользователи хранилища не связаны ни с пользователями информационной базы, ни с учётными записями Windows. Это отдельный список, который ведёт администратор хранилища.
Окно управления открывается командой Конфигурация → Хранилище конфигурации → Администрирование.... Там можно добавить пользователя
, сменить ему пароль и задать права.
| Право | Что даёт | Кому выдавать |
|---|---|---|
| Чтение | Подключение, получение версий, просмотр истории (есть у всех) | Тестировщики, аналитики |
| Захват объектов | Захват и помещение изменений | Разработчики |
| Изменение состава версий | Работа с метками и составом версий | Ведущий разработчик |
| Административные функции | Пользователи, права, отмена чужих захватов | 1-2 человека |
Практические правила, которые экономят разбор конфликтов:
- 👥 Один человек — один пользователь хранилища. Общий логин «Разработчик» не даёт понять, кто и что поместил.
- 🔁 Одна база — одно подключение пользователя. Если разработчик подключится тем же пользователем из второй базы, платформа предупредит о существующей привязке. Согласие перепривязывает пользователя, и первая база перестаёт видеть его захваты.
- 🔐 Пароль администратора хранилища храните в менеджере паролей команды. Восстановить его без резервной копии хранилища нельзя.
- 🚪 Уволившемуся сотруднику не удаляйте пользователя сразу. Сначала отмените его захваты из окна администрирования, затем заблокируйте вход сменой пароля. История его версий сохранится.
Захват объектов и версии в хранилище
Хранилище работает по принципу «один объект — один редактор». Пока справочник захвачен одним разработчиком, другой может только читать его.
Основной цикл работы
- Открыть окно хранилища:
Конфигурация → Хранилище конфигурации → Хранилище. Иконки в дереве показывают состояние: зелёная галочка — объект захвачен вами, красный замок — захвачен другим пользователем. - Получить свежую версию:
Обновить конфигурацию из хранилища. Делайте это перед каждым захватом. - Захватить объекты: правой кнопкой по объекту →
Захватить в хранилище. Флаг «Рекурсивно» захватывает объект вместе с подчинёнными (реквизитами, формами, макетами). - Внести изменения и проверить их.
- Поместить:
Поместить в хранилище..., обязательно с комментарием. Флаг «Оставить объекты захваченными» нужен, если работа продолжается. - Обновить конфигурацию
базы данных (
F7), чтобы изменения применились в вашей копии базы.
Комментарий к версии пишите так, чтобы его понял человек через год: «Задача 1482: добавлен реквизит Подразделение в документ Поступление товаров» вместо «правки».
Что захватывать при типовых доработках
| Задача | Что захватить |
|---|---|
| Новый реквизит документа | Документ (с формой, где выводится реквизит) |
| Новый объект (справочник, отчёт) | Родительскую ветку в дереве, например «Справочники» |
| Новая подсистема или роль | Корень конфигурации и ветку «Общие» |
| Обновление типовой конфигурации | Корень конфигурации рекурсивно |
Обновление поставщика в базе, подключённой к хранилищу, требует захватить всю конфигурацию. Значит, на время обновления остальные разработчики не смогут ничего поместить. Планируйте это на вечер и предупредите команду.
История, метки и откат
Команда История хранилища показывает список версий: номер, автора, дату, комментарий. Из истории можно:
- 🔍 сравнить версию с текущей конфигурацией или с другой версией;
- 💾 сохранить любую версию в файл
.cf— удобно для передачи в рабочую базу; - 🏷️ поставить метку, например «Релиз от 15.09», чтобы быстро найти точку выпуска;
- ⏪ получить старую версию в свою базу, а затем поместить её как новую версию, если нужно откатить неудачную доработку.
Откат в хранилище не удаляет историю. Неудачная версия остаётся в списке, а исправление приходит следующей версией.
Для доработок, которые не должны трогать основную конфигурацию, рассмотрите расширения: они подключаются к хранилищу отдельно, со своим хранилищем для каждого расширения.
Обслуживание и скорость работы хранилища
Хранилище растёт с каждой версией. Через год активной разработки типовой конфигурации каталог может занимать десятки гигабайт. Ниже — что держит его в рабочем состоянии.
Резервное копирование
Хранилище — это каталог с файлом 1cv8ddb.1CD и служебными папками. Копию делают целиком.
- Убедитесь, что никто не помещает изменения: копия посреди помещения версии может оказаться несогласованной.
- Остановите службу сервера хранилища (
crserver.exe -stopили черезservices.msc). Подключённые разработчики получат ошибку соединения: делайте это ночью или по договорённости. - Скопируйте каталог хранилища в архив.
- Запустите службу обратно.
Пример ночного задания для планировщика Windows:
net stop "1C:Enterprise 8.3 Configuration Repository Server"
robocopy "D:\Repositories\Buh" "E:\Backup\Repo\Buh" /E /R:1 /W:1
net start "1C:Enterprise 8.3 Configuration Repository Server"
Имя службы зависит от версии и способа регистрации. Посмотрите его в свойствах службы в services.msc и подставьте точное значение в скрипт.
Что ускоряет работу
- ⚡ Подключение по
tcp://вместо сетевой папки. Разница на типовой конфигурации заметна уже при обновлении из хранилища. - 💽 Каталог на SSD, локальный диск сервера, не сетевой ресурс.
- 🧹 Отмена «зависших» захватов. Захваченные месяцами объекты мешают команде и размывают ответственность.
- 🧩 Мелкие помещения. Десять помещений по пять объектов проходят проще одного на двести объектов и легче разбираются в истории.
- 📦 Отдельное хранилище на каждую конфигурацию и расширение. Не складывайте разные проекты в одно.
Проверка целостности
Файл 1cv8ddb.1CD проверяют той же утилитой, что и файловые базы, — chdbfl.exe из каталога bin платформы. Запускайте её только на копии хранилища при остановленной службе. Если копия проходит проверку без ошибок, исходный каталог можно заменить исправленной копией.
Ошибки подключения к хранилищу и как их устранить
Ещё одна неочевидная ситуация — копирование базы разработчика. Копия сохраняет привязку к хранилищу. Если открыть её в конфигураторе и начать захватывать объекты, хранилище будет считать, что работа идёт из исходной базы. Сразу после копирования выполните в копии Конфигурация → Хранилище конфигурации → Отключиться от хранилища.
Перезапуск службы сервера хранилища обрывает текущие операции у всех подключённых разработчиков. Перед перезапуском убедитесь, что никто не помещает изменения: прерванное помещение придётся повторить.