Работа с чужим кодом — это всегда вызов для разработчика, особенно когда речь идет о расширениях в 1С. В отличие от основной конфигурации, расширение может изменять поведение системы точечно, и не всегда очевидно, где именно «спрятаны» правки. Разберем подробно несколько эффективных способов, которые помогут нам быстро провести аудит любого расширения и понять, какие объекты были добавлены, а какие — заимствованы и изменены — для этого подойдёт инструмент архитектурного анализа расширений и конфигураций. Для комплексной проверки проектов также можно использовать статический анализатор кода, который работает непосредственно на платформе 1С.
Проанализируем самый надежный способ, который позволяет увидеть абсолютно все изменения в структуре метаданных, свойствах и формах. Этот метод основан на использовании штатного механизма сравнения и объединения.
Для реализации этого метода выполним следующие шаги:
.cf). Для этого в окне конфигурации расширения выберем Конфигурация — Сохранить конфигурацию в файл..cf.После этого система откроет стандартное окно сравнения. Рассмотрим подробнее, что мы там увидим. В дереве объектов будут отмечены галочками все элементы, которые отличаются от «пустого» состояния. Это позволит нам увидеть:
Программные доработки в расширениях всегда помечаются специальными аннотациями. Выясним причину изменения логики, выполнив глобальный поиск по всей конфигурации расширения (Ctrl+Shift+F). В поле поиска последовательно проверим следующие ключевые слова:
&Вместо — самая радикальная доработка, полностью заменяющая метод основной конфигурации.&Перед — код, который выполняется до вызова основного метода.&После — код, выполняемый сразу после завершения основной процедуры.&ИзменениеИКонтроль — наиболее современный метод, позволяющий вносить правки внутрь метода, сохраняя контроль над обновлением.Проанализируем ситуацию с использованием &ИзменениеИКонтроль. Внутри таких процедур часто используются инструкции препроцессора для выделения правок. Рассмотрим пример типичного блока кода:
&ИзменениеИКонтроль("СформироватьПечатнуюФорму")
Процедура Расш1_СформироватьПечатнуюФорму()
// #Вставка
НовыйПараметр = Истина;
// #КонецВставки
// Стандартный код...
// #Удаление
// СтарыйКод();
// #КонецУдаления
КонецПроцедуры
Использование глобального поиска по строкам #Вставка и #Удаление позволит мгновенно найти все локальные изменения в модулях расширения — вникнуть в суть правок поможет инструмент пошаговой отладки и анализа кода в 1С.
Часто вопрос автора касается именно того, как понять, какие элементы добавлены на форму GUI. В расширениях 1С элементы форм, добавленные разработчиком вручную через редактор, визуально выделяются в дереве элементов жирным шрифтом. Это самый простой способ визуальной идентификации.
Посмотрим на алгоритм проверки формы:
Расш1_ДатаОтгрузки).Важно помнить, что доработки могут быть сделаны программно в процедуре ПриСозданииНаСервере. В этом случае в дереве элементов мы ничего не увидим, поэтому обязательно проверяем модуль формы на наличие кода, создающего элементы через ЭтаФорма.Элементы.Добавить().
Если расширение очень объемное, просматривать дерево сравнения вручную неудобно. В окне сравнения, которое мы открывали в первом методе, нажмем кнопку Действия — Отчет о сравнении конфигураций. Если же вам необходимо подготовить отчет об изменениях в формате XLS для согласования с заказчиком, лучше воспользоваться специализированной обработкой — для этих целей есть набор инструментов для анализа метаданных и сравнения объектов.
В настройках отчета установим детализацию до свойств. Система сформирует текстовый или HTML-документ, который можно сохранить и проанализировать. В нем будет четкий список:
Разберем, как быстро ориентироваться в самом дереве метаданных расширения. Обратим внимание на иконки объектов:
Для наиболее глубокого анализа, особенно если ведется коллективная разработка, рекомендуется использовать среду 1C:EDT (Enterprise Development Tools). Импортировав расширение в EDT, мы получаем доступ к мощным инструментам сравнения версий через Git. EDT позволяет сравнивать не только текст модулей, но и визуальные схемы форм «плечом к плечу» (side-by-side). Для тех, кто предпочитает классический Конфигуратор, существует возможность объединения модулей в разрезе методов с помощью внешних инструментов вроде KDiff3.
Для быстрого аудита лучше всего сочетать метод сравнения с пустым расширением (для понимания структуры) и глобальный поиск по аннотациям (для понимания логики). Для финальной проверки качества кода рекомендуется провести анализ состава расширения на наличие ошибок, связанных с вызовами экспортных процедур и функций. Помните, что качественная доработка в расширении всегда должна сопровождаться комментариями и, по возможности, выполняться программно, что значительно упрощает последующий аудит и обновление системы.