Версия для печати Поиск
Главная Заметки из Зазеркалья

28.04.2014 Изменение кода модулей при переименовании объектов конфигурации

Реализовано в версии 8.3.6.1977.

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

Платформа контролирует ссылочную целостность дерева объектов конфигурации. Она автоматически отслеживает ссылки на объекты (реквизиты и т.д.), и не позволяет удалять их тогда, когда они используются в других объектах. Точно так же переименование объектов (реквизитов и т.д.) конфигурации не нарушает существующие связи их с другими объектами конфигурации.

Однако имена объектов используются не только в структуре метаданных, но и в программном коде. И в случае удаления/переименования объектов вам приходится вручную вносить исправления в программный код. Такая работа требует внимательности и аккуратности, и по этой же причине она является источником ошибок.

Теперь этот процесс значительно автоматизирован. При удалении или переименовании объектов конфигурации платформа автоматически находит фрагменты кода, которые связаны с изменяемым объектом. Очевидные фрагменты платформа может переименовать самостоятельно, а в неочевидных случаях она предлагает принять решение вам.

Настройки

Использование этого механизма настраивается в параметрах конфигуратора. Теперь там появилась группа настроек Рефакторинг при изменениях в метаданных и формах:

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

Терминология

Не всегда есть возможность автоматически определить, что данный фрагмент кода работает с конкретным объектом конфигурации.

Например, если в коде используется конструкция Справочники.Номенклатура, то мы со 100%-ой уверенностью можем сказать, что выполняется работа со справочником Номенклатура. Такие случаи называются фактическим использованием. Их платформа умеет обрабатывать автоматически, а в окне результатов поиска они помечаются пиктограммой i.

Наряду с этим есть случаи, когда только по фрагменту текста нельзя понять, с каким именно объектом конфигурации ведётся работа. Например, Параметр1.Номенклатура. Переменная Параметр1 может ссылаться и на справочник с реквизитом Номенклатура, и на данные строки табличной части, в которой есть колонка Номенклатура. Узнать это на 100% можно, только если вы самостоятельно проанализируете алгоритм. Такие случаи называются возможным использованием. Они требуют вашего вмешательства, и в окне результатов поиска они помечаются пиктограммой !.

Поиск ссылок

Если вы хотите заранее проанализировать последствия переименования или удаления объектов конфигурации, вы можете найти все ссылки на них в модулях:

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

Случаи возможного использования платформа помечает в общем списке пиктограммой ?:

Удаление

При удалении объекта конфигурации платформа автоматически покажет список фрагментов, которые могут использовать удаляемый объект:

Соответственно вы можете сначала удалить объект и потом исправить фрагменты кода. Или наоборот, сначала отказаться от удаления объекта, исправить все фрагменты кода, а затем удалить объект.

Переименование

При переименовании объектов платформа (если найдёт фрагменты кода) также сначала поинтересуется, хотите ли вы продолжать эту операцию:

Вы можете отказаться, и сначала исправить все фрагменты кода. А можете согласиться. Тогда платформа самостоятельно исправит случаи фактического использования и выведет общий список найденных фрагментов. В этом списке случаи возможного использования вам нужно будет исправить вручную, нажимая на ссылку Заменить...:

Чтобы ускорить ручное изменение фрагментов, вы можете выделить сразу несколько строк, а затем из контекстного меню выполнить команду Заменить...:

Надеемся, что новый механизм значительно сократит количество «ручной» работы и желаем вам удачного переименования и удаления объектов :).