Хранилище конфигурации 1С для команды: файл, crserver и резервные копии

· 9 мин

Содержание

Чтобы развернуть хранилище 1С, откройте базу с эталонной конфигурацией в Конфигураторе и выполните Конфигурация → Хранилище конфигурации → Создать хранилище.... В поле адреса укажите пустой каталог (файловое хранилище) или tcp://сервер/ИмяХранилища, если заранее поднят сервер хранилища crserver. Затем задайте пароль администратора хранилища, заведите пользователей и настройте ночной бэкап каталога.

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

Файловое хранилище или сервер хранилища: что выбрать

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

ВариантАдрес подключенияКогда подходитРиски
Файловое\\srv\Repo\Buh или D:\Repo\Buh1-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С по шагам

Файловый вариант разворачивается за десять минут, отдельной установки не требует.

  1. Создайте на сервере папку, например D:\1C_Repos\Buh, и откройте к ней общий доступ. Разработчикам дайте права на изменение и в общем ресурсе, и в NTFS.
  2. Возьмите базу, конфигурация которой станет первой версией хранилища. Обычно это свежая копия рабочей базы, загруженная из .dt.
  3. Откройте её в Конфигураторе и выполните Конфигурация → Открыть конфигурацию.
  4. Выберите Конфигурация → Хранилище конфигурации → Создать хранилище....
  5. Укажите адрес \\srv\1C_Repos\Buh. Сетевой путь лучше локального: тогда адрес одинаков для всех.
  6. Задайте имя и пароль администратора хранилища. Это отдельный пользователь хранилища, не пользователь информационной базы.
  7. Дождитесь, пока конфигурация будет помещена. Для типовой Бухгалтерии это минуты, для 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. На кластере 1С создаются информационные базы разработчиков с СУБД PostgreSQL: dev_ivanov, dev_petrov и т.д.
  2. В каждую загружается копия рабочей базы из .dt — тогда отладка идёт на реальных данных.
  3. Каждый разработчик в Конфигураторе своей базы выполняет Конфигурация → Хранилище конфигурации → Подключиться к хранилищу....

При подключении платформа заменяет конфигурацию базы содержимым хранилища и предупреждает об этом. Если в базе были несохранённые доработки, сначала выгрузите их в .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 не попадает, — но позволяет быстро развернуть конфигурацию в новом хранилище.

Восстановление проверяйте хотя бы раз в квартал: разверните копию в отдельный каталог, подключите к ней тестовую базу и откройте историю.

Хранилище готово к работе
Выполнено: 0 / 6

Ошибки при развертывании хранилища и как их снять

Большинство проблем первого дня связаны с версией платформы, сетью и правами на каталог.

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

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

Как перенести хранилище на другой сервер?
Попросите разработчиков поместить изменения и снять захваты. Остановите службу, скопируйте каталог хранилища целиком на новый сервер под тот же корень и запустите там crserver. Разработчики отключаются от старого адреса и подключаются к новому.
Можно ли держать несколько хранилищ на одном сервере?
Да. Один экземпляр crserver обслуживает все хранилища в своём корневом каталоге, адреса различаются последней частью: tcp://srv/Buh, tcp://srv/ZUP.
Сколько места нужно под хранилище?
Хранилище растёт с каждой версией. Для типовой конфигурации с несколькими годами истории закладывайте десятки гигабайт и столько же под каждую резервную копию.
Подключаются ли к хранилищу расширения конфигурации?
Да, у расширения своё хранилище. Его создают и подключают из окна расширений в Конфигураторе, отдельно от хранилища основной конфигурации.
Можно ли вместо хранилища использовать Git?
Да, если разработка ведётся в 1C:Enterprise Development Tools: EDT хранит проект в виде файлов и работает с Git напрямую. Для команд в Конфигураторе историю хранилища можно выгружать в Git сторонними инструментами, но само хранилище при этом остаётся основным.