Реализовано в версии 8.3.6.1977.
Мы значительно автоматизировали модификацию прикладных решений в тех случаях, когда удаляются или переименовываются объекты конфигурации, их реквизиты, а так же элементы, реквизиты и параметры форм.
Платформа контролирует ссылочную целостность дерева объектов конфигурации. Она автоматически отслеживает ссылки на объекты (реквизиты и т.д.), и не позволяет удалять их тогда, когда они используются в других объектах. Точно так же переименование объектов (реквизитов и т.д.) конфигурации не нарушает существующие связи их с другими объектами конфигурации.
Однако имена объектов используются не только в структуре метаданных, но и в программном коде. И в случае удаления/переименования объектов вам приходится вручную вносить исправления в программный код. Такая работа требует внимательности и аккуратности, и по этой же причине она является источником ошибок.
Теперь этот процесс значительно автоматизирован. При удалении или переименовании объектов конфигурации платформа автоматически находит фрагменты кода, которые связаны с изменяемым объектом. Очевидные фрагменты платформа может переименовать самостоятельно, а в неочевидных случаях она предлагает принять решение вам.
Использование этого механизма настраивается в параметрах конфигуратора. Теперь там появилась группа настроек Рефакторинг при изменениях в метаданных и формах:
Автоматический анализ текстов модулей вы можете настроить по-отдельности для каждого вида операций. При удалении, при переименовании, при изменениях, выполняемых в формах. Также вы можете настроить реакцию платформы в тех случаях, когда требуется ваше участие: Задавать вопрос, Продолжать операцию или Отменять операцию.
Не всегда есть возможность автоматически определить, что данный фрагмент кода работает с конкретным объектом конфигурации.
Например, если в коде используется конструкция Справочники.Номенклатура, то мы со 100%-ой уверенностью можем сказать, что выполняется работа со справочником Номенклатура. Такие случаи называются фактическим использованием. Их платформа умеет обрабатывать автоматически, а в окне результатов поиска они помечаются пиктограммой i.
Наряду с этим есть случаи, когда только по фрагменту текста нельзя понять, с каким именно объектом конфигурации ведётся работа. Например, Параметр1.Номенклатура. Переменная Параметр1 может ссылаться и на справочник с реквизитом Номенклатура, и на данные строки табличной части, в которой есть колонка Номенклатура. Узнать это на 100% можно, только если вы самостоятельно проанализируете алгоритм. Такие случаи называются возможным использованием. Они требуют вашего вмешательства, и в окне результатов поиска они помечаются пиктограммой !.
Если вы хотите заранее проанализировать последствия переименования или удаления объектов конфигурации, вы можете найти все ссылки на них в модулях:
Платформа перечислит все фрагменты кода, которые могут использовать выбранный объект. По двойному клику мыши она откроет соответствующий модуль и подсветит найденную строку:
Случаи возможного использования платформа помечает в общем списке пиктограммой ?:
При удалении объекта конфигурации платформа автоматически покажет список фрагментов, которые могут использовать удаляемый объект:
Соответственно вы можете сначала удалить объект и потом исправить фрагменты кода. Или наоборот, сначала отказаться от удаления объекта, исправить все фрагменты кода, а затем удалить объект.
При переименовании объектов платформа (если найдёт фрагменты кода) также сначала поинтересуется, хотите ли вы продолжать эту операцию:
Вы можете отказаться, и сначала исправить все фрагменты кода. А можете согласиться. Тогда платформа самостоятельно исправит случаи фактического использования и выведет общий список найденных фрагментов. В этом списке случаи возможного использования вам нужно будет исправить вручную, нажимая на ссылку Заменить...:
Чтобы ускорить ручное изменение фрагментов, вы можете выделить сразу несколько строк, а затем из контекстного меню выполнить команду Заменить...:
Надеемся, что новый механизм значительно сократит количество «ручной» работы и желаем вам удачного переименования и удаления объектов :).