Хранилище конфигурации для команды: сервер, веб-публикация, права
Содержание
Развернуть хранилище конфигурации 1С на сервере — это три шага: поставить службу «Сервер хранилища конфигураций» (crserver, порт 1542 по умолчанию), создать хранилище из конфигуратора командой Конфигурация → Хранилище конфигурации → Создать хранилище и выдать разработчикам права. Если коллеги работают из других сетей, хранилище дополнительно публикуют на веб-сервере (IIS или Apache) и подключаются по адресу вида http://server/repo/repo.1ccr.
Есть и самый простой путь: положить хранилище в общую папку и подключаться по сетевому пути. Он годится для одного-двух человек в одной локальной сети. Для команды, удалённой работы и баз, которые дорабатываются годами, надёжнее серверный вариант.
Какой вариант хранилища выбрать: файловый, TCP или HTTP
Хранилище хранит версии конфигурации и отмечает, кто какой объект сейчас правит. Физически это каталог с файлами базы хранилища. Отличаются варианты тем, как разработчик до этого каталога добирается.
| Вариант | Адрес подключения | Когда выбирают | Слабые места |
|---|---|---|---|
| 📁 Файловый | \\srv\Repo\BP или D:\Repo\BP | 1-2 разработчика, одна сеть | Чувствителен к обрывам сети и антивирусу, каждому нужен доступ к папке на запись |
🖥 TCP через crserver | tcp://srv1c:1542/D:\Repo\BP | Команда в локальной сети или по VPN | Нужна служба и открытый порт |
| 🌐 HTTP через веб-сервер | http://srv1c/repo/repo.1ccr | Подрядчики и удалёнщики без VPN | Нужен веб-сервер с модулями 1С, сам веб-сервер обращается к crserver |
HTTP-вариант не заменяет сервер хранилища, а надстраивается над ним. Поэтому порядок такой: сначала crserver, потом при необходимости веб-публикация.
Файловое хранилище потом легко перевести на сервер: остановите работу, перенесите каталог в папку, которую обслуживает crserver, и переподключите разработчиков на новый адрес.
Подготовка сервера под хранилище конфигурации
Хранилище не требует мощного железа. Нагрузка появляется в моменты помещения и получения больших объёмов: первое помещение конфигурации уровня ERP, обновление типовой поставки, массовый захват.
Что подготовить заранее:
- 🖥 Сервер на Windows Server 2016 и новее или на Linux. Отдельная машина не обязательна, часто хранилище ставят на сервер 1С или файловый сервер.
- 💾 Диск под данные с запасом. Хранилище копит все версии, и за пару лет активной разработки типовой конфигурации каталог вырастает до десятков гигабайт.
- 👤 Служебная учётная запись, от имени которой будет работать служба. Ей нужны права на запись в каталог с данными, права администратора домена не нужны.
- 🔌 Открытый входящий порт 1542/TCP в брандмауэре сервера (или другой, если вы его смените).
- 🔢 Дистрибутив платформы той же версии, что у разработчиков.
Версия сервера хранилища должна совпадать с версией платформы, на которой работают разработчики. При расхождении конфигуратор откажет в подключении с сообщением о несоответствии версий. Обновили платформу у команды — обновите и crserver.
Отдельно продумайте структуру каталогов. Удобно держать один корневой каталог, например D:\Repo, и по подкаталогу на каждую конфигурацию: D:\Repo\BP, D:\Repo\ZUP, D:\Repo\UT. Так проще резервное копирование
и права.
Установка службы crserver и первый запуск
Установка в Windows
- Запустите установщик платформы (
setup.exe) на сервере. - В списке компонентов отметьте «Сервер хранилища конфигураций 1С:Предприятия». Если нужна веб-публикация на этой же машине, сразу отметьте «Модули расширения веб-сервера».
- Завершите установку. Файл
crserver.exeокажется в каталогеbinустановленной версии, напримерC:\Program Files\1cv8\8.3.xx.xxxx\bin.
Установщик не всегда регистрирует службу хранилища сам. Тогда это делается из командной строки, запущенной от имени администратора:
cd "C:\Program Files\1cv8\8.3.xx.xxxx\bin"
crserver.exe -instsrvc -port 1542 -d D:\RepoData -usr DOMAIN\svc_1crepo -pwd ПарольСлужбы
crserver.exe -start
Здесь -d — каталог служебных данных сервера хранилища, -usr и -pwd — учётная запись службы. Удалить службу можно командой crserver.exe -rmsrvc, остановить — crserver.exe -stop.
После запуска проверьте в оснастке «Службы», что служба работает, и с рабочего места разработчика выполните Test-NetConnection srv1c -Port 1542 в PowerShell. Результат TcpTestSucceeded : True значит, что порт доступен.
Установка в Linux
В Linux сервер хранилища ставится отдельным пакетом из дистрибутива платформы (в имени пакета есть crs). Запуск в фоне выглядит так:
crserver -daemon -port 1542 -d /var/1C/repo
Для автозапуска оформите юнит systemd и укажите пользователя, у которого есть права на каталог /var/1C/repo.
Команды -stop и -rmsrvc обрывают текущие сессии разработчиков. Несохранённые изменения в их конфигурациях останутся, но незавершённое помещение прервётся. Останавливайте службу вне рабочего времени и предупреждайте команду.
Создание хранилища конфигурации и подключение базы
Хранилище создаётся из той базы, конфигурацию которой вы собираетесь дорабатывать. Обычно это копия рабочей базы или специальная база разработчика.
- Откройте базу в конфигураторе под пользователем с правами администратора.
- Выберите
Конфигурация → Хранилище конфигурации → Создать хранилище.... - В поле адреса укажите путь:
- для файлового варианта — каталог:
\\srv\Repo\BP; - для TCP —
tcp://srv1c:1542/D:\Repo\BP, где путь указан на диске сервера хранилища.
- для файлового варианта — каталог:
- Задайте имя и пароль администратора хранилища. Это отдельная учётная запись хранилища, она не связана с пользователями базы и Windows.
- Подтвердите создание. Конфигуратор помещает в хранилище текущую конфигурацию целиком, на крупной базе это занимает от нескольких минут до часа.
Остальные разработчики подключаются из своих баз через Конфигурация → Хранилище конфигурации → Подключиться к хранилищу.... При подключении платформа предложит заменить конфигурацию
базы на конфигурацию из хранилища — соглашайтесь, если база создана заранее как пустая копия.
Рабочую базу пользователей к хранилищу не подключают. Изменения проверяют в базе разработчика, а в рабочую базу переносят файлом .cf или .cfe в согласованное окно. Так незаконченная доработка не попадёт к бухгалтерам.
Публикация хранилища на веб-сервере IIS и Apache
Веб-публикация нужна, когда разработчику нельзя дать прямой доступ к порту 1542. Веб-сервер принимает HTTP-запросы и передаёт их серверу хранилища.
Что должно быть установлено
- 🌐 Веб-сервер: IIS (роль «Веб-сервер» с компонентами «Расширения ISAPI» и «Фильтры ISAPI») или Apache 2.4.
- 🧩 Компонент платформы «Модули расширения веб-сервера» той же версии, что и
crserver. - 🔁 Работающая служба
crserver, доступная веб-серверу по TCP (часто это та же машина).
Публикация из конфигуратора
Конфигуратор умеет публиковать хранилище сам: в меню Администрирование есть отдельная команда публикации хранилища на веб-сервере (не путайте её с публикацией базы). Запускайте конфигуратор от имени администратора Windows, иначе он не сможет записать настройки веб-сервера.
В окне публикации укажите:
- Имя публикации, например
repo. Оно станет частью адреса. - Тип веб-сервера: IIS или Apache 2.4.
- Каталог публикации на диске, например
C:\inetpub\repo. - Адрес хранилища, к которому веб-сервер будет обращаться:
tcp://localhost:1542/D:\Repo\BP.
После публикации в каталоге появится файл с расширением .1ccr. Внутри он хранит строку подключения к серверу хранилища:
<?xml version="1.0" encoding="UTF-8"?>
<repository connectString="tcp://localhost:1542/D:\Repo\BP"/>
Разработчик указывает в поле адреса при подключении http://srv1c/repo/repo.1ccr (имя файла — то, что создалось в каталоге публикации). Для внешнего доступа настройте HTTPS на веб-сервере и пускайте снаружи только порт 443.
Частые грабли при публикации
- 🧱 Разрядность. Модуль расширения должен совпадать по разрядности с веб-сервером. Для 32-битного модуля в пуле приложений IIS включают «Разрешить 32-разрядные приложения».
- 🔐 Права на каталог. Учётной записи пула IIS или службы Apache нужен доступ на чтение каталога публикации.
- 🔄 Перезапуск. Apache после правки
httpd.confнужно перезапустить, иначе публикация не заработает. Перезапуск веб-сервера обрывает все его публикации, в том числе веб-клиент баз, если он крутится там же.
Пользователи хранилища и права разработчиков
Пользователей заводит администратор хранилища: Конфигурация → Хранилище конфигурации → Администрирование.... Права назначаются галочками в карточке пользователя.
| Право | Что даёт | Кому выдавать |
|---|---|---|
| Чтение | Получать конфигурацию и смотреть историю | Тестировщикам, аналитикам, сборке |
| Захват объектов | Захватывать и помещать изменения | Разработчикам |
| Изменение состава версий | Править комментарии и метки версий | Ведущему разработчику |
| Административные функции | Заводить пользователей, снимать чужие захваты | Одному-двум людям |
Практика, которая окупается:
- 👤 Одна учётная запись — один человек. Общий логин «Разработчик» лишает историю смысла: не видно, кто что поместил.
- 🤖 Для автоматической сборки заведите отдельного пользователя только с правом чтения.
- 🚪 Уволился подрядчик — не удаляйте пользователя, а снимите права. Его имя останется в истории версий.
Захват объектов, помещение и история версий
Хранилище работает по принципу блокировки: объект, который захватил один разработчик, другие видят, но изменить не могут.
Основные команды доступны из контекстного меню объекта в дереве конфигурации и из меню Конфигурация → Хранилище конфигурации:
- «Захватить в хранилище» — берёте объект в работу. Флажок «Получать захваченные объекты» подтягивает его свежую версию перед правкой. Флажок рекурсивного захвата берёт объект вместе с подчинёнными.
- Правите объект, проверяете в своей базе (
F7— обновить конфигурацию базы данных,F5— запуск отладки). - «Поместить в хранилище» — сохраняете изменения и пишете комментарий. Флажок «Оставить объекты захваченными» нужен, если работа не закончена.
- «Отменить захват в хранилище» — откатываете свои правки и освобождаете объект.
- «Обновить конфигурацию из хранилища » — забираете изменения коллег. После этого обновите конфигурацию базы данных.
Историю открывают через Конфигурация → Хранилище конфигурации → История хранилища.... Там видно, кто, когда и что поместил. Любую версию можно сравнить с текущей, сохранить в файл .cf или отметить меткой.
Ставьте метку на версию перед каждой выкладкой в рабочую базу: «Релиз 2.4, перенесено 14.03». Когда через полгода спросят, что изменилось с прошлой поставки, сравнение двух меток ответит за минуту.
Автоматизация из командной строки
Ночное обновление тестовой базы из хранилища выполняется пакетным запуском конфигуратора:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /S srv1c\test_bp ^
/N Администратор /P ПарольБазы ^
/ConfigurationRepositoryF tcp://srv1c:1542/D:\Repo\BP ^
/ConfigurationRepositoryN build /ConfigurationRepositoryP ПарольСборки ^
/ConfigurationRepositoryUpdateCfg -force /UpdateDBCfg /Out D:\Logs\update_test.log
Строка обновит конфигурацию тестовой базы из хранилища и сразу применит изменения к базе данных. Если в обновлении есть реструктуризация, пользователям тестовой базы понадобится выйти: при активных сеансах /UpdateDBCfg завершится с ошибкой, причина будет в логе.
Ошибки при развёртывании и как ускорить хранилище
Резервное копирование
Копируйте каталог хранилища целиком: базу хранилища и все вложенные папки с данными версий. Надёжнее всего делать копию при остановленной службе crserver, ночью, когда никто не помещает изменения. Копия «на ходу» может поймать хранилище в середине помещения.
Хранилище — единственное место, где лежит история доработок. Если оно пропадёт без копии, вы сохраните последнюю конфигурацию из любой подключённой базы, но потеряете историю и авторство изменений.
Что ускоряет работу
- ⚡ Хранилище на SSD. Помещение крупных объектов упирается в диск.
- 🛡 Исключение каталога хранилища из проверки антивирусом в реальном времени. Особенно заметно на файловом варианте.
- 🎯 Захват точечный, без лишней рекурсии. Захват всей подсистемы ради одного модуля блокирует коллег и замедляет помещение.
- 🌍 Для удалённых разработчиков — TCP через VPN вместо HTTP через интернет, если VPN уже есть: меньше звеньев в цепочке.