Управление множеством хранилищ конфигурации: сервер хранилищ, ветки, именование, конфигуратор

05.10.26

Разработка - Групповая разработка (Git, хранилище)

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

Хранилища конфигурации, сервер хранилищ, хранилища-ветки и именование для нескольких команд разработки мы свели в одну памятку: админ выдаёт место на диске, в конфигураторе кто-то создаёт каталог или регистрирует имя, и через полгода без опроса неясно, где лежит релизное хранилище-ветка для системы. Текст для тимлида, администратора сервера разработки или ведущего, который отвечает за десятки хранилищ: хаос общей шары, ограничения crserver, практика веток и схема «команда, система, ветка», чтобы адрес набирали с клавиатуры, когда конфигуратор снова «забыл» путь.

 

От общей шары к зоопарку: как появляются хранилища

Типовая точка старта выглядела так. Несколько команд 1С просят «сетевую папку под хранилище», администратор расшаривает на файловом сервере каталог вроде 1C_storage, часто на том же хосте, где крутится разработческий кластер. Дальше каждая команда сама создаёт подкаталоги, иногда вкладывает одно хранилище внутрь другого, и границы ответственности размываются.

Файловое хранилище в диалоге конфигуратора «Хранилище конфигурации» задаётся УНС-путём или локальным путём на сервере, например \\fileserver\1C_storage\team_a\docflow. Запись в такую шару обычно открыта широкому кругу разработчиков. Кто-то копирует каталог хранилища «для эксперимента», кто-то переименовывает соседнюю папку, и риск задеть чужие данные оказывается выше, чем кажется на первый взгляд.

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

Когда у одной системы заводят несколько хранилищ - основное, тестовое, «на завтра в прод» - без правил именования путаница dev, release и test становится нормой. Файловый доступ терпим, пока разработчиков двое и хранилище одно; при четырёх-пяти командах и десятках систем шара превращается в неконтролируемый зоопарк, даже если все участники добросовестные.

Мы фиксировали цепочку событий на таких площадках: расшарили каталог, появились «временные» подпапки, в одну из них переехало «стабильное» хранилище, owner не записали.

 

Хронология появления хранилищ на общей шаре

 

После такой хронологии искали уже не файлы, а смысл имён каталогов.

 

Сервер хранилищ: что улучшилось и что осталось неконтролируемым

Следующий шаг эволюции - сервер хранилищ 1С (служба crserver). Прямое удаление каталога с данными хранилища перестаёт быть главным способом «администрирования», появляются штатные операции блокировки пользователей и администрирования из конфигуратора.

 

Контекст: Сервер хранилищ: что улучшилось и что осталось неконтролируемым

 

Контекст: Сервер хранилищ: что улучшилось и что осталось неконтролируемым

Адрес при подключении другой: tcp://<хост>:<порт>/<имя_хранилища>, типовой порт - 1542. Имя в URI должно совпадать с тем, что зарегистрировано на сервере; путь к файлам на диске разработчик в строке подключения не видит, но при создании нового хранилища конфигуратор по-прежнему позволяет указать произвольный каталог на сервере. Никакой автоматической укладки «по полочкам команд» платформа не даёт.

Подключение конфигуратора к серверу хранилищ идёт по tcp к службе crserver; на схеме ниже упрощённая последовательность обмена.

 

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

 

Если на этом шаге версия протокола или платформы не сходится, дальше мы видели только ошибку несовместимости, а не список «последних хранилищ».

Когда на диске кончается место, администратор видит набор зарегистрированных имён и непонятные гигабайты в случайных путях. Без опроса тимлидов мы не отличали устаревшее fеатуре-хранилище от релизного. Мини-чеклист для сервера хранилищ, который я обычно прохожу вручную: выписать имена из администрирования сервера, сопоставить с матрицей «команда / система / ветка / версия платформы», проставить оwнер-тимлида, пометить устаревшие; мониторинг тут не заменяет разговор с командами.

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

Отсюда практический сценарий миграции: prod на одной версии платформы, разработка на более новой, параллельно два сервера хранилищ или два набора имён, и явная колонка «версия» в инвентаре. Смешать ветки dev и stable на одном сервере без учёта версии легко при «обновим конфигуратор у одной команды».

 

Хранилища-ветки и релизная «подливка»

Штатного ветвления хранилищ в платформе без СППР нет. Команды всё равно делают хранилища-ветки: в основном хранилище копят несколько фич, а в релиз уходит не всё. Для этого заводят второе хранилище - релизное, «подливочное»: в него вручную переносят только те изменения, которые нужны в ближайшем выпуске. Остальное остаётся в dev до созревания.

 

Контекст: Хранилища-ветки и релизная «подливка»

 

Контекст: Хранилища-ветки и релизная «подливка»

Фирма 1С близка к этой идее рекомендацией заводить отдельное хранилище под задачу. В СППР создание и снятие такого хранилища автоматизировано: задача закрыта - хранилище можно удалить по регламенту. У кого СППР в контуре разработки есть, дисциплина имен и жизненного цикла уже частично встроена в процесс.

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

Я обычно закладываю минимум два хранилища на систему в матрице: dev (ежедневная работа) и stable или release (подливка). Fеатуре-ветку под длинную задачу имеет смысл только если есть owner и дата снятия; иначе fеатуре-хранилища размножаются быстрее, чем их успевают удалять.

Параллельно в этот момент часто идут три линии: daily dev, ручная подливка в stable, prod ещё на старой версии платформы.

 

Параллельные контуры dev, stable и prod

 

Если не держать версию платформы отдельной колонкой, адрес stable и dev начинают выглядеть взаимозаменяемыми, хотя серверы хранилищ разные.

 

Почему конфигуратор усугубляет хаос

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

 

Контекст: Почему конфигуратор усугубляет хаос

 

Контекст: Почему конфигуратор усугубляет хаос

Привязка базы к хранилищу живёт в настройках информационной базы и в профиле запуска (строка подключения к ИБ, параметры конфигуратора). Канонический реестр адресов для команды живёт отдельно от привязки в ИБ: локальная база на ноутбуке может помнить один путь, а эталон релиза - другой. Когда конфигуратор «забыл», мы восстанавливали связку из вики, таблицы или файла; у части коллег помогал плагин Снегопата, который запоминает путь в своих настройках, но на него полагаться как на корпоративный стандарт нельзя.

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

 

Имена папок и адреса: где ломается договорённость

Бытовой диалог без выдуманной катастрофы, но с узнаваемой логикой. Тимлид спрашивает, где хранилище для 1С:Документооборот. Ответ: \\server\1C_storage\doc. Уточнение: нужно стабильное, откуда собирают релиз. Ответ уже другой: \\server\1C_storage\zup_1. Вопрос «почему Документооборот в zup_1» получает честное «там раньше был ЗУП, стёрли, переиспользовали каталог».

 

Контекст: Имена папок и адреса: где ломается договорённость

 

Контекст: Имена папок и адреса: где ломается договорённость

Второй сценарий - вложенность ролей. «Стабильная» ветка лежит внутри каталога, который по смыслу разработческий: ...\dev\new2 числится stable в переписке, но по пути это fеатуре-эксперимент. Новый человек подключается к dev и тянет в основную ветку то, что команда считала изолированным.

На сервере хранилищ провал другой формы: красивое имя в URI (tcp://srv-repo:1542/DO) и нечитаемый путь на диске, который при чистке диска никто не сопоставил с owner. Имя в tcp должно быть частью схемы, а не аббревиатурой «как привыкли».

 

Матрица: команда, система, ветка, версия платформы

Инструмент мысли для инвентаризации при нескольких командах и десятках систем - таблица с измерениями: команда разработки, система (продукт/конфигурация), ветка (dev, stable, feature), путь или тср-адрес, версия платформы сервера хранилищ, owner (тимлид), статус (актуально / устарело / к удалению).

Команда Система Ветка Адрес Версия Owner
Учёт Документооборот dev tcp://repo-dev:1542/UCHET_DO_dev 8.3.24 Иванов
Учёт Документооборот stable tcp://repo-dev:1542/UCHET_DO_stable 8.3.24 Иванов
Зарплата ЗУП dev tcp://repo-dev:1542/ZAR_ZUP_dev 8.3.22 Петров

Такую матрицу мы вели в wiki или таблице; главное - один канонический источник, а не разрозненные комментарии в чатах. Для файловых хранилищ в колонке «Адрес» - полный UNC; для сервера - только tcp URI, без смешения форматов в одной ячейке.

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

Если команда ведёт учёт хранилищ во внутренней базе на языке 1С, удобно собрать срез «что считаем актуальным» одним запросом к регистру сведений, где вы сами храните инвентарь (имена регистра и измерений - ваши, не типовые).

Запрос ниже выводит актуальные хранилища одной команды для сверки с сервером перед обновлением платформы.

 

Запрос среза актуальных хранилищ команды

 

ВЫБРАТЬ
    Инвентарь.Команда КАК Команда,
    Инвентарь.Система КАК Система,
    Инвентарь.Ветка КАК Ветка,
    Инвентарь.АдресПодключения КАК АдресПодключения,
    Инвентарь.ВерсияПлатформы КАК ВерсияПлатформы,
    Инвентарь.Тимлид КАК Owner
ИЗ
    РегистрСведений.ИнвентарьХранилищКонфигурации КАК Инвентарь
ГДЕ
    Инвентарь.Команда = &Команда
    И Инвентарь.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыХранилища.Актуально)
УПОРЯДОЧИТЬ ПО
    Инвентарь.Система,
    Инвентарь.Ветка

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

 

Системные правила: кто создаёт хранилища и как строить адрес

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

Настройки в разрезе системы: на одну продуктовую систему - несколько хранилищ (dev, stable, при необходимости feature с датой удаления). Создание и списание ведёт тимлид, в инвентаре явно помечаются устаревшие; удаление на сервере хранилищ - только после блокировки пользователей и бэкапа каталога или снимка тома/ВМ, согласованного с регламентом. Штатные операции администрирования хранилища в конфигураторе (блокировка, отключение пользователей) здесь не заменяют бэкап, но без блокировки копировать живое хранилище рискованнее.

Шаблон имени, который у нас хорошо ложился на tcp URI и на каталоги, выглядел так: <префикс_команды>_<краткое_имя_системы>_<ветка>, латиница, без пробелов, ветка из фиксированного набора dev, stable, feature<номер>. Пример: UCHET_DO_stable в URI tcp://repo-dev:1542/UCHET_DO_stable. Для файлового варианта тот же хвост в конце UNC: \\fileserver\1C_storage\UCHET\UCHET_DO_stable.

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

Цикл, который мы повторяли после каждой миграции версии, сводился к инвентарю, согласованию имён, созданию только тимлидом, записи в матрицу, регламенту бэкапа и квартальной сверке с сервером.

Я сознательно не расписываю развёртывание Ansible, REST-API и «полный цикл» автоматизации: это возможное продолжение, но ядро управления - середина между общей шарой и CI/CD. Сейчас имеет смысл проверить у себя три вещи: есть ли единая матрица с колонкой версии, может ли произвольный разработчик создать новое хранилище без тимлида, и восстановите ли вы адрес stable по схеме имени без подсказки конфигуратора. Если на второй пункт ответ «да», зоопарк, скорее всего, уже растёт.

Вступайте в нашу телеграмм-группу Инфостарт

Хранилище конфигурации Сервер хранилищ Конфигуратор 1С:Предприятие 8.3 Командная разработка Администрирование СППР хранилища конфигурации сервер хранилищ crserver именование хранилищ хранилища-ветки конфигуратор 1С команды разработки tcp 1542

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    14062    123    0    

87

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Системный администратор Разработчик 1С 8.3 1С 8.5 Бесплатно (free)

В прошлой статье у ERP оставалось 89 отказов загрузки, у ЗУП — 19. Теперь обе конфигурации совпали с эталонами, а собранные файлы прошли круг через платформу. Развертка выделена в открытый репозиторий cf-unwrapper: библиотека на Rust и консольная утилита. Показываю результаты, объясняю границы «100%» и приглашаю к проверкам и развитию проекта.

02.11.2026    321    oyti    1    

1

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Разработчик 1С:Предприятие 8 Россия Бесплатно (free)

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

02.11.2026    644    vanya_gonchar    2    

6

Файловый обмен (TXT, XML, DBF), FTP DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Системный администратор Разработчик 1С 8.5 Бесплатно (free)

В прошлой статье я выгрузил Бухгалтерию в XML байт в байт и спросил, на чем проверить дальше. Вы ответили: ERP, старые релизы, зарплата. Прогнал пять конфигураций, от клиента ЭДО до ERP на 120 тысяч файлов. Рассказываю, что сломалось после Бухгалтерии, почему эталону платформы нельзя верить на слово, как выгрузить одну конфигурацию в формат трех версий платформы - и почему cf-конвертер становится отдельным продуктом, Разверткой.

02.11.2026    430    oyti    2    

3

Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Стажер 1С 8.3 Абонемент ($m)

Два разработчика, по десять правок «Нано-УТ 2.0» в git: длинные ветки против слияния после каждой правки, 22 слияния с загрузкой main в чистую базу. ConfigDumpInfo.xml конфликтовал в 11 слияниях из 11, построчное объединение ломало XML и модули. Показываю, что убрать строкой в .gitattributes, что разбирать целыми вставками и как увидеть конфликты до слияния. Прилагаются инструмент с 38 тестами и материалы опыта.

1 стартмани

29.10.2026    414    Ninel_S    3    

-1

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С 8.5 Бесплатно (free)

Выгрузка типовой Бухгалтерии в XML через базу занимает больше четырёх минут. Я написал движок, который читает файл конфигурации напрямую и выгружает его за 35 секунд, совпадая с выгрузкой платформы байт в байт во всех 90 385 файлах. Загрузка обратно тоже работает: круг через платформу совпадает полностью. Рассказываю, как ускоряли, как проверяем и что при загрузке XML теряет сама платформа. А в конце спрашиваю, нужно ли это кому-то, кроме меня, и на какой конфигурации проверить следующей.

27.10.2026    990    oyti    20    

16

Рефакторинг и качество кода Групповая разработка (Git, хранилище) Разработчик 1С 8.3 Абонемент ($m)

Скрипт на Python посчитал метрики 2711 общих модулей УТ 11.5: 26 модулей длиннее 10 000 строк кода. Проверила счёт на синтетических модулях и показала, где рейтинг ошибается: самый длинный модуль оказался в нём ниже девяти коротких. Для разработчиков 1С. В архиве скрипт, тесты и журналы.

1 стартмани

26.10.2026    452    Ninel_S    8    

-3

Групповая разработка (Git, хранилище) Разработчик 1С 8.3 Абонемент ($m)

Общие модули 1С вынесла в подмодуль Git и подключила к двум проектам на выгрузке «Нано-УТ» и платформе 8.3.27. Подмодуль на весь каталог CommonModules загружается; клон без --recursive даёт код 1, а забытый указатель и смена ветки молча дают базу не той версии. Переименованная процедура прошла /CheckModules при 28 вызовах. В архиве скрипты, диагностика подмодулей, тесты и журналы.

1 стартмани

26.10.2026    433    Ninel_S    0    

-1
Для отправки сообщения требуется регистрация/авторизация