Хранилище конфигурации 1С для команды: файл, crserver и резервные копии
Содержание
Чтобы развернуть хранилище 1С, откройте базу с эталонной конфигурацией в Конфигураторе и выполните Конфигурация → Хранилище конфигурации → Создать хранилище.... В поле адреса укажите пустой каталог (файловое хранилище) или tcp://сервер/ИмяХранилища, если заранее поднят сервер хранилища crserver. Затем задайте пароль администратора хранилища, заведите пользователей и настройте ночной бэкап каталога.
Для одного-двух разработчиков в одной сети хватит файлового варианта. Для команды, удалённых сотрудников и крупных конфигураций вроде ERP разверните сервер хранилища: он работает быстрее, не требует открывать общую папку на запись и проще резервируется.
Файловое хранилище или сервер хранилища: что выбрать
Хранилище в обоих случаях физически одно и то же: файл 1cv8ddb.1CD и служебные каталоги рядом с ним. Разница в том, как к нему обращаются разработчики.
| Вариант | Адрес подключения | Когда подходит | Риски |
|---|---|---|---|
| Файловое | \\srv\Repo\Buh или D:\Repo\Buh | 1-3 разработчика, одна локальная сеть | Каждому нужны права на запись в папку; обрыв SMB во время помещения может повредить данные |
Сервер crserver (TCP) | tcp://srv/Buh | Команда, большие конфигурации, VPN | Версия сервера должна совпадать с версией платформы разработчиков |
| HTTP через веб-сервер | http://srv/repo/repo.1ccr | Разработчики за пределами офиса, доступ только по 80/443 | Нужна публикация на IIS или Apache, медленнее TCP |
💡 Если сомневаетесь, сразу ставьте crserver. Перевести работающее файловое хранилище на сервер несложно, но лучше не делать этого в середине проекта.
Подготовка сервера и сети под хранилище конфигурации
Хранилище само по себе нетребовательно к процессору. Узкие места — диск и сеть: при помещении и получении объектов идёт много мелких операций чтения и записи.
Перед развертыванием подготовьте:
- 💽 Диск. SSD, отдельный каталог-корень, например
D:\1C_Repos. Под каждое хранилище — своя подпапка. - 🧱 Антивирус. Добавьте корень хранилищ в исключения сканирования в реальном времени. Проверка каждого файла при помещении сильно замедляет работу.
- 👤 Учётная запись службы. Отдельный локальный или доменный пользователь, например
USR1CV8, с полными правами только на корень хранилищ. - 🔌 Порт. Сервер хранилища по умолчанию слушает TCP 1542. Он не пересекается с портами кластера (1540 — агент, 1541 — менеджер кластера), поэтому
crserverможно ставить на тот же сервер 1С. - 🔢 Версия платформы. Выясните точный номер платформы, на котором работают разработчики, например 8.3.25.1374. Сервер хранилища ставится той же сборки.
Откройте порт в брандмауэре Windows:
netsh advfirewall firewall add rule name="1C Repository 1542" dir=in action=allow protocol=TCP localport=1542
Разработчикам нужна своя рабочая база на каждого. Одна общая база на всех для командной работы не годится: хранилище и нужно для того, чтобы каждый правил свою копию конфигурации, а изменения сходились в одном месте.
Как развернуть файловое хранилище 1С по шагам
Файловый вариант разворачивается за десять минут, отдельной установки не требует.
- Создайте на сервере папку, например
D:\1C_Repos\Buh, и откройте к ней общий доступ. Разработчикам дайте права на изменение и в общем ресурсе, и в NTFS. - Возьмите базу, конфигурация которой станет первой версией хранилища. Обычно это свежая копия рабочей базы, загруженная из
.dt. - Откройте её в Конфигураторе и выполните
Конфигурация → Открыть конфигурацию. - Выберите
Конфигурация → Хранилище конфигурации → Создать хранилище.... - Укажите адрес
\\srv\1C_Repos\Buh. Сетевой путь лучше локального: тогда адрес одинаков для всех. - Задайте имя и пароль администратора хранилища. Это отдельный пользователь хранилища, не пользователь информационной базы.
- Дождитесь, пока конфигурация будет помещена. Для типовой Бухгалтерии это минуты, для ERP — может занять заметно дольше.
После создания база, из которой вы создавали хранилище, уже подключена к нему. Все объекты дерева отмечены замком — значит, они под контролем хранилища.
Не держите файловое хранилище на NAS с нестабильным SMB и не подключайтесь к нему по VPN через общую папку. Если связь оборвётся во время помещения, придётся восстанавливаться из резервной копии.
Сервер хранилища crserver: установка службы и создание хранилища
Сервер хранилища входит в дистрибутив технологической платформы. При установке отметьте компонент «Сервер хранилища конфигураций 1С:Предприятия». После установки исполняемый файл лежит в каталоге платформы, например C:\Program Files\1cv8\8.3.25.1374\bin\crserver.exe.
Регистрация службы в Windows
Запустите командную строку от администратора и выполните:
cd "C:\Program Files\1cv8\8.3.25.1374\bin"
crserver.exe -instsrvc -usr .\USR1CV8 -pwd "ПарольСлужбы" -port 1542 -d "D:\1C_Repos"
crserver.exe -start
Что здесь важно:
-dзадаёт корневой каталог. Хранилища создаются в нём подкаталогами.-port— порт службы. Для второй версии платформы регистрируйте второй экземпляр на другом порту, например 1642.-usrи-pwd— учётная запись, от которой работает служба.
Удалить службу можно командой crserver.exe -rmsrvc. Перед этим остановите её: все подключённые разработчики потеряют соединение с хранилищем, поэтому договоритесь о времени заранее.
Создание хранилища на сервере
Дальше всё как в файловом варианте, меняется только адрес. В Конфигураторе эталонной базы выполните Конфигурация → Хранилище конфигурации → Создать хранилище... и укажите:
tcp://srv/Buh
Если служба работает не на 1542, порт пишется явно: tcp://srv:1642/Buh. Каталог D:\1C_Repos\Buh сервер создаст сам.
Сервер хранилища на Linux
На Linux crserver лежит в каталоге платформы, обычно /opt/1cv8/x86_64/<номер версии>/. Его запускают в режиме демона:
sudo -u usr1cv8 /opt/1cv8/x86_64/8.3.25.1374/crserver -daemon -port 1542 -d /var/1C/repos
Для автозапуска оформите эту команду юнитом systemd. Каталог /var/1C/repos должен принадлежать пользователю, от которого работает процесс.
HTTP-доступ для удалённых разработчиков
Если открыть наружу 1542 нельзя, хранилище публикуют на веб-сервере. В Конфигураторе, запущенном от администратора на машине с IIS или Apache, откройте Администрирование → Публикация на веб-сервере... и включите публикацию доступа к хранилищу конфигурации, указав адрес хранилища. Разработчики подключаются по адресу вида http://srv/repo/repo.1ccr.
Хранилище и рабочие базы на PostgreSQL
Частый вопрос админов: как развернуть хранилище 1С «в PostgreSQL». Само хранилище в СУБД не размещается. И в файловом варианте, и на crserver оно хранится в собственном файловом формате на диске.
PostgreSQL используется для другого — для рабочих баз разработчиков. Схема в клиент-серверном варианте выглядит так:
- На кластере 1С создаются информационные базы разработчиков с СУБД PostgreSQL:
dev_ivanov,dev_petrovи т.д. - В каждую загружается копия рабочей базы из
.dt— тогда отладка идёт на реальных данных. - Каждый разработчик в Конфигураторе своей базы выполняет
Конфигурация → Хранилище конфигурации → Подключиться к хранилищу....
При подключении платформа заменяет конфигурацию базы содержимым хранилища и предупреждает об этом. Если в базе были несохранённые доработки, сначала выгрузите их в .cf или сравните с хранилищем.
💡 Рабочие базы разработчиков не обязательно включать в ежедневный бэкап PostgreSQL. Их можно заново развернуть из .dt рабочей базы и подключить к хранилищу. Вся ценная информация — доработки и их история — лежит в хранилище, его и резервируйте.
Перед тем как пересоздать рабочую базу разработчика, убедитесь, что он поместил изменения и снял захваты. Незафиксированные правки живут только в его базе и пропадут вместе с ней.
Пользователи хранилища, права и захват объектов
Пользователи хранилища заводятся отдельно от пользователей базы. Откройте Конфигурация → Хранилище конфигурации → Администрирование под администратором хранилища и добавьте каждого разработчика.
В карточке пользователя три флага прав:
| Право | Что разрешает | Кому давать |
|---|---|---|
| Захват объектов | Захватывать объекты и помещать изменения | Всем разработчикам |
| Изменение состава версий | Менять метки и комментарии версий | Ведущему разработчику |
| Административные функции | Управлять пользователями и обслуживанием хранилища | 1-2 ответственным |
Пользователь только с просмотром, без флагов, может получать конфигурацию, но не менять её. Такой удобно завести для сборки релизов и выгрузки .cf.
Как работает блокировка объектов
Блокировка в хранилище — это захват. Разработчик захватывает справочник или общий модуль, и пока объект захвачен, остальные могут только получить его последнюю версию.
- 🔒 Захват: правый щелчок по объекту →
Хранилище → Захватить в хранилище. - 📤 Помещение:
Хранилище → Поместить в хранилище, с комментарием к версии. Флаг «Оставить захваченными» сохраняет захват для дальнейшей работы. - ↩️ Отмена:
Хранилище → Отменить захват в хранилище, изменения в своей базе при этом можно не сохранять.
Правило команды, которое стоит закрепить письменно: не захватывать корень конфигурации без необходимости. Корень нужен при добавлении новых объектов верхнего уровня, но пока он захвачен одним человеком, остальные не могут добавлять свои объекты.
Каждому разработчику — свой пользователь хранилища. Один общий логин на троих ломает историю: невозможно понять, кто поместил версию с ошибкой.
Автоматическое резервное копирование хранилища 1С
Хранилище — это вся история разработки. Потеря каталога означает потерю всех версий, а не только последней. Бэкап настраивается в первый же день.
Надёжный способ — остановить службу, скопировать каталог целиком и запустить службу снова. Копирование работающего хранилища может дать несогласованную копию, если в этот момент кто-то помещает изменения.
Остановка службы обрывает соединение всех разработчиков с хранилищем. Ставьте задание на ночь и предупредите команду, что в это окно помещать изменения нельзя.
Пример .bat для Планировщика заданий Windows. Имя службы посмотрите в services.msc и подставьте в переменную SVC:
@echo off
set SVC=Имя_службы_хранилища
set SRC=D:\1C_Repos
set DST_ROOT=\\backup\1c_repos
for /f %%i in ('powershell -NoProfile -Command "Get-Date -Format yyyy-MM-dd"') do set D=%%i
net stop "%SVC%"
robocopy "%SRC%" "%DST_ROOT%\%D%" /E /R:2 /W:5 /NP /LOG:"%DST_ROOT%\log_%D%.txt"
net start "%SVC%"
rem удалить копии старше 14 дней
forfiles /p "%DST_ROOT%" /d -14 /c "cmd /c if @isdir==TRUE rd /s /q @path"
Дополнительно раз в неделю сохраняйте последнюю версию в файл: в окне истории хранилища выберите версию и сохраните её в .cf. Это не замена бэкапа каталога — история в .cf не попадает, — но позволяет быстро развернуть конфигурацию в новом хранилище.
Восстановление проверяйте хотя бы раз в квартал: разверните копию в отдельный каталог, подключите к ней тестовую базу и откройте историю.
Ошибки при развертывании хранилища и как их снять
Большинство проблем первого дня связаны с версией платформы, сетью и правами на каталог.
Test-NetConnection srv -Port 1542 в PowerShell.Частые вопросы
Как перенести хранилище на другой сервер?
Можно ли держать несколько хранилищ на одном сервере?
tcp://srv/Buh, tcp://srv/ZUP.