Как сравнить две разные формы одного или разных объектов в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе разработки в среде 1С:Предприятие часто возникает необходимость детально сравнить две формы. Это может быть нужно для выявления различий в логике работы, составе реквизитов или визуальном расположении элементов (особенно если одна форма была создана копированием другой, но со временем они «разошлись»). К сожалению, встроенной кнопки «Сравнить две формы» в одно нажатие в обычном конфигураторе не существует, но мы разберем несколько эффективных методик, позволяющих решить эту задачу профессионально.

Способ 1: Сравнение через сохранение во внешние обработки

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

  1. Создадим две новые пустые внешние обработки (через меню Файл — Новый — Внешняя обработка).
  2. В первую обработку скопируем (Ctrl+C) первую форму из дерева конфигурации и вставим её (Ctrl+V) в ветку «Формы» новой обработки.
  3. Повторим процедуру для второй формы, вставив её во вторую внешнюю обработку. Важно: для корректной работы сравнения формы в обработках должны называться одинаково.
  4. Сохраним обе обработки на диск как Form1.epf и Form2.epf.
  5. В конфигураторе перейдем в меню Файл — Сравнить файлы....
  6. Выберем наши два файла. Платформа распознает, что это объекты 1С, и откроет стандартное окно сравнения/объединения, где в виде дерева будут показаны отличия в элементах, реквизитах и модулях.

Способ 2: Использование Enterprise Development Tools (EDT)

Если вы используете современную среду разработки EDT, задача значительно упрощается. Рассмотрим, как это работает в Eclipse-подобной среде:

В EDT все объекты конфигурации изначально хранятся в виде структурированных XML-файлов и скриптов. Для сравнения достаточно выделить два объекта в дереве проекта (зажав клавишу Ctrl), нажать правую кнопку мыши и выбрать пункт Compare With — Each Other.

Программа откроет мощный визуальный редактор сравнения, который подсветит:

Способ 3: Выгрузка конфигурации в файлы и использование Diff-утилит

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

  1. В конфигураторе выполним команду Конфигурация — Выгрузить конфигурацию в файлы....
  2. После завершения выгрузки найдем папку, соответствующую нашему объекту (например, справочнику). Внутри будет папка Forms, содержащая XML-описания каждой формы и файлы Module.bsl.
  3. Используем любую профессиональную утилиту сравнения текстов (например, WinMerge, Beyond Compare или встроенный инструмент в VS Code).

Сравнивая файлы Form.xml, мы увидим все декларативные отличия. Это особенно полезно для Управляемых Форм (УФ), так как они полностью описываются XML-структурой. Обратим внимание на секцию <ChildItems> для анализа иерархии элементов и <Attributes> для сравнения состава данных формы.

Способ 4: Программное сравнение через SerializerXDTO

Иногда требуется проанализировать формы «на лету» прямо в пользовательском режиме. Для этого можно использовать механизм сериализации в XML. Рассмотрим пример кода, который позволяет получить строковое представление управляемой формы:


// Пример получения структуры формы в формате XML
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXDTO(ЗаписьXML, ЭтаФорма.КомпоновщикНастроек.Настройки); // Пример для настроек
// Или для всей формы (в зависимости от доступности объектов)
// СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ОбъектФормы); 
РезультатXML = ЗаписьXML.Закрыть();

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

Способ 5: Метод «Временной конфигурации»

Если нам нужно использовать привычное окно «Сравнение и объединение» прямо внутри 1С, не сохраняя файлы на диск, выполним следующие действия:

Создадим новую пустую информационную базу («пустышку»). Скопируем в неё одну из форм. В основной базе запустим Конфигурация — Сравнить конфигурации, выбрав в качестве второй конфигурации нашу «пустышку». Платформа позволит наглядно увидеть дерево объектов и отметить галочками элементы, которые различаются. Этот метод особенно хорош тем, что он позволяет не только увидеть отличия, но и сразу перенести нужные элементы из одной формы в другую.

Особенности сравнения Управляемых Форм

Проанализируем специфику Управляемых Форм. В отличие от обычных форм, где важную роль играли координаты (Left, Top), в УФ на первый план выходит иерархия и привязка к реквизитам. При сравнении обязательно проверяем:

Использование сторонних инструментов

Для тех, кто ищет специализированные решения, рекомендуем обратить внимание на такие инструменты, как V8Reader или специализированные обработки с портала Инфостарт. Эти утилиты позволяют:

Выбор конкретного метода зависит от вашей задачи: если нужно быстро посмотреть код — подойдет Ctrl+C/Ctrl+V во внешние обработки. Если требуется глубокий аудит свойств — лучше использовать выгрузку в XML или EDT.

← На главную