Доступ к хранилищу конфигурации для команды: сервер crserver и публикация по HTTP

· 9 мин

Содержание

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

Обычная боль выглядит так: хранилище лежит в общей папке, второй разработчик из филиала подключиться не может, а общая папка через VPN тормозит и иногда портит файлы. Решение одно — убрать прямой доступ к файлам и поставить между разработчиками и каталогом службу. Ниже обе схемы для платформы 8.3, порядок одинаков для любой конфигурации: БП, ЗУП, УТ или собственной разработки.

Подготовка сервера и прав перед публикацией хранилища

До публикации решите, какой способ нужен. Выбор зависит от сети и от того, где работают разработчики.

СпособАдрес для подключенияКогда подходитМинусы
Общая папка\\server\repo1-2 человека в одной локальной сетиМедленно, права на файлы у всех, риск повреждения
Сервер хранилища crservertcp://server/repoКоманда в офисе или через VPNНужен открытый порт (по умолчанию 1542)
Веб-публикацияhttp(s)://server/repo/repo.1ccrУдалённые разработчики, доступ через интернетНужен веб-сервер и модуль расширения 1С той же версии

Что проверить на сервере:

  • 🖥️ Версия платформы. Сервер хранилища и модуль веб-расширения должны совпадать по номеру с платформой, на которой работают разработчики. Обновили клиентов до новой сборки — обновите и серверную часть.
  • 📁 Каталог хранилища. Отдельная папка на локальном диске сервера, например D:\Repository\buh. Сетевые диски и папки синхронизации (облачные диски) не используйте.
  • 🔐 Учётная запись службы. Пользователь Windows, от имени которого работает служба, получает полные права на каталог хранилища. Обычным пользователям права на каталог не нужны вовсе.
  • 🧱 Сеть. Для TCP откройте в брандмауэре порт сервера хранилища (по умолчанию 1542). Для HTTP — 80 или 443 на веб-сервере.
  • 💾 Резервная копия. Каталог хранилища копируйте целиком при остановленной службе или средствами, которые умеют снимать консистентный снимок.

Если хранилища ещё нет, создайте его сразу на сервере: откройте Конфигуратор базы, выполните Конфигурация → Хранилище конфигурации → Создать хранилище... и укажите локальный путь сервера или уже адрес tcp://.... Пользователь, которого вы зададите при создании, становится администратором хранилища.

Способ 1. Публикация хранилища через сервер crserver

Сервер хранилища ставится вместе с платформой. В установщике отметьте компонент «Сервер хранилища конфигураций 1С:Предприятия». Если платформа уже стоит, запустите установщик повторно и добавьте этот компонент через изменение установки.

Регистрация службы

Откройте командную строку от имени администратора и перейдите в каталог bin нужной версии платформы, например C:\Program Files\1cv8\8.3.25.1374\bin (номер подставьте свой).

crserver.exe -instsrvc -port 1542 -d "D:\Repository" -usr ".\svc_1crepo" -pwd "ПарольСлужбы"
crserver.exe -start

Что делают параметры:

  1. -instsrvc — регистрирует сервер хранилища как службу Windows.
  2. -port 1542 — порт, который слушает служба.
  3. -d — каталог данных. Пути к хранилищам в адресе указываются относительно него.
  4. -usr и -pwd — учётная запись, от имени которой работает служба.
  5. -start — запускает зарегистрированную службу.

После этого в оснастке «Службы» (services.msc) появится служба сервера хранилища. Проверьте, что у неё тип запуска «Автоматически».

Какой адрес выдавать разработчикам

Если каталог данных D:\Repository, а хранилище лежит в D:\Repository\buh, адрес будет таким:

tcp://srv-1c/buh

При нестандартном порте его пишут после имени сервера: tcp://srv-1c:1642/buh. На одном сервере хранилища можно держать сколько угодно хранилищ — по одному подкаталогу на конфигурацию.

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

Перенос существующего хранилища под сервер

Хранилище уже есть в общей папке? Его не нужно пересоздавать.

  1. Попросите всех разработчиков поместить изменения или отменить захват.
  2. Скопируйте каталог хранилища целиком внутрь каталога данных сервера, например в D:\Repository\buh.
  3. Закройте доступ к старой общей папке, чтобы никто не продолжил работу в ней по старому пути.
  4. Разработчики переподключают свои базы к новому адресу tcp://....

Захваты объектов в переносе сохраняются, но не допускайте одновременной работы со старой и новой копией — это два разных хранилища, изменения в них разойдутся.

Способ 2. Веб-публикация хранилища на Apache или IIS

HTTP-вариант удобен, когда разработчики работают из дома и VPN нет. Подключение идёт через модуль веб-расширения 1С, поэтому на веб-сервере должна стоять платформа с компонентом «Модули расширения веб-сервера».

Файл публикации default.vrd

Создайте каталог публикации, например C:\inetpub\repo, и положите в него файл default.vrd. В атрибуте ib указывается путь к каталогу хранилища:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       base="/repo"
       ib="File=&quot;D:\Repository\buh&quot;;">
</point>

Кавычки внутри атрибута записываются как &quot;. Значение base совпадает с именем публикации в адресе.

Настройка Apache 2.4

В httpd.conf подключите модуль и опишите каталог публикации:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.25.1374/bin/wsap24.dll"

Alias "/repo" "C:/inetpub/repo/"
<Directory "C:/inetpub/repo/">
    AllowOverride All
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "C:/inetpub/repo/default.vrd"
</Directory>

Путь к wsap24.dll должен вести в каталог bin той же версии платформы, что у разработчиков. После правки перезапустите Apache.

Особенности IIS

Для IIS каталог публикации оформляют как приложение и сопоставляют обработчик с библиотекой wsisapi.dll из каталога bin платформы. Пулу приложений и пользователю, от имени которого он работает, дают права на каталог хранилища. Разрядность пула должна совпадать с разрядностью установленного модуля.

Адрес для подключения

http://srv-1c/repo/repo.1ccr

Часть repo.1ccr обязательна: именно по ней модуль понимает, что запрос адресован хранилищу. Через интернет публикуйте только по HTTPS — пароль пользователя хранилища иначе уходит по сети в открытом виде.

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

Публикация открывает дверь, а права решают, кто в неё войдёт. Пользователи хранилища не связаны ни с пользователями Windows, ни с пользователями информационной базы.

Список пользователей ведёт администратор хранилища: Конфигурация → Хранилище конфигурации → Администрирование. Там же создают новых пользователей, задают пароли и выдают права.

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

Что ещё сделать для безопасности:

  • 🔑 Пароль у каждого пользователя свой. Общий логин «dev» на троих лишает истории смысла: не видно, кто что поместил.
  • 🚪 Уволился сотрудник — удалите пользователя или смените ему пароль в тот же день. Перед удалением отмените его захваты в окне хранилища.
  • 🌐 Порт 1542 наружу не открывайте. Для доступа извне — VPN или веб-публикация по HTTPS.
  • 📂 Отберите у пользователей права на сам каталог хранилища в файловой системе. Работать с ним должна только служба.
Хранилище опубликовано безопасно
Выполнено: 0 / 7

Подключение разработчиков к опубликованному хранилищу

Каждый разработчик подключает свою информационную базу. Обычно это копия рабочей базы, выделенная под разработку.

  1. Откройте базу в Конфигураторе.
  2. Выполните Конфигурация → Хранилище конфигурации → Подключиться к хранилищу....
  3. В поле адреса укажите tcp://srv-1c/buh или http://srv-1c/repo/repo.1ccr.
  4. Введите имя и пароль пользователя хранилища.
  5. Согласитесь на замену конфигурации базы конфигурацией из хранилища.
  6. Дождитесь загрузки и выполните обновление конфигурации базы данных.

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

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

Захват, помещение и получение объектов после публикации

Окно хранилища открывается командой Конфигурация → Хранилище конфигурации → Хранилище. В нём видно дерево объектов и кто какой объект захватил.

Рабочий цикл разработчика:

  1. Получить — команда Получить из хранилища подтягивает свежие изменения коллег. Делайте это перед началом работы.
  2. Захватить — правой кнопкой по объекту в дереве конфигурации, Захватить в хранилище. Пока объект захвачен вами, остальные могут только читать его.
  3. Изменить объект в своей базе и проверить.
  4. Поместить — Поместить в хранилище с комментарием. Комментарий пишите по делу: номер задачи и что сделано.
  5. Обновить базу данных, чтобы изменения применились к таблицам.

💡 Флажок «Оставить объекты захваченными» при помещении удобен, когда задача делается в несколько заходов: изменения уже в хранилище, а коллеги объект не перехватят.

Если правки не нужны, освободите объект командой Отменить захват — изменения в вашей базе откатятся к версии из хранилища. Администратор хранилища может отменить чужой захват, если сотрудник ушёл в отпуск с захваченными объектами.

Для рабочей базы схема другая. Её к хранилищу обычно не подключают: релиз сохраняют из хранилища в файл .cf или .cfu и обновляют рабочую базу уже им. Так в рабочую базу не попадёт незаконченная доработка.

Ошибки подключения к хранилищу после публикации

Большинство проблем после публикации сводится к трём вещам: версия, сеть и права. Выберите симптом:

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

Если не помогло

  • Подключитесь к хранилищу прямо на сервере, указав локальный путь к каталогу. Работает — значит, хранилище целое, проблема в сети или публикации.
  • Попробуйте подключиться с другой машины разработчика. Если там всё работает, ищите причину на исходном компьютере (антивирус, прокси, кэш).
  • Очистите локальный кэш хранилища на машине разработчика: закройте Конфигуратор и удалите папку кэша в профиле пользователя. Перед этим поместите все изменения.

Частые вопросы о публикации хранилища

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