Командная разработка расширения в 1С: хранилище с нуля до рабочего процесса
Содержание
Расширение пишут двое, и через неделю у каждого своя версия модуля. Пересылать .cfe по почте — путь к потерянным правкам. Решение штатное: отдельное хранилище конфигурации под расширение, у каждого разработчика своя база, объекты захватываются на время правки.
Ниже — как создать такое хранилище, подключить к нему рабочие базы, раздать права и не запутаться в версиях. Работаем в Конфигураторе платформы 8.3 с интерфейсом «Такси».
Что нужно подготовить до создания хранилища
Хранилище расширения не заменяет хранилище основной конфигурации. Это отдельное хранилище, привязанное к одному расширению. У основной конфигурации может быть своё.
Перед началом проверьте пять вещей:
- 🧩 Расширение уже существует в базе разработки и в нём есть хотя бы минимальный состав. Пустое расширение тоже годится, но удобнее начинать с рабочего.
- 🖥 Платформа одинаковая у всех участников. Номер не ниже того, на котором создавалось хранилище. Разные релизы платформы дают предупреждения при подключении.
- 📁 Место для хранилища — каталог на файловом сервере или служба хранилища. Для 2-3 разработчиков хватает каталога в общей сетевой папке.
- 🔑 Права на каталог. У каждого, кто будет работать, должна быть запись в папку хранилища. Без неё подключение завершится ошибкой доступа.
- 🗄 Отдельная база разработки у каждого. Работать «в рабочей базе» с захватом объектов нельзя: изменения расширения попадут в боевой контур.
Хранилище должно лежать на надёжном диске с резервным копированием. Внутри него вся история версий. Потеряли каталог — потеряли историю.
Файловый вариант или служба хранилища
| Вариант | Когда подходит | Минусы |
|---|---|---|
| Каталог в сетевой папке | Команда до 3-5 человек, одна локальная сеть | Медленно по VPN, чувствителен к обрывам связи |
| Служба хранилища (серверный режим) | Больше разработчиков, удалённая работа | Нужен сервер и администрирование службы |
Начните с каталога. Перейти на серверный режим можно позже, когда сеть начнёт тормозить.
Как создать хранилище для расширения
Откройте базу разработки в Конфигураторе. В главном меню Конфигурация найдите пункт Расширения конфигурации. В списке выберите нужное расширение и откройте его в окне конфигурации.
Дальше порядок такой:
- Откройте расширение для редактирования (в окне списка — команда открытия конфигурации расширения).
- В меню
Конфигурацияперейдите вХранилище конфигурациии выберите команду создания хранилища. - Укажите каталог. Лучше пустую папку с понятным именем, например
\\server\repo\ext_sklad. - Задайте имя и пароль первого пользователя. Он станет администратором.
- Дождитесь сообщения об успешном создании.
После создания в каталоге появится файл 1cv8ddb.1CD. Это и есть данные хранилища. Не открывайте его руками и не копируйте на работающей системе без остановки доступа.
Создание из командной строки
Для автоматизации есть пакетный режим Конфигуратора. Для расширений в командах работы с хранилищем используется параметр -Extension с именем расширения. Пример:
"C:\Program Files\1cv8\8.3.25.1445\bin\1cv8.exe" DESIGNER /F "D:\bases\dev" /ConfigurationRepositoryF "\\server\repo\ext_sklad" /ConfigurationRepositoryN Админ /ConfigurationRepositoryP "пароль" /ConfigurationRepositoryCreate -Extension "МоёРасширение" /Out "D:\logs\repo_create.txt"
Номер платформы в пути подставьте свой. Результат читайте в файле из /Out: в окно ничего не выводится.
Подключение базы разработчика к хранилищу
Хранилище создано. Теперь каждый разработчик привязывает к нему свою базу.
Первое подключение
- Откройте свою базу в Конфигураторе.
- Загрузите в неё то же расширение или получите его из хранилища, если база пустая.
- В меню
Конфигурация→Хранилище конфигурациивыберите команду подключения к хранилищу. - Укажите путь, логин и пароль своей учётной записи.
- На вопрос о синхронизации выберите загрузку конфигурации из хранилища.
Если расширение в базе уже было и отличается от хранилищного, платформа предложит сравнить версии. Не пропускайте этот шаг. Если вы подключите базу с устаревшим расширением и сразу поместите изменения, перезапишете чужую работу.
Что видно после подключения
В дереве объектов у каждого элемента появляются значки состояния. Захваченный вами — один значок, захваченный другим — другой. Не захваченный изменить нельзя: платформа не даст открыть его на запись.
Если значки не появились, закройте и заново откройте окно конфигурации. Иногда дерево не обновляется после подключения.
Пользователи хранилища и права доступа
Первый пользователь — администратор. Он создаёт остальных.
В меню Конфигурация → Хранилище конфигурации откройте администрирование хранилища. Там есть список пользователей. Для каждого задаются логин, пароль и уровень прав.
Уровни прав
| Уровень | Что может | Кому выдавать |
|---|---|---|
| Только чтение | Смотреть историю и получать версии | Тестировщикам, аналитикам, ревьюерам |
| Работа с объектами | Захватывать объекты и помещать изменения | Разработчикам |
| Добавление новых объектов | Дополнительно добавлять в хранилище новые объекты | Ведущим разработчикам |
| Администрирование | Управлять пользователями и версиями | Одному-двум людям |
Названия уровней в окне могут чуть отличаться, но ступеней именно столько: чтение, работа с объектами, добавление, администрирование.
Практика выдачи прав
- Заведите по отдельной учётке на человека. Общий логин «dev» лишает вас истории: непонятно, кто и что менял.
- Администраторов держите минимальным числом. Администратор может отменить помещение версии, а это опасная операция.
- Уволившегося сотрудника не удаляйте из списка, а отключайте: старые версии останутся подписаны его именем.
- Пароли хранилища не совпадают с паролями пользователей базы. Это два разных набора учёток.
Захват, правка и помещение объектов
Рабочий цикл одинаков для всех.
- Получите свежие изменения. В меню хранилища выберите обновление конфигурации из хранилища. Платформа покажет, что изменилось, и подтянет чужие версии.
- Захватите объект. Правой кнопкой по нему в дереве → команда захвата в хранилище. Платформа предложит захватить и подчинённые объекты (формы, макеты, модули). Берите только то, что будете править.
- Внесите изменения. Редактируйте, запускайте в тестовой базе.
- Поместите изменения. Команда помещения в хранилище. В окне обязательно заполните комментарий: что и зачем изменили.
- Освободите объект. По умолчанию после помещения захват снимается. Если нужно продолжить правки, оставьте галочку захвата.
Комментарий к версии пишите так, чтобы через полгода было понятно без чтения кода: «Контроль остатков при проведении заказа», а не «правки».
Что делать, если объект захвачен другим
Увидите значок чужого захвата — менять объект нельзя. Варианты:
- Договориться с коллегой, чтобы он поместил изменения.
- Подождать и затем получить обновление.
- Если коллега ушёл в отпуск, а объект остался захвачен — администратор снимает захват принудительно. Несохранённые правки коллеги в этом случае пропадут, поэтому сначала свяжитесь с ним.
Сравнение, объединение и откат версий
История версий — главная причина заводить хранилище. Открыть её можно из меню хранилища: список версий с автором, датой и комментарием.
Сравнение
Выберите две версии и запустите сравнение. Платформа покажет дерево отличий по объектам, а для модулей — построчное сравнение. Так удобно находить, что именно сломало поведение после чьей-то правки.
Можно сравнивать и конфигурацию в вашей базе с версией в хранилище. Это полезно перед первым помещением после долгого перерыва.
Объединение
Когда два разработчика правили один объект (при отключённом ограничении захвата или в ветках), используется объединение. Платформа сопоставляет три состояния: старую версию, вашу и новую из хранилища. По каждому отличию вы выбираете, чью версию оставить.
Правила для спокойной работы:
- Объединяйте небольшими кусками, а не весь объект сразу.
- После объединения запустите расширение и проверьте сценарий вручную.
- Не помещайте результат, пока не прошёл синтаксический контроль.
Откат
Хранилище не умеет «вернуться на версию 12» одной кнопкой с удалением версий 13-15. История остаётся. Рабочие способы такие:
| Способ | Что делает | Риск |
|---|---|---|
| Получить нужную версию в базу и поместить как новую | История сохраняется, откат виден как отдельная версия | Минимальный |
| Отмена помещения последней версии (только администратор) | Удаляет последнюю версию из истории | Версия теряется безвозвратно |
| Выгрузка старой версии в файл расширения | Позволяет проверить её в отдельной базе | Нужна отдельная база |
Предпочитайте первый способ. Он честный: в истории видно, что вы откатились и почему.
Перед отменой помещения сделайте копию каталога хранилища. Удалённую версию восстановить нельзя, а ошибка в выборе версии случается чаще, чем кажется. Заранее предупредите команду: у других разработчиков базы привязаны к версии, которой уже не будет.
Типичные ошибки подключения и доступа
Здесь собраны ситуации, которые возникают именно с хранилищем расширения.
Если не помогло
- Закройте Конфигуратор у всех и проверьте, не держит ли файл
1cv8ddb.1CDкто-то из процессов (антивирус, резервное копирование). - Скопируйте каталог хранилища в другое место и попробуйте подключиться к копии: так вы поймёте, повреждены данные или виновата сеть.
- Если файл данных повреждён, восстанавливайте каталог из резервной копии. Чинить файл вручную не нужно.
Как закрепить порядок в команде
Технически хранилище работает само. Сложности создают люди. Несколько привычек, которые снимают большинство споров:
- 📌 Помещайте изменения раз в день, а не раз в неделю. Большие версии трудно сравнивать и откатывать.
- 📌 Один объект — один владелец в данный момент. Не захватывайте «на всякий случай» всё дерево.
- 📌 Ведите короткую договорённость о комментариях: номер задачи, суть, затронутые объекты.
- 📌 Копируйте каталог хранилища по расписанию. Ночного копирования достаточно.
- 📌 Раз в квартал проверяйте список пользователей и отключайте лишних.
После обновления расширения в рабочих базах помните: загрузка .cfe и применение изменений к базе данных — это отдельные шаги, хранилище их не заменяет. Хранилище отвечает за исходники расширения, а не за его установку у пользователей.
Частые вопросы
Можно ли держать несколько расширений в одном хранилище?
Нужно ли хранилище, если расширение пишет один человек?
Чем хранилище отличается от выгрузки расширения в файл?
.cfe — снимок состояния. Хранилище хранит всю историю и управляет совместной работой, а .cfe годится для переноса на боевую базу.