Как вести расширение конфигурации в хранилище 1С
Содержание
Расширение конфигурации можно разрабатывать в хранилище так же, как основную конфигурацию: у расширения свой файл хранилища, свои пользователи, свои версии. Хранилище основной конфигурации и хранилище расширения не связаны между собой. Это два независимых хранилища, и подключаются они отдельно.
Тема подходит команде из двух и более разработчиков. Если вы работаете один, хватит выгрузки расширения в файл .cfe и резервной копии. Если вас несколько, без хранилища вы будете затирать правки друг друга. Ниже — вся цепочка: от подготовки до разбора конфликтов. Платформа — 8.3 с интерфейсом «Такси», расширения доступны начиная с 8.3.6.
Что подготовить до создания хранилища
Сначала решите, где физически будет лежать хранилище. Есть два варианта:
- 📁 Сетевая папка. Хранилище — это каталог с файлами. Все разработчики должны иметь к нему доступ на чтение и запись. Самый простой путь для небольшой команды.
- 🌐 Сервер хранилища конфигураций. Служба, которая отдаёт хранилище по сети (адрес вида
tcp://сервер/имя). Подходит, когда разработчики сидят в разных офисах или работают через VPN.
Перед стартом проверьте четыре вещи:
- Расширение уже создано и подключено к базе, в которой вы разрабатываете.
- В базе есть пользователь с правом администратора. Он нужен, чтобы создать хранилище.
- Выбранный каталог или сервер доступен всем участникам.
- Платформа у всех разработчиков одного поколения. Если у одного 8.3.22, а у другого 8.3.14, хранилище может запросить обновление структуры, и работа встанет.
Для расширения заведите отдельный каталог хранилища и назовите его по имени расширения. Через полгода вы не будете гадать, какая папка к чему относится.
Один раз договоритесь и о порядке работы: кто может создавать новые объекты, кто правит общие модули, как называть комментарии к версиям. Хранилище не заменит договорённостей.
Создание хранилища для расширения
Хранилище создаётся в Конфигураторе. Откройте нужную базу в режиме «Конфигуратор», затем перейдите в Конфигурация → Расширения конфигурации и найдите там свое расширение. Работа с хранилищем доступна в главном меню Конфигуратора, в разделе Конфигурация → Хранилище конфигурации. Команды этого раздела действуют на ту конфигурацию, которая сейчас открыта в окне объектов.
Это ключевой момент. Если в окне объектов открыта основная конфигурация, вы создадите хранилище для неё. Для расширения нужно, чтобы активным было дерево метаданных именно расширения. Если не уверены, посмотрите на заголовок окна дерева: в нём стоит имя расширения.
Шаги такие:
- Убедитесь, что открыто дерево метаданных расширения.
- Выберите
Конфигурация → Хранилище конфигурации → Создать хранилище. - Укажите путь к каталогу или адрес сервера хранилища.
- Задайте имя администратора хранилища и пароль. Пароль можно оставить пустым, но для общей сетевой папки лучше задать.
- Подтвердите создание. Платформа создаст служебные файлы и положит туда первую версию.
После создания платформа спросит, нужно ли сразу подключиться к хранилищу. Соглашайтесь: так вы сразу получите первую рабочую копию.
Хранилище создаётся один раз на расширение. Если запустить создание повторно в тот же каталог, получите пустое хранилище поверх прежнего. Перед созданием убедитесь, что каталог пуст.
Подключение к готовому хранилищу
Когда хранилище уже есть, остальные разработчики к нему подключаются. Для этого у каждого должна быть база с таким же расширением. Проще всего — взять выгрузку базы или .cfe расширения.
Порядок действий для второго и последующих разработчиков:
- Откройте Конфигуратор в своей базе.
- Добавьте расширение:
Конфигурация → Расширения конфигурации → Добавить, загрузите.cfeили создайте пустое расширение с тем же именем. - Откройте дерево метаданных расширения.
- Выполните
Конфигурация → Хранилище конфигурации → Подключиться к хранилищу. - Введите путь, имя пользователя хранилища и пароль.
- На вопрос о замене конфигурации ответьте утвердительно. Платформа загрузит актуальную версию из хранилища в вашу базу.
Имя пользователя хранилища отличается от пользователя информационной базы. Это отдельная учётная запись, которую создаёт администратор хранилища. Его команды — Конфигурация → Хранилище конфигурации → Администрирование хранилища: там добавляют разработчиков и выдают права.
Права бывают такие:
| Право | Что позволяет | Кому выдавать |
|---|---|---|
| Только чтение | Получать версии, смотреть историю | Тестировщики, аналитики |
| Захват объектов | Править объекты и помещать изменения | Разработчики |
| Администратор | Создавать пользователей, чистить историю | 1–2 человека |
Пользователей хранилища называйте по фамилии и инициалам. В истории версий вы будете видеть, кто что менял, а «user1» ничего не скажет.
Как работает захват объектов
Хранилище устроено по принципу «взял — правь — положил». Пока объект не захвачен, в нём нельзя ничего изменить. Захват ставит на объект отметку: он занят вами, остальные видят его только для чтения.
Что делать на практике:
- В дереве метаданных расширения щёлкните правой кнопкой по нужному объекту.
- Выберите команду захвата в хранилище (
Захватить в хранилище…). Откроется окно: можно захватить только сам объект или вместе с подчинёнными. - Подтвердите. Рядом с объектом появится отметка.
- Внесите правки и проверьте, что конфигурация собирается без ошибок.
- Выберите
Поместить изменения в хранилище…, напишите комментарий и подтвердите.
Комментарий — не формальность. Через месяц по нему вы найдёте, зачем менялся общий модуль. Пишите по делу: «Добавлена проверка ИНН при записи контрагента», а не «правки».
Если нужно получить чужие изменения, используйте Получить изменения из хранилища (в меню хранилища). Делайте это перед каждым захватом: тогда вы работаете с актуальной версией.
Если передумали и изменения не нужны, снимите захват командой отмены захвата. Объект вернётся к состоянию последней версии в хранилище, ваши правки пропадут.
Особенности расширений
В расширении объекты бывают двух видов: собственные и заимствованные из основной конфигурации. С заимствованными аккуратнее.
- ➕ Собственные объекты расширения (новые справочники, обработки, общие модули) захватываются так же, как в основной конфигурации.
- 🔗 Заимствованные объекты — это ссылки на объекты основной конфигурации. В хранилище расширения лежат только ваши перехватчики и добавленные реквизиты.
- ⚠️ Если основную конфигурацию обновили, заимствованные объекты могут потребовать сравнения. Это не ошибка хранилища, это обычное поведение расширений.
Не помещайте в хранилище расширения изменения, пока не проверили, что расширение собирается на текущей версии основной конфигурации. Иначе следующий разработчик получит нерабочую базу.
Версии и работа с историей
Каждое помещение изменений создаёт новую версию. Номера идут подряд: 1, 2, 3 и так далее. Историю версий смотрят через Конфигурация → Хранилище конфигурации → История хранилища.
В окне истории доступно:
- 🔍 просмотр состава версии: какие объекты менялись и кто автор;
- 🔄 сравнение любой версии с текущей конфигурацией;
- ⏪ получение старой версии. Так делают откат, если изменение оказалось неудачным;
- 📝 отчёт по истории для разбора.
Для отката выберите нужную версию и получите её в базу. Но имейте в виду: откат в базе не удаляет более поздние версии из хранилища. Чтобы откатить насовсем, нужно поместить откаченное состояние как новую версию.
Хорошая практика — отмечать вехи. Например, перед выгрузкой релиза расширения заходите в хранилище и фиксируете версию, которая ушла в .cfe. Тогда вы всегда сможете получить точное состояние, которое было в эксплуатации.
Выгрузка расширения для заказчика и перенос в рабочую базу
Хранилище живёт у разработчиков. До рабочей базы расширение добирается через выгрузку.
Схема обычно такая:
- Получите последнюю версию из хранилища в тестовую базу.
- Проверьте работу расширения.
- Выгрузите расширение в файл:
Конфигурация → Расширения конфигурации, выберите расширение, команда сохранения в файл. Получится.cfe. - В рабочей базе загрузите
.cfeи выполните «Обновить конфигурацию базы данных». Это два отдельных шага, один без другого не сработает.
Для автоматизации сборки используют пакетный режим Конфигуратора. Параметры командной строки такие: 1cv8.exe DESIGNER /F "путь\к\базе" /DumpCfg .... Точный набор ключей для расширений смотрите в справке платформы, он зависит от версии.
Обновление структуры базы может потребовать монопольного доступа. Предупредите пользователей и выберите время, когда в базе никто не работает .
Конфликты версий и типичные проблемы
Хранилище оберегает от параллельной правки одного объекта, но проблемы всё равно бывают. Вот основные.
| Симптом | Вероятная причина | Что делать |
|---|---|---|
| Нельзя захватить объект | Его уже захватил другой пользователь | Откройте окно захваченных объектов, найдите владельца, договоритесь |
| Объект захвачен сотрудником в отпуске | Забыли поместить изменения или снять захват | Администратор хранилища снимает захват принудительно |
| Хранилище требует обновить базу | Рабочая копия отстаёт от хранилища | Получите изменения, затем обновите конфигурацию базы |
| Не получается подключиться | Нет доступа к каталогу или неверный пароль пользователя хранилища | Проверьте права на папку и учётную запись хранилища |
| Расширение не собирается после получения версии | Основная конфигурация в базе отличается от той, под которую писали | Приведите основную конфигурацию к той же версии |
Отдельно о принудительном снятии захвата. Это делает администратор хранилища, и делать это нужно только после согласования с владельцем: его несохранённые правки в базе останутся, но в хранилище они не попадут. Если он потом вернётся к работе, придётся сравнить его базу с хранилищем вручную.
Когда два разработчика правили один и тот же модуль в разных базах, хранилище этого не допустит, пока оба не захватят объект. Но так бывает, если кто-то правил объект «мимо» хранилища, например в базе без подключения. В таком случае сделайте сравнение и объединение: Конфигурация → Сравнить, объединить с конфигурацией из хранилища… Укажите, какие различия принять, и поместите результат новой версией.
Правило, которое экономит больше всего времени: подключённая к хранилищу база — рабочая копия, и править расширение можно только в ней. Никаких «быстрых правок» в отдельной базе.
Как организовать работу команды
Несколько правил, которые снимают большую часть споров:
- 🧩 Делите расширение по зонам ответственности. Один разработчик ведёт печатные формы, другой — обработки и регламентные задания.
- 🕐 Держите захват короткое время. Захватили, поправили, поместили. Объект, висящий на человеке неделю, блокирует остальных.
- 🔁 Получайте изменения утром, до первого захвата, и после каждого чужого релиза.
- 🧾 Договоритесь о формате комментария: что сделано, по какой задаче. Например: «Задача 214: проверка ИНН контрагента при записи».
- 🚫 Не помещайте в хранилище отладочный код и временные обработки. Для экспериментов заведите отдельную базу без подключения.
Если команда выросла до пяти человек и больше, выделите одного ответственного за состояние хранилища. Он следит за захваченными объектами, чистит забытые захваты и делает контрольные выгрузки .cfe.
Резервное копирование самого хранилища
Хранилище — единственное место, где лежит вся история. Потеряете каталог — потеряете историю.
Что стоит сделать:
- 💾 копировать каталог хранилища по расписанию, например раз в сутки ночью;
- 🔒 ограничить права на папку: запись только у технического аккаунта и администраторов;
- 📦 хранить минимум 7 последних копий;
- 🧪 раз в квартал проверять, что копия реально разворачивается.
Копировать каталог безопаснее, когда никто не помещает изменения. Ночью с этим обычно проблем нет.