В процессе разработки в среде 1С:Предприятие часто возникает необходимость детально сравнить две формы. Это может быть нужно для выявления различий в логике работы, составе реквизитов или визуальном расположении элементов (особенно если одна форма была создана копированием другой, но со временем они «разошлись»). К сожалению, встроенной кнопки «Сравнить две формы» в одно нажатие в обычном конфигураторе не существует, но мы разберем несколько эффективных методик, позволяющих решить эту задачу профессионально.
Этот метод считается классическим для разработчиков, работающих в стандартном конфигураторе. Он позволяет использовать встроенный механизм сравнения файлов платформы. Проанализируем шаги, которые необходимо выполнить:
Form1.epf и Form2.epf.Если вы используете современную среду разработки EDT, задача значительно упрощается. Рассмотрим, как это работает в Eclipse-подобной среде:
В EDT все объекты конфигурации изначально хранятся в виде структурированных XML-файлов и скриптов. Для сравнения достаточно выделить два объекта в дереве проекта (зажав клавишу Ctrl), нажать правую кнопку мыши и выбрать пункт Compare With — Each Other.
Программа откроет мощный визуальный редактор сравнения, который подсветит:
Видимость установлена в Истина, а на другой в Ложь).Этот способ незаменим, когда нужно увидеть мельчайшие изменения в свойствах элементов, которые не всегда заметны в визуальном редакторе. Разберем этот процесс по шагам:
Forms, содержащая XML-описания каждой формы и файлы Module.bsl.Сравнивая файлы Form.xml, мы увидим все декларативные отличия. Это особенно полезно для Управляемых Форм (УФ), так как они полностью описываются XML-структурой. Обратим внимание на секцию <ChildItems> для анализа иерархии элементов и <Attributes> для сравнения состава данных формы.
Иногда требуется проанализировать формы «на лету» прямо в пользовательском режиме. Для этого можно использовать механизм сериализации в XML. Рассмотрим пример кода, который позволяет получить строковое представление управляемой формы:
// Пример получения структуры формы в формате XML
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXDTO(ЗаписьXML, ЭтаФорма.КомпоновщикНастроек.Настройки); // Пример для настроек
// Или для всей формы (в зависимости от доступности объектов)
// СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ОбъектФормы);
РезультатXML = ЗаписьXML.Закрыть();
Получив такие строки для двух разных форм, мы можем программно сравнить их методом СтрСравнить() или вывести в текстовое поле, чтобы визуально оценить разницу в составе реквизитов и элементов.
Если нам нужно использовать привычное окно «Сравнение и объединение» прямо внутри 1С, не сохраняя файлы на диск, выполним следующие действия:
Создадим новую пустую информационную базу («пустышку»). Скопируем в неё одну из форм. В основной базе запустим Конфигурация — Сравнить конфигурации, выбрав в качестве второй конфигурации нашу «пустышку». Платформа позволит наглядно увидеть дерево объектов и отметить галочками элементы, которые различаются. Этот метод особенно хорош тем, что он позволяет не только увидеть отличия, но и сразу перенести нужные элементы из одной формы в другую.
Проанализируем специфику Управляемых Форм. В отличие от обычных форм, где важную роль играли координаты (Left, Top), в УФ на первый план выходит иерархия и привязка к реквизитам. При сравнении обязательно проверяем:
Для тех, кто ищет специализированные решения, рекомендуем обратить внимание на такие инструменты, как V8Reader или специализированные обработки с портала Инфостарт. Эти утилиты позволяют:
ПриИзменении назначено, а у другой — нет).Выбор конкретного метода зависит от вашей задачи: если нужно быстро посмотреть код — подойдет Ctrl+C/Ctrl+V во внешние обработки. Если требуется глубокий аудит свойств — лучше использовать выгрузку в XML или EDT.