При работе в среде коллективной разработки с использованием Хранилища конфигурации 1С начинающие специалисты часто сталкиваются с техническими трудностями. Одна из типичных проблем — невозможность добавить новую подчиненную подсистему к уже существующей (например, типовой подсистеме от фирмы "1С"). При попытке добавить подчиненный объект кнопка создания или соответствующий пункт контекстного меню оказываются просто неактивными. При этом захват корня конфигурации или самой родительской подсистемы стандартным образом не решает проблему.
В этой статье мы подробно разберем, почему возникает эта сложность, детально изучим пошаговый алгоритм ее решения в хранилище, рассмотрим правила вежливой коллективной разработки, а также узнаем о современном альтернативном подходе с использованием расширений конфигурации и хитроумном "лайфхаке" опытных разработчиков.
Давайте проанализируем первопричину этой проблемы. В типовых конфигурациях (таких как "1С:ERP", "1С:Бухгалтерия" или "1С:Управление торговлей") большинство объектов находятся на поддержке поставщика и закрыты для редактирования (на них установлен так называемый "замок").
Когда объект находится на строгой поддержке без возможности изменения, платформа 1С:Предприятие блокирует любые действия, способные нарушить его структуру. Создание подчиненной подсистемы напрямую меняет состав и свойства родительской подсистемы. Следовательно, пока для родительской подсистемы не включена возможность редактирования, платформа физически не позволит вам добавить в нее подчиненные элементы.
При работе в Хранилище конфигурации ситуация усложняется тем, что информация о правилах поддержки и правилах изменения объектов хранится непосредственно в корне конфигурации. Поэтому простого захвата родительской подсистемы недостаточно — необходимо выполнить ряд последовательных действий с соблюдением правил групповой разработки.
---
Рассмотрим классический и наиболее надежный способ решения этой задачи непосредственно в основной конфигурации через изменение правил поддержки. Чтобы выполнить эту процедуру корректно и не заблокировать работу коллег по команде, строго придерживайтесь следующего плана:
Конфигурация — Поддержка — Настройка поддержки.Добавить -> Подсистема станет активным. Создайте новую подчиненную подсистему, задайте ей имя и настройте свойства.---
Существует профессиональный недокументированный прием, который позволяет внести точечные изменения (в нашем случае — добавить подчиненную подсистему) и при этом сохранить правила поддержки для корня конфигурации в исходном неизменном виде ("на замке"). Это значительно облегчает последующие автоматические обновления конфигурации от поставщика.
Давайте разберем этот хитрый алгоритм по шагам:
Конфигурация — Поддержка — Настройка поддержки включает возможность изменения (с сохранением поддержки) для родительской подсистемы.Что происходит в этот момент? При отмене захвата корня платформа откатывает настройки поддержки для самой конфигурации к исходному состоянию (корень снова закрыт на строгий "замок"). Однако созданная подчиненная подсистема и измененная родительская подсистема остаются захваченными лично вами! Вы можете спокойно доработать их и выполнить операцию "Поместить в хранилище" только для этих подсистем. Архитектура поддержки всей конфигурации останется максимально чистой.
---
В современных реалиях разработки на платформе 1С:Предприятие 8.3 настоятельно рекомендуется минимизировать любые изменения типовых конфигураций, находящихся на поддержке. Для решения подобных задач идеальным инструментом является механизм расширений конфигурации.
Использование расширений позволяет полностью избежать захвата корня основного хранилища и внесения изменений в правила поддержки типового решения. Рассмотрим этот процесс подробнее:
Этот способ является наиболее перспективным, так как он гарантирует легкое и беспроблемное обновление основной конфигурации от вендора в будущем, полностью исключая конфликты в основном хранилище.