Хранилище конфигурации для команды: сервер, веб-публикация, права

· 9 мин

Содержание

Развернуть хранилище конфигурации 1С на сервере — это три шага: поставить службу «Сервер хранилища конфигураций» (crserver, порт 1542 по умолчанию), создать хранилище из конфигуратора командой Конфигурация → Хранилище конфигурации → Создать хранилище и выдать разработчикам права. Если коллеги работают из других сетей, хранилище дополнительно публикуют на веб-сервере (IIS или Apache) и подключаются по адресу вида http://server/repo/repo.1ccr.

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

Какой вариант хранилища выбрать: файловый, TCP или HTTP

Хранилище хранит версии конфигурации и отмечает, кто какой объект сейчас правит. Физически это каталог с файлами базы хранилища. Отличаются варианты тем, как разработчик до этого каталога добирается.

ВариантАдрес подключенияКогда выбираютСлабые места
📁 Файловый\\srv\Repo\BP или D:\Repo\BP1-2 разработчика, одна сетьЧувствителен к обрывам сети и антивирусу, каждому нужен доступ к папке на запись
🖥 TCP через crservertcp://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

  1. Запустите установщик платформы (setup.exe) на сервере.
  2. В списке компонентов отметьте «Сервер хранилища конфигураций 1С:Предприятия». Если нужна веб-публикация на этой же машине, сразу отметьте «Модули расширения веб-сервера».
  3. Завершите установку. Файл 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 обрывают текущие сессии разработчиков. Несохранённые изменения в их конфигурациях останутся, но незавершённое помещение прервётся. Останавливайте службу вне рабочего времени и предупреждайте команду.

Создание хранилища конфигурации и подключение базы

Хранилище создаётся из той базы, конфигурацию которой вы собираетесь дорабатывать. Обычно это копия рабочей базы или специальная база разработчика.

  1. Откройте базу в конфигураторе под пользователем с правами администратора.
  2. Выберите Конфигурация → Хранилище конфигурации → Создать хранилище....
  3. В поле адреса укажите путь:
    • для файлового варианта — каталог: \\srv\Repo\BP;
    • для TCP — tcp://srv1c:1542/D:\Repo\BP, где путь указан на диске сервера хранилища.
  4. Задайте имя и пароль администратора хранилища. Это отдельная учётная запись хранилища, она не связана с пользователями базы и Windows.
  5. Подтвердите создание. Конфигуратор помещает в хранилище текущую конфигурацию целиком, на крупной базе это занимает от нескольких минут до часа.

Остальные разработчики подключаются из своих баз через Конфигурация → Хранилище конфигурации → Подключиться к хранилищу.... При подключении платформа предложит заменить конфигурацию базы на конфигурацию из хранилища — соглашайтесь, если база создана заранее как пустая копия.

Рабочую базу пользователей к хранилищу не подключают. Изменения проверяют в базе разработчика, а в рабочую базу переносят файлом .cf или .cfe в согласованное окно. Так незаконченная доработка не попадёт к бухгалтерам.

Публикация хранилища на веб-сервере IIS и Apache

Веб-публикация нужна, когда разработчику нельзя дать прямой доступ к порту 1542. Веб-сервер принимает HTTP-запросы и передаёт их серверу хранилища.

Что должно быть установлено

  • 🌐 Веб-сервер: IIS (роль «Веб-сервер» с компонентами «Расширения ISAPI» и «Фильтры ISAPI») или Apache 2.4.
  • 🧩 Компонент платформы «Модули расширения веб-сервера» той же версии, что и crserver.
  • 🔁 Работающая служба crserver, доступная веб-серверу по TCP (часто это та же машина).

Публикация из конфигуратора

Конфигуратор умеет публиковать хранилище сам: в меню Администрирование есть отдельная команда публикации хранилища на веб-сервере (не путайте её с публикацией базы). Запускайте конфигуратор от имени администратора Windows, иначе он не сможет записать настройки веб-сервера.

В окне публикации укажите:

  1. Имя публикации, например repo. Оно станет частью адреса.
  2. Тип веб-сервера: IIS или Apache 2.4.
  3. Каталог публикации на диске, например C:\inetpub\repo.
  4. Адрес хранилища, к которому веб-сервер будет обращаться: 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 нужно перезапустить, иначе публикация не заработает. Перезапуск веб-сервера обрывает все его публикации, в том числе веб-клиент баз, если он крутится там же.

Пользователи хранилища и права разработчиков

Пользователей заводит администратор хранилища: Конфигурация → Хранилище конфигурации → Администрирование.... Права назначаются галочками в карточке пользователя.

ПравоЧто даётКому выдавать
ЧтениеПолучать конфигурацию и смотреть историюТестировщикам, аналитикам, сборке
Захват объектовЗахватывать и помещать измененияРазработчикам
Изменение состава версийПравить комментарии и метки версийВедущему разработчику
Административные функцииЗаводить пользователей, снимать чужие захватыОдному-двум людям

Практика, которая окупается:

  • 👤 Одна учётная запись — один человек. Общий логин «Разработчик» лишает историю смысла: не видно, кто что поместил.
  • 🤖 Для автоматической сборки заведите отдельного пользователя только с правом чтения.
  • 🚪 Уволился подрядчик — не удаляйте пользователя, а снимите права. Его имя останется в истории версий.

Захват объектов, помещение и история версий

Хранилище работает по принципу блокировки: объект, который захватил один разработчик, другие видят, но изменить не могут.

Основные команды доступны из контекстного меню объекта в дереве конфигурации и из меню Конфигурация → Хранилище конфигурации:

  1. «Захватить в хранилище» — берёте объект в работу. Флажок «Получать захваченные объекты» подтягивает его свежую версию перед правкой. Флажок рекурсивного захвата берёт объект вместе с подчинёнными.
  2. Правите объект, проверяете в своей базе (F7 — обновить конфигурацию базы данных, F5 — запуск отладки).
  3. «Поместить в хранилище» — сохраняете изменения и пишете комментарий. Флажок «Оставить объекты захваченными» нужен, если работа не закончена.
  4. «Отменить захват в хранилище» — откатываете свои правки и освобождаете объект.
  5. «Обновить конфигурацию из хранилища » — забираете изменения коллег. После этого обновите конфигурацию базы данных.

Историю открывают через Конфигурация → Хранилище конфигурации → История хранилища.... Там видно, кто, когда и что поместил. Любую версию можно сравнить с текущей, сохранить в файл .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 уже есть: меньше звеньев в цепочке.

Частые вопросы о развёртывании хранилища

Сколько хранилищ можно держать на одном crserver?
Сколько угодно. Одна служба обслуживает все хранилища, а каждое хранилище — это отдельный каталог со своим адресом.
Нужна ли отдельная лицензия на сервер хранилища?
Отдельный ключ для crserver не требуется. Лицензии нужны конфигураторам, которые запускают разработчики.
Можно ли подключить к хранилищу расширение конфигурации?
Да. Для расширения создаётся своё хранилище, команды для него находятся в меню расширения в конфигураторе.
Как перенести хранилище на другой сервер?
Остановите службу, скопируйте каталог хранилища, поставьте на новом сервере crserver той же версии и переподключите разработчиков на новый адрес.
Можно ли работать с хранилищем без сети?
Изменять захваченные объекты можно и без связи, а помещать их и захватывать новые — только при доступном хранилище.