В процессе коллективной разработки на платформе 1С:Предприятие часто возникает задача массового захвата объектов, относящихся к определенному функциональному блоку (подсистеме). Стандартное окно работы с хранилищем (Конфигурация — Хранилище конфигурации — Хранилище) предоставляет список всех объектов, однако в нем отсутствует прямой фильтр по подсистемам. Это создает неудобства, когда нужно захватить, например, 50–100 объектов, разбросанных по дереву метаданных.
В этой статье мы разберем несколько эффективных способов решения этой задачи: от стандартных возможностей платформы до продвинутых инструментов автоматизации.
Это самый простой и доступный способ, который позволяет выполнить захват, не прибегая к сторонним инструментам. Разберем его по шагам:
Важный нюанс: при таком способе платформа предложит захватить именно те объекты, которые видны в текущем представлении дерева. Если объект включен в подсистему, он будет захвачен. Это гораздо быстрее, чем искать каждый объект в общем списке хранилища.
Иногда требуется захватить только те объекты подсистемы, которые были изменены или отличаются от версии в хранилище. Для этого проанализируем следующий алгоритм:
Конфигурация — Хранилище конфигурации — Сравнить конфигурацию с хранилищем.Этот метод удобен для контроля изменений перед захватом, чтобы не «стопорить» работу коллег захватом лишних объектов, которые вы не планируете редактировать.
Если подсистема представляет собой иерархическую структуру или включает в себя крупные составные объекты, можно воспользоваться методом рекурсивного захвата, который упоминали разработчики на форуме. Рассмотрим ситуацию, когда нам нужно захватить объект со всеми его подчиненными элементами (формами, макетами, командами).
При вызове команды Захватить в хранилище платформа часто предлагает флаг «Захватывать рекурсивно». Это полезно, если вы работаете с объектом типа Документ или Справочник. Однако будьте осторожны: если вы случайно примените рекурсивный захват к корню конфигурации, вы заблокируете работу всей команды, захватив все объекты базы данных.
Современная среда разработки 1C:Enterprise Development Tool (EDT), построенная на базе Eclipse, принципиально иначе подходит к работе с версионностью. Рассмотрим преимущества EDT в контексте нашей задачи:
В EDT объекты представлены в виде файловой структуры. Вы можете легко группировать их, использовать мощные средства поиска и фильтрации, встроенные в IDE. Захват объектов (или фиксация изменений в Git, если хранилище используется через мост) происходит через панель Git Staging или через навигатор проекта, где можно выделить целую папку подсистемы и выполнить групповую операцию одним кликом. Если ваша команда перешла на EDT, проблема выбора объектов по подсистеме исчезает сама собой благодаря архитектуре инструмента.
Для крупных проектов, где операции с хранилищем нужно выполнять часто и по строгим правилам, имеет смысл рассмотреть автоматизацию. Проанализируем возможность использования пакетного режима конфигуратора. При необходимости можно воспользоваться скриптом автоматического подключения базы к хранилищу.
Мы можем использовать параметры запуска /ConfigurationRepositoryLock для захвата объектов. Чтобы не вводить имена объектов вручную, можно написать небольшой скрипт на языке OneScript, который:
/DumpConfigToFiles).Пример логики формирования списка объектов (условно):
// Примерный алгоритм на OneScript для получения состава подсистемы
ПодсистемаФайл = Новый ЧтениеТекста("C:\Dump\Subsystems\МояПодсистема.xml");
// ... парсинг XML для получения имен объектов ...
СписокОбъектов = "Справочник.Клиенты, Документ.ЗаказПокупателя";
ЗапуститьПриложение("1cv8.exe DESIGNER /ConfigurationRepositoryLock -Objects " + СписокОбъектов);
Существуют специализированные расширения и обработки (например, популярные на порталах для разработчиков инструменты), которые встраиваются в контекстное меню или запускаются отдельно. Рассмотрим их возможности:
Такие инструменты позволяют вывести список всех объектов подсистемы в таблицу, отметить их галочками и программно вызвать команду захвата для каждого. Это «золотая середина» между ручным управлением в дереве и сложной автоматизацией через скрипты.
Выясним причины, по которым важно правильно выбирать стратегию захвата:
Таким образом, наиболее эффективным штатным способом остается фильтрация дерева конфигурации по подсистемам с последующим захватом через контекстное меню. Это позволяет быстро и точно выбрать нужные элементы, не перегружая хранилище лишними запросами.