Командная разработка в 1С 8.3 через хранилище: от создания до разбора блокировок

· 9 мин

Содержание

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

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

Как устроено хранилище конфигурации

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

Физически хранилище — это каталог с файлом 1cv8ddb.1CD и служебными папками. Доступ к нему бывает трёх видов:

СпособАдрес в окне подключенияКогда подходит
📁 Файловый\\server\repo\buh или D:\Repo\BuhНебольшая команда в одной локальной сети
🔌 Сервер хранилища (TCP)tcp://server:1542/buhКоманда от 3–4 человек, нужна скорость и надёжность
🌐 Через веб-сервер (HTTP)http://server/repo/repository.1ccrРазработчики работают удалённо, без VPN к файловому ресурсу

Файловый вариант проще всего, но при обрыве сети в момент помещения изменений файл хранилища можно повредить. Сервер хранилища (crserver) работает как служба, сам обслуживает обращения и переносит сбои сети заметно лучше.

Захват, помещение, получение

Вся работа строится на трёх операциях:

  • 🔒 Захват — объект помечается как ваш. Остальные видят его заблокированным и править не могут.
  • 📤 Помещение — ваши изменения уходят в хранилище, создаётся новая версия с номером и комментарием.
  • 📥 Получение — вы забираете в свою конфигурацию то, что поместили коллеги.

Пока объект не захвачен, в подключённой базе он доступен только для просмотра. Это главное отличие от обычной работы в Конфигураторе, к которому новички привыкают дольше всего.

Номер версии в хранилище растёт с каждым помещением. По нему удобно ссылаться в задачах: «исправлено в версии 214».

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

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

Шаг 1. Создать хранилище

  1. Откройте эталонную базу в режиме Конфигуратора.
  2. Выберите Конфигурация → Хранилище конфигурации → Создать хранилище….
  3. Укажите каталог (для файлового варианта — пустую папку на общем ресурсе) или адрес сервера хранилища.
  4. Задайте пользователя-администратора хранилища и пароль.
  5. Подтвердите создание. Конфигурация базы станет версией 1, а сама база — подключённой к хранилищу.

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

Шаг 2. Завести пользователей и права

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

Права выдаются по минимуму:

  • ✏️ захват объектов — всем, кто пишет код;
  • 🗂 изменение состава версий (метки, комментарии) — ведущему разработчику;
  • 🛡 административные функции — одному-двум людям, они же снимают чужие захваты.

Шаг 3. Подключить базу разработчика

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

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

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

Сервер хранилища как служба

Для TCP-доступа на сервере устанавливают компонент «Сервер хранилища конфигураций» из дистрибутива сервера 1С:Предприятия и регистрируют службу. Типовой порт — 1542. Пример регистрации:

cd "C:\Program Files\1cv8\8.3.24.1548\bin"
crserver.exe -instsrvc -usr .\USR1CV8 -pwd Пароль -port 1542 -d "D:\Repo"
crserver.exe -start

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

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

Хранилище или сравнение-объединение: что выбрать

Обе технологии решают задачу «свести изменения нескольких людей», но по-разному.

ПризнакХранилище конфигурацииСравнение и объединение (синхронизация)
Как избегает конфликтовБлокирует объект захватомСводит различия постфактум
Параллельная правка одного модуляНевозможнаВозможна, но потом ручной разбор
История измененийПолная, по версиям и авторамНет, только текущие файлы .cf
Порог входаНужен общий ресурс или серверТолько файлы конфигурации
Когда удобнееПостоянная команда, общий проектРазовый перенос доработок, обновление типовой

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

Есть и третий путь — 1С:Enterprise Development Tools с Git. Он даёт ветки и параллельную работу над одним модулем, но требует перестроить процесс команды. Для небольших доработок типовых конфигураций хранилище в Конфигураторе остаётся самым быстрым стартом.

Ежедневная работа: от захвата до обновления рабочей базы

Захват объектов

В окне хранилища выделите объект и выберите команду «Захватить в хранилище» (через контекстное меню). В диалоге захвата есть флажок рекурсивного захвата — он захватывает объект вместе с подчинёнными: формами, макетами, командами.

Захватывайте только то, что действительно правите. Захват целого подсистемного дерева «на всякий случай» на неделю блокирует коллег.

Помещение изменений

  1. В окне хранилища выделите изменённые объекты.
  2. Выберите «Поместить в хранилище».
  3. Напишите комментарий: что сделано и номер задачи.
  4. Решите, снимать ли захват. Флажок «Оставить объекты захваченными» нужен, если работа не закончена.

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

Получение изменений коллег

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

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

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

  1. В эталонной базе, подключённой к хранилищу, получают нужную версию.
  2. Выгружают конфигурацию в .cf.
  3. В рабочей базе загружают её или переносят через сравнение-объединение в нерабочее время.

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

История версий, метки и откат

История открывается командой Конфигурация → Хранилище конфигурации → История хранилища. В списке видно номер версии, дату, автора и комментарий.

Что можно сделать с версией:

  • 🔍 Открыть и посмотреть состав изменённых объектов;
  • ⚖️ Сравнить с текущей конфигурацией или с другой версией, чтобы увидеть разницу в модулях;
  • 💾 Сохранить в файл — получить .cf именно этой версии;
  • 🏷 Установить метку — например, «Выложено в рабочую 15.10». По меткам легко найти версии, которые реально ушли пользователям.

История для отдельного объекта доступна из контекстного меню объекта в окне хранилища. Так быстрее найти, кто и когда поменял, например, модуль проведения документа.

Как откатить неудачное изменение

Прямого «удаления версии» в обычной работе нет, и это правильно: история не должна переписываться. Откат делают новой версией:

  1. Сохраните нужную старую версию в файл или сравните с ней текущую конфигурацию.
  2. Захватите испорченные объекты.
  3. Перенесите в них содержимое из старой версии (через сравнение и объединение с файлом).
  4. Поместите в хранилище с комментарием «Откат изменений версии N».

Так в истории остаётся и ошибка, и её исправление — через месяц это пригодится при разборе.

Блокировки и другие ошибки хранилища

Большая часть обращений связана не с поломкой, а с захватами и расхождением версий.

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

Снятие чужого захвата

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

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

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

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

Правила, которые сберегают время команды

Хранилище работает хорошо, когда у команды есть договорённости. Вот набор, который стоит закрепить письменно:

  • 📝 Комментарий к каждому помещению. Номер задачи и одна фраза, что изменено. Пустой комментарий через месяц бесполезен.
  • ⏱ Короткие захваты. Поместили — сняли. Объект, захваченный дольше пары дней, должен иметь причину.
  • 🧩 Маленькие порции. Одна задача — одно помещение. Так проще найти и откатить ошибку.
  • ✅ Проверка перед помещением. Синтаксис и запуск в режиме Предприятия на своей базе.
  • 🧱 Общие модули захватывать аккуратно. Модуль, который нужен всем, лучше не держать: внесите правку и сразу поместите.
  • 🏷 Метки на выкладках. Каждая выкладка в рабочую базу — метка с датой.
  • 🔐 Свой логин у каждого. Иначе история не отвечает на вопрос «кто».

Расширения и хранилище

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

Обновление типовой конфигурации

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

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

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

Можно ли работать с хранилищем без сервера 1С?
Да. Файловое хранилище работает на обычной сетевой папке, клиент-серверная установка 1С для него не нужна.
Сколько человек может работать с одним хранилищем?
Жёсткого ограничения на число пользователей хранилища нет. Для команды больше трёх-четырёх человек лучше перейти с файлового варианта на сервер хранилища.
Хранит ли хранилище данные базы?
Нет. В нём только конфигурация и история её версий. Документы и справочники остаются в информационных базах.
Можно ли отключить базу от хранилища?
Да, командой Отключиться от хранилища. Конфигурация базы сохранится в текущем виде, а объекты станут доступны для правки без захвата.
Что будет с захватами, если разработчик удалил свою базу?
Захваты останутся в хранилище за его пользователем. Их снимает администратор хранилища, а несохранённые правки из удалённой базы уже не вернуть.