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

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

При работе с конфигурациями 1С, особенно когда речь идет о доработанных системах, таких как 1С:Управление нашей фирмой (УНФ), мы часто сталкиваемся с необходимостью определить, какая часть кода является типовой, а какая — результатом наших доработок. Это становится критически важным при каждом обновлении конфигурации или при поиске ошибок. Автоматизированные средства сравнения и объединения конфигураций являются нашим главным инструментом в этом процессе. Но как сохранить результаты этого сравнения и эффективно анализировать изменения, особенно когда требуется детальный интерактивный просмотр?

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

Стандартные возможности сравнения и объединения конфигураций в 1С

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

1. Сохранение отчета о сравнении

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

  1. Запустите режим сравнения/объединения конфигураций (обычно через меню "Конфигурация" -> "Сравнить, объединить с конфигурацией из файла...").
  2. Выберите конфигурацию, с которой нужно сравнить текущую (например, типовую конфигурацию поставщика).
  3. После анализа различий появится окно сравнения. В нем обычно присутствует кнопка или пункт меню для сохранения отчета.
  4. Выберите желаемый формат (mxl для структурированного отчета или txt для простого текстового вывода) и укажите место сохранения.

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

2. Сохранение настроек объединения

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

  1. В окне сравнения/объединения конфигураций, после того как вы вручную проставили все флажки и настроили правила объединения для каждого объекта, найдите кнопку "Сохранить настройки" (или аналогичную, часто в контекстном меню или в меню "Действия").
  2. Сохраните эти настройки в отдельный XML-файл.
  3. При следующем обновлении или объединении (например, уже на рабочей базе) вы сможете загрузить этот файл с настройками, и платформа автоматически применит все ранее сделанные вами выборы.

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

3. Интерактивный анализ различий в окне сравнения

Несмотря на кажущееся отсутствие "быстрого сравнения одного объекта" напрямую из дерева конфигурации, стандартное окно сравнения/объединения предлагает мощные интерактивные возможности для анализа конкретных объектов.

  1. Запустите общее сравнение конфигурации с конфигурацией поставщика, как описано выше.
  2. В дереве объектов окна сравнения вы увидите полный список всех объектов и их статус (изменен, добавлен, удален).
  3. Чтобы проанализировать изменения в конкретном объекте (например, в модуле формы, общем модуле или макете), выделите его в списке.
  4. Для большинства изменяемых объектов (модулей, форм, макетов, реквизитов) в нижней части окна сравнения или по двойному щелчку на объекте откроется отдельное окно просмотра различий.
  5. Это окно детально, построчно, подсвечивает все изменения: добавленные строки, удаленные строки, измененные строки. Для модулей обычно есть возможность перехода по процедурам и функциям, что позволяет нам анализировать изменения попроцедурно, как мы и хотели.

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

4. Фильтрация и отборы

Для более быстрого поиска конкретных изменений в рамках общего сравнения, мы можем использовать фильтры и отборы в окне сравнения. Например:

Эти возможности помогают нам эффективно навигироваться по изменениям и быстро находить интересующие нас объекты для детального интерактивного анализа.

Использование систем контроля версий (Git)

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

1. Выгрузка конфигурации в файлы

Основная идея работы с Git заключается в том, что мы выгружаем нашу конфигурацию из формата .cf или .epf в набор текстовых файлов. Платформа 1С:Предприятие имеет встроенную возможность для этого:

  1. Откройте конфигурацию в режиме "Конфигуратор".
  2. Перейдите в меню "Конфигурация" -> "Сохранить конфигурацию в файлы...".
  3. Укажите пустую папку, куда будут выгружены все объекты конфигурации в виде XML-файлов и других текстовых файлов (например, модули в виде .bsl файлов).

Каждый объект конфигурации (реквизит, форма, модуль, макет) будет представлен отдельным файлом или группой файлов. Это позволяет Git отслеживать изменения на уровне отдельных файлов.

2. Версионный контроль и фиксации

После выгрузки конфигурации в файлы, мы инициализируем репозиторий Git в этой папке. Затем:

  1. Выполняем первую фиксацию (commit) всех файлов в Git, чтобы зафиксировать текущее состояние конфигурации.
  2. После каждого значимого изменения в конфигурации (будь то обновление от поставщика, наши собственные доработки, исправление ошибок) мы повторяем выгрузку конфигурации в те же файлы. Git обнаружит измененные файлы.
  3. Мы просматриваем изменения (git diff), убеждаемся в их корректности и выполняем новую фиксацию, добавляя информативное сообщение о том, что было изменено.

Таким образом, Git создает полную историю всех изменений нашей конфигурации.

3. Преимущества использования Git

Современные среды разработки (1C:EDT)

Для более сложной и командной разработки, особенно при использовании Git, существует специализированная среда 1C:Enterprise Development Tools (EDT). EDT изначально спроектирована с учетом работы с версионным контролем и предоставляет расширенные возможности для сравнения и анализа изменений.

1. Интеграция с Git

EDT по умолчанию работает с конфигурацией, выгруженной в файлы, и имеет встроенную, глубокую интеграцию с Git. Это означает, что все операции с Git (фиксации, сравнения, переключение веток) доступны непосредственно из интерфейса EDT, что значительно упрощает рабочий процесс для разработчиков.

2. Сравнение с учетом структуры

В отличие от простого текстового сравнения, которое делает Git (или конфигуратор для модулей), EDT способна сравнивать модули с учетом их внутренней структуры: по процедурам, функциям и обработчикам событий. Это делает анализ изменений более осмысленным, так как мы видим, какие именно методы были изменены, а не просто "изменились строки с 10 по 20".

3. Сравнение отдельных объектов в проекте

В EDT мы можем выделить два конкретных объекта конфигурации (например, из разных версий проекта или из разных проектов) и запустить сравнение именно для них. Это позволяет нам сосредоточиться на нужных изменениях, не запуская полный процесс сравнения всей конфигурации.

В заключение, мы выяснили, что для сохранения результатов сравнения-объединения конфигураций и детального анализа изменений в 1С у нас есть несколько мощных инструментов. Для быстрых проверок и сохранения правил обновления мы можем использовать стандартные возможности конфигуратора. Для полноценного версионного контроля, определения авторства кода и глубокого анализа истории изменений мы применим Git. А для профессиональной командной разработки и еще более удобного сравнения с учетом структуры кода, мы рассмотрим 1C:EDT. Выбор инструмента зависит от наших конкретных задач, масштаба проекта и уровня требуемой детализации контроля.

← На главную