Коллективная разработка через crserver: от установки службы до прав программистов

· 9 мин

Содержание

Сервер хранилища конфигураций 1С 8.3 — это служба crserver.exe, которая отдаёт хранилище конфигурации программистам по сети через адрес вида tcp://имя-сервера/хранилище. Порт по умолчанию — 1542. Она нужна, когда над одной конфигурацией работают двое и больше и общая папка на файловом сервере перестаёт справляться.

Типичная ситуация: три разработчика дорабатывают ERP, хранилище лежит в сетевой папке. Пока все в одном офисе — терпимо. Как только один уходит на удалёнку через VPN, захват объекта тянется минутами, а обрыв связи во время помещения грозит повредить файлы. Сервер хранилища снимает обе проблемы: клиент не работает с файлами напрямую, он обменивается командами со службой.

Что даёт сервер хранилища и чем он лучше общей папки

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

Хранилище можно открыть тремя способами:

СпособАдрес в КонфигуратореКогда подходит
Файловый\\fs\repo\ERP или D:\repo\ERP1-2 разработчика в одной локальной сети
Сервер хранилищаtcp://srv-dev/ERPкоманда, удалённые сотрудники, VPN
Через веб-серверhttp://...доступ из интернета, когда открыть TCP-порт нельзя

Что даёт серверный вариант на практике:

  • 🔒 Пользователям не нужен доступ к папке. Права на каталог есть только у учётной записи службы. Случайно удалить или скопировать файлы хранилища программист не сможет.
  • 🚀 Меньше трафика. Клиент получает только нужные данные, а не читает файл базы хранилища по SMB.
  • 🛡️ Устойчивость к обрывам. Запись в файлы ведёт сама служба на сервере, поэтому разрыв VPN у клиента не оставляет недописанный файл.
  • 🗂️ Несколько хранилищ на одной службе. Одна служба обслуживает все хранилища внутри своего корневого каталога: tcp://srv-dev/ERP, tcp://srv-dev/BP, tcp://srv-dev/ZUP_ext.
  • 🧩 Расширения. В хранилище можно помещать не только основную конфигурацию, но и расширения: у каждого расширения своё хранилище.

Требования и установка crserver

Отдельного дистрибутива нет. Сервер хранилища ставится из обычного установщика платформы 1С:Предприятие 8.3 как компонент «Сервер хранилища конфигураций 1С:Предприятия 8». Клиент и сервер приложений 1С на этой машине не обязательны.

Перед установкой решите три вещи:

  1. Версия платформы. Версия сервера хранилища должна совпадать с версией платформы, в которой работают программисты. При расхождении Конфигуратор не подключится. Если команды сидят на разных версиях, ставят несколько служб разных версий на разные порты.
  2. Каталог данных. Корневая папка, внутри которой служба создаёт хранилища. Берите отдельный диск или раздел с запасом: хранилище типовой ERP с историей за пару лет легко вырастает до десятков гигабайт.
  3. Учётная запись службы. Обычно это локальный пользователь USR1CV8 или доменная служебная учётка. Ей нужны права на чтение и запись в каталог данных, больше ничего.

Установка службы из командной строки

Если при установке платформы вы не отметили запуск сервера хранилища как службы Windows, зарегистрируйте её вручную. Откройте командную строку от администратора в каталоге bin нужной версии платформы, например C:\Program Files\1cv8\8.3.24.1548\bin:

crserver.exe -instsrvc -port 1542 -d "D:\1CRepo" -usr .\USR1CV8 -pwd "Пароль_учётки"
crserver.exe -start

Что значат ключи:

  • -instsrvc — зарегистрировать службу;
  • -port — TCP-порт, на котором служба принимает подключения;
  • -d — корневой каталог хранилищ;
  • -usr и -pwd — учётная запись, от имени которой работает служба.

Удалить службу можно ключом -rmsrvc, остановить — -stop. Перед удалением старой службы при обновлении платформы убедитесь, что никто не помещает изменения.

Открыть порт в брандмауэре

Без этого шага служба работает, но с других компьютеров недоступна:

netsh advfirewall firewall add rule name="1C crserver 1542" dir=in action=allow protocol=TCP localport=1542

Если служб несколько (например, 1542 и 1642 для двух версий платформы), откройте каждый порт отдельным правилом. В адресе хранилища нестандартный порт указывают явно: tcp://srv-dev:1642/ERP.

На Linux тот же исполняемый файл crserver входит в серверный пакет платформы. Запускают его в режиме демона с ключом -daemon и теми же -d и -port, а автозапуск оформляют штатным для дистрибутива способом.

Создание хранилища и первое подключение

Хранилище создаёт один человек — будущий администратор. Остальные потом только подключаются.

  1. Откройте в Конфигураторе базу, конфигурация которой станет основой хранилища. Лучше всего — свежую копию рабочей базы.
  2. Выберите Конфигурация → Хранилище конфигурации → Создать хранилище....
  3. В поле адреса укажите tcp://srv-dev/ERP. Каталог ERP служба создаст сама внутри своего корня D:\1CRepo.
  4. Задайте имя и пароль первого пользователя. Он автоматически получает все права, включая административные.
  5. Дождитесь окончания: платформа помещает в хранилище всю конфигурацию целиком. Для крупных решений это может занять от нескольких минут до часа.

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

Не подключайте к хранилищу базу с реальной работой пользователей. Разработку ведут в отдельной копии, а в рабочую базу изменения переносят через файл .cf или поставку. Иначе любое «Обновить конфигурацию БД» у разработчика затронет боевые данные.

Подключение остальных разработчиков

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

Правила работы команды с хранилищем

Технически всё держится на четырёх командах из меню Конфигурация → Хранилище конфигурации и контекстного меню дерева метаданных:

КомандаЧто делает
Захватить в хранилищеБлокирует объект за вами. Другие видят захват и не могут его поместить
Поместить в хранилищеОтправляет ваши изменения, создаёт новую версию с комментарием
Получить из хранилищаЗагружает чужие изменения в вашу конфигурацию
Отменить захватСнимает блокировку, ваши правки по объекту откатываются к версии хранилища

Командный регламент, который реально работает:

  • 📝 Комментарий к каждому помещению. Номер задачи и одна строка смысла: «#412 Новый реквизит Проект в РТиУ». Через полгода история хранилища — единственный способ понять, откуда взялась правка.
  • ⏱️ Не держать захват неделями. Захватили общий модуль — поместите в тот же день или отпустите. Иначе коллеги стоят.
  • 🔁 Получать перед помещением. Сначала заберите чужие изменения, проверьте синтаксис, потом помещайте свои.
  • 🌳 Захват рекурсивно — с осторожностью. Захват всего документа вместе с формами и макетами блокирует работу других над тем же документом.
  • 🏷️ Метки на версиях. Перед каждой выдачей в рабочую базу ставьте на версию метку, например «Релиз 2.3 в прод». К этой точке потом легко вернуться и сравнить.

Как выдавать изменения в рабочую базу

Рабочую базу к хранилищу не подключают. Выпуск делают из базы сборщика: получают из хранилища нужную версию (или версию с меткой), сохраняют конфигурацию в файл .cf и обновляют им рабочую базу в окно регламента. Если рабочая конфигурация на поддержке и в ней есть доработки, удобнее собирать файл поставки .cf, чтобы при следующем обновлении типовой корректно сработало сравнение и объединение.

Так у каждого выпуска остаётся точка в истории хранилища, и откат сводится к получению предыдущей версии.

Раздача прав

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

  • Захват объектов — можно захватывать и править;
  • Изменение версий — можно менять комментарии и метки версий;
  • Административные функции — пользователи, права, обслуживание хранилища.

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

Запуск хранилища для команды
Выполнено: 0 / 7

Обслуживание и резервное копирование

Хранилище — это история всей разработки. Потерять его больнее, чем базу разработчика.

Что копировать

Каждое хранилище — подкаталог в корне службы. Основной файл данных внутри называется 1cv8ddb.1CD, рядом лежат служебные файлы и подкаталоги. Копировать нужно папку хранилища целиком.

Надёжная схема:

  1. Ночью, когда никто не помещает изменения, остановить службу (crserver.exe -stop или через services.msc).
  2. Скопировать каталог хранилища архиватором в другое место.
  3. Запустить службу обратно.

Остановка службы обрывает подключения всех программистов. Незавершённое помещение у человека сорвётся, поэтому окно копирования согласуйте с командой. Копирование «на живую» без остановки иногда работает, но гарантии целостности не даёт.

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

Обновление платформы

Это самая частая точка поломки. Порядок:

  1. Договориться о моменте, когда все поместили изменения.
  2. Остановить и удалить службу старой версии ключом -rmsrvc из её каталога bin.
  3. Установить платформу новой версии с компонентом сервера хранилища.
  4. Зарегистрировать службу новой версии с тем же каталогом -d и тем же портом.
  5. Обновить платформу у всех разработчиков.

При первом подключении новой версией платформа может предложить сконвертировать хранилище в новый формат. Перед этим сделайте копию: обратной конвертации нет.

Повреждение файла хранилища

Если при подключении или получении появляются ошибки чтения данных, остановите службу и проверьте 1cv8ddb.1CD утилитой chdbfl.exe из каталога bin платформы. Сначала запускайте проверку без исправления и на копии файла. Если утилита не помогла — восстанавливайтесь из резервной копии.

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

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

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

Если подключиться так и не удалось

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

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

Нужна ли серверная лицензия 1С для сервера хранилища?
Сервер хранилища — отдельный компонент, он не заменяет сервер 1С:Предприятия и ставится без него. Разработчикам для работы в Конфигураторе нужны обычные клиентские лицензии.
Можно ли поставить сервер хранилища на ту же машину, что и сервер 1С?
Да, это частая схема для небольших команд. Порты не пересекаются: агент сервера 1С по умолчанию слушает 1540, сервер хранилища — 1542.
Сколько хранилищ обслуживает одна служба?
Все, что лежат внутри её корневого каталога. Отдельные службы нужны только для разных версий платформы.
Как сменить пароль администратора хранилища, если его забыли?
Если есть другой пользователь с административными функциями — он задаст новый пароль. Если нет — восстановите хранилище из резервной копии, где пароль известен, либо создайте новое хранилище из текущей конфигурации.
Чем хранилище отличается от Git и EDT?
Хранилище работает с блокировками: объект в один момент правит один человек. В EDT конфигурация хранится в виде файлов и ведётся в Git с ветками и слиянием. Для команд на Конфигураторе хранилище остаётся основным инструментом.