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

· 9 мин

Содержание

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

Тема подходит команде из двух и более разработчиков. Если вы работаете один, хватит выгрузки расширения в файл .cfe и резервной копии. Если вас несколько, без хранилища вы будете затирать правки друг друга. Ниже — вся цепочка: от подготовки до разбора конфликтов. Платформа — 8.3 с интерфейсом «Такси», расширения доступны начиная с 8.3.6.

Что подготовить до создания хранилища

Сначала решите, где физически будет лежать хранилище. Есть два варианта:

  • 📁 Сетевая папка. Хранилище — это каталог с файлами. Все разработчики должны иметь к нему доступ на чтение и запись. Самый простой путь для небольшой команды.
  • 🌐 Сервер хранилища конфигураций. Служба, которая отдаёт хранилище по сети (адрес вида tcp://сервер/имя). Подходит, когда разработчики сидят в разных офисах или работают через VPN.

Перед стартом проверьте четыре вещи:

  1. Расширение уже создано и подключено к базе, в которой вы разрабатываете.
  2. В базе есть пользователь с правом администратора. Он нужен, чтобы создать хранилище.
  3. Выбранный каталог или сервер доступен всем участникам.
  4. Платформа у всех разработчиков одного поколения. Если у одного 8.3.22, а у другого 8.3.14, хранилище может запросить обновление структуры, и работа встанет.

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

Один раз договоритесь и о порядке работы: кто может создавать новые объекты, кто правит общие модули, как называть комментарии к версиям. Хранилище не заменит договорённостей.

Создание хранилища для расширения

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

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

Шаги такие:

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

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

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

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

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

Порядок действий для второго и последующих разработчиков:

  1. Откройте Конфигуратор в своей базе.
  2. Добавьте расширение: Конфигурация → Расширения конфигурации → Добавить, загрузите .cfe или создайте пустое расширение с тем же именем.
  3. Откройте дерево метаданных расширения.
  4. Выполните Конфигурация → Хранилище конфигурации → Подключиться к хранилищу.
  5. Введите путь, имя пользователя хранилища и пароль.
  6. На вопрос о замене конфигурации ответьте утвердительно. Платформа загрузит актуальную версию из хранилища в вашу базу.

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

Права бывают такие:

ПравоЧто позволяетКому выдавать
Только чтениеПолучать версии, смотреть историюТестировщики, аналитики
Захват объектовПравить объекты и помещать измененияРазработчики
АдминистраторСоздавать пользователей, чистить историю1–2 человека

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

Как работает захват объектов

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

Что делать на практике:

  1. В дереве метаданных расширения щёлкните правой кнопкой по нужному объекту.
  2. Выберите команду захвата в хранилище (Захватить в хранилище…). Откроется окно: можно захватить только сам объект или вместе с подчинёнными.
  3. Подтвердите. Рядом с объектом появится отметка.
  4. Внесите правки и проверьте, что конфигурация собирается без ошибок.
  5. Выберите Поместить изменения в хранилище…, напишите комментарий и подтвердите.

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

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

Если передумали и изменения не нужны, снимите захват командой отмены захвата. Объект вернётся к состоянию последней версии в хранилище, ваши правки пропадут.

Особенности расширений

В расширении объекты бывают двух видов: собственные и заимствованные из основной конфигурации. С заимствованными аккуратнее.

  • ➕ Собственные объекты расширения (новые справочники, обработки, общие модули) захватываются так же, как в основной конфигурации.
  • 🔗 Заимствованные объекты — это ссылки на объекты основной конфигурации. В хранилище расширения лежат только ваши перехватчики и добавленные реквизиты.
  • ⚠️ Если основную конфигурацию обновили, заимствованные объекты могут потребовать сравнения. Это не ошибка хранилища, это обычное поведение расширений.

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

Версии и работа с историей

Каждое помещение изменений создаёт новую версию. Номера идут подряд: 1, 2, 3 и так далее. Историю версий смотрят через Конфигурация → Хранилище конфигурации → История хранилища.

В окне истории доступно:

  • 🔍 просмотр состава версии: какие объекты менялись и кто автор;
  • 🔄 сравнение любой версии с текущей конфигурацией;
  • ⏪ получение старой версии. Так делают откат, если изменение оказалось неудачным;
  • 📝 отчёт по истории для разбора.

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

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

Выгрузка расширения для заказчика и перенос в рабочую базу

Хранилище живёт у разработчиков. До рабочей базы расширение добирается через выгрузку.

Схема обычно такая:

  1. Получите последнюю версию из хранилища в тестовую базу.
  2. Проверьте работу расширения.
  3. Выгрузите расширение в файл: Конфигурация → Расширения конфигурации, выберите расширение, команда сохранения в файл. Получится .cfe.
  4. В рабочей базе загрузите .cfe и выполните «Обновить конфигурацию базы данных». Это два отдельных шага, один без другого не сработает.

Для автоматизации сборки используют пакетный режим Конфигуратора. Параметры командной строки такие: 1cv8.exe DESIGNER /F "путь\к\базе" /DumpCfg .... Точный набор ключей для расширений смотрите в справке платформы, он зависит от версии.

Обновление структуры базы может потребовать монопольного доступа. Предупредите пользователей и выберите время, когда в базе никто не работает .

Конфликты версий и типичные проблемы

Хранилище оберегает от параллельной правки одного объекта, но проблемы всё равно бывают. Вот основные.

СимптомВероятная причинаЧто делать
Нельзя захватить объектЕго уже захватил другой пользовательОткройте окно захваченных объектов, найдите владельца, договоритесь
Объект захвачен сотрудником в отпускеЗабыли поместить изменения или снять захватАдминистратор хранилища снимает захват принудительно
Хранилище требует обновить базуРабочая копия отстаёт от хранилищаПолучите изменения, затем обновите конфигурацию базы
Не получается подключитьсяНет доступа к каталогу или неверный пароль пользователя хранилищаПроверьте права на папку и учётную запись хранилища
Расширение не собирается после получения версииОсновная конфигурация в базе отличается от той, под которую писалиПриведите основную конфигурацию к той же версии

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

Когда два разработчика правили один и тот же модуль в разных базах, хранилище этого не допустит, пока оба не захватят объект. Но так бывает, если кто-то правил объект «мимо» хранилища, например в базе без подключения. В таком случае сделайте сравнение и объединение: Конфигурация → Сравнить, объединить с конфигурацией из хранилища… Укажите, какие различия принять, и поместите результат новой версией.

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

Как организовать работу команды

Несколько правил, которые снимают большую часть споров:

  • 🧩 Делите расширение по зонам ответственности. Один разработчик ведёт печатные формы, другой — обработки и регламентные задания.
  • 🕐 Держите захват короткое время. Захватили, поправили, поместили. Объект, висящий на человеке неделю, блокирует остальных.
  • 🔁 Получайте изменения утром, до первого захвата, и после каждого чужого релиза.
  • 🧾 Договоритесь о формате комментария: что сделано, по какой задаче. Например: «Задача 214: проверка ИНН контрагента при записи».
  • 🚫 Не помещайте в хранилище отладочный код и временные обработки. Для экспериментов заведите отдельную базу без подключения.

Если команда выросла до пяти человек и больше, выделите одного ответственного за состояние хранилища. Он следит за захваченными объектами, чистит забытые захваты и делает контрольные выгрузки .cfe.

Резервное копирование самого хранилища

Хранилище — единственное место, где лежит вся история. Потеряете каталог — потеряете историю.

Что стоит сделать:

  • 💾 копировать каталог хранилища по расписанию, например раз в сутки ночью;
  • 🔒 ограничить права на папку: запись только у технического аккаунта и администраторов;
  • 📦 хранить минимум 7 последних копий;
  • 🧪 раз в квартал проверять, что копия реально разворачивается.

Копировать каталог безопаснее, когда никто не помещает изменения. Ночью с этим обычно проблем нет.

Перед началом работы в хранилище
Выполнено: 0 / 4

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

Можно ли объединить хранилище основной конфигурации и расширения?
Нет. Это два независимых хранилища со своими версиями и пользователями.
Нужен ли сервер хранилища, или хватит сетевой папки?
Для команды в одном офисе хватит папки. Сервер нужен, когда разработчики работают удалённо.
Что будет, если удалить расширение из базы, подключённой к хранилищу?
Подключение к хранилищу для этого расширения пропадёт. Сами версии в хранилище останутся, и вы сможете подключиться заново.
Можно ли получить из хранилища один объект, а не всю конфигурацию?
Да. В окне получения изменений отметьте только нужные объекты.
Как узнать, кто сейчас захватил объект?
Откройте список захваченных объектов в меню хранилища. Там видно пользователя и время захвата.