К статье
Практический материал

Разработка и Конфигурация · 12 мин

Сервер хранилища конфигураций 1С: назначение и настройка

Сервер хранилища конфигураций 1С: назначение, установка, настройка, отличие от файлового хранилища. Практические шаги, ошибки и FAQ для администраторов.

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

Тема актуальна для команд, где над одной конфигурацией работают два и более разработчика. Если каждый ведёт доработки в своей базе и обменивается файлами .cf, рано или поздно возникает ситуация потерянных изменений: один разработчик загрузил конфигурацию целиком и затёр работу коллеги. Хранилище решает эту проблему через механизм захвата объектов, а сервер хранилища делает работу с ним стабильной и быстрой.

Материал ориентирован на администраторов 1С и ведущих разработчиков, которые планируют развернуть сервер хранилища или перенести существующее файловое хранилище на серверный вариант. Рассмотрим архитектуру, требования, пошаговую установку, типичные ошибки и способы проверки результата.

Что такое хранилище конфигурации и зачем ему сервер

Хранилище конфигурации — это централизованное хранилище версий конфигурации 1С. Оно фиксирует, какой разработчик захватил объект на изменение, хранит историю версий и позволяет откатиться к любой из них. Физически хранилище — это файл с расширением .1cda, который создаётся из конфигуратора командой «Конфигурация → Хранилище конфигурации → Создать хранилище».

Без сервера разработчики подключаются к хранилищу по сетевому пути вида \\server\share\storage.1cda. Такой режим работает, но имеет ограничения: файл открывается несколькими клиентами одновременно через механизмы сетевой файловой системы, скорость операций заметно падает при росте числа пользователей, а обрыв сети в момент записи может привести к повреждению хранилища.

Серверный режим меняет схему: файл хранилища открывает только служба сервера, а конфигураторы подключаются к ней по адресу вида tcp://servername:1542/StorageName. Это снимает проблему конкурентного файлового доступа, ускоряет массовые операции (получение версии, сравнение) и позволяет размещать хранилище на машине без общих сетевых папок.

Когда сервер хранилища действительно нужен

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

Маршрут решения

Как выбрать действие

С хранилищем работают 1–2 разработчика, операции занимают приемлемое времяОставьте файловый режим, но обеспечьте резервное копирование файла .1cda
Разработчиков трое и больше, операции помещения и получения заметно тормозятРазверните сервер хранилища и переведите подключения на tcp-адрес
Хранилище периодически повреждается при обрывах сетиПереходите на серверный режим — служба монопольно владеет файлом
Нужен доступ к хранилищу извне офисной сети без общих папокИспользуйте сервер хранилища с открытым TCP-портом и разграничением прав

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

Требования и подготовка к установке

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

По умолчанию сервер хранилища использует TCP-порт 1542. Этот порт нужно открыть в межсетевом экране между машинами разработчиков и сервером. Если порт занят или закрыт политиками, сервер можно запустить на другом порту, но тогда его нужно явно указывать в строке подключения.

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

Установка и запуск сервера хранилища

В Windows сервер хранилища устанавливается как служба через утилиту командной строки, входящую в состав платформы. Запуск выполняется из каталога bin установленной версии платформы с правами администратора. В Linux служба регистрируется аналогичным образом через скрипты дистрибутива.

cmd
"C:\Program Files\1cv8\8.3.22.1750\bin\crserver.exe" -instsrvc -d "D:\1C_Storage"

Параметр -d задаёт корневой каталог, в котором размещаются хранилища, обслуживаемые сервером. Каждое хранилище — это подкаталог внутри корневого каталога, и имя подкаталога становится именем хранилища в строке подключения. После регистрации службы её нужно запустить через оснастку services.msc или командой net start.

Порядок действий
  1. 1
    Установите на выделенной машине платформу 1С той же версии, что у разработчиков
  2. 2
    Создайте корневой каталог для хранилищ, например D:\1C_Storage
  3. 3
    Зарегистрируйте службу командой crserver.exe -instsrvc -d с указанием каталога
  4. 4
    Запустите службу и проверьте, что порт 1542 прослушивается
  5. 5
    Скопируйте файл .1cda в подкаталог внутри корневого каталога сервера
  6. 6
    В конфигураторе подключитесь к хранилищу по адресу tcp://server:1542/ИмяХранилища
  7. 7
    Выполните тестовый захват и помещение объекта, затем проверьте историю версий

Учётная запись, под которой работает служба, должна иметь полные права на корневой каталог и все вложенные файлы. Если служба стартует и сразу останавливается, первым делом проверяйте права на каталог и корректность пути в параметрах службы.

Подключение разработчиков и разграничение прав

Подключение к серверному хранилищу выполняется из конфигуратора: «Конфигурация → Хранилище конфигурации → Подключиться к хранилищу». В поле пути указывается строка вида tcp://имя_сервера:1542/ИмяХранилища. Далее вводятся имя и пароль пользователя хранилища — они задаются администратором хранилища и не связаны с пользователями информационной базы.

Администратор хранилища управляет списком пользователей через конфигуратор в режиме администрирования хранилища. Для каждого пользователя можно ограничить права: например, запретить изменение версий хранилища или откат. Минимально необходимое разделение — один администратор и обычные разработчики без административных прав.

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

Проверка работоспособности и обслуживание

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

Контрольные точки

Как проверить результат

Служба сервера хранилища
Норма

Служба в состоянии «Работает», порт 1542 прослушивается (netstat -an)

Тревожный признак

Служба остановлена или порт не отвечает — проверяйте права на каталог и путь в параметрах

Подключение из конфигуратора
Норма

Хранилище открывается по tcp-адресу, виден список версий

Тревожный признак

Ошибка соединения — проверяйте порт, имя сервера и имя хранилища в строке

Захват и помещение объекта
Норма

Объект захватывается, изменения помещаются, версия появляется в истории

Тревожный признак

Ошибка блокировки или отказ в доступе — проверяйте права пользователя хранилища

Параллельная работа
Норма

Два разработчика одновременно работают без ошибок доступа к файлу

Тревожный признак

Ошибки совместного доступа — вероятно, кто-то подключён по старому файловому пути

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

Типичные ошибки
01
Подключение части команды по tcp, а части — по сетевому пути к тому же файлу: конкурентный доступ повреждает хранилище
02
Разные версии платформы на сервере хранилища и у клиентов: ошибки подключения и странные сбои операций
03
Служба работает под учётной записью без полных прав на каталог хранилищ: служба падает или операции записи завершаются ошибкой
04
Отсутствие резервных копий .1cda: при повреждении хранилища теряется вся история версий
05
Общая учётная запись хранилища на всю команду: невозможно установить автора изменений
06
Хранилище размещено на том же диске, что и система, без контроля места: переполнение диска останавливает работу всей команды

Ограничения и альтернативы

Сервер хранилища решает задачу совместной разработки, но не является системой контроля версий в современном смысле. В нём нет ветвлений и слияний веток, удобного code review и интеграции с внешними CI-инструментами. Для команд, которым нужны эти возможности, платформа предлагает альтернативу — формат EDT и выгрузку конфигурации в файлы для работы с Git.

Сравнение вариантов

Файловое хранилище

Подходит для 1–2 разработчиков; простое в развёртывании, но медленное и уязвимое к обрывам сети

Сервер хранилища

Оптимально для команды от трёх человек в классическом конфигураторе; требует отдельной службы и обслуживания

EDT + Git

Для команд с ветвлением, код-ревью и автоматизацией сборки; требует перехода на EDT и перестройки процессов

Переход на Git — отдельный проект, и менять на него работающее хранилище только ради моды не стоит. Разумная стратегия: довести до стабильного состояния сервер хранилища, а миграцию на EDT планировать осознанно, с обучением команды и пилотным проектом.

Итог

Что важно запомнить

Сервер хранилища конфигураций 1С — служба, которая монопольно обслуживает файлы хранилищ и принимает подключения разработчиков по TCP. Он нужен командам от трёх разработчиков: ускоряет операции, устраняет конкурентный файловый доступ и повышает безопасность. Перед переносом делайте копию .1cda, не смешивайте файловый и серверный доступ, заводите персональные учётные записи и регулярно выполняйте резервное копирование.

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

Можно ли использовать один сервер хранилища для нескольких хранилищ?

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

Как перенести существующее файловое хранилище на сервер?

Отключите всех разработчиков, сделайте копию файла .1cda, скопируйте файл в подкаталог корневого каталога сервера хранилища и переподключите конфигураторы по tcp-адресу. Сам файл не конвертируется — меняется только способ доступа к нему.

Что делать, если хранилище повреждено?

Остановите службу, восстановите файл из последней резервной копии и проверьте его целостность. Если копии нет, используйте штатные средства тестирования и исправления платформы, но успех не гарантирован — поэтому регулярное копирование .1cda обязательно.

Нужна ли отдельная лицензия на сервер хранилища?

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

Почему конфигуратор не подключается к серверу хранилища?

Чаще всего причины такие: закрыт порт 1542 на межсетевом экране, служба не запущена, неверно указано имя хранилища в строке подключения или версии платформы сервера и клиента не совпадают. Проверяйте эти пункты последовательно, начиная с доступности порта командой telnet или Test-NetConnection.

Можно ли ограничить разработчику доступ только к части объектов конфигурации?

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