При работе с конфигурациями 1С, особенно когда речь идет о доработанных системах, таких как 1С:Управление нашей фирмой (УНФ), мы часто сталкиваемся с необходимостью определить, какая часть кода является типовой, а какая — результатом наших доработок. Это становится критически важным при каждом обновлении конфигурации или при поиске ошибок. Автоматизированные средства сравнения и объединения конфигураций являются нашим главным инструментом в этом процессе. Но как сохранить результаты этого сравнения и эффективно анализировать изменения, особенно когда требуется детальный интерактивный просмотр?
Рассмотрим различные подходы и инструменты, которые помогут нам решить эту задачу, начиная со стандартных возможностей платформы 1С и заканчивая более продвинутыми системами контроля версий и средами разработки.
Платформа 1С:Предприятие предоставляет встроенные инструменты для сравнения и объединения конфигураций, которые со временем значительно эволюционировали. Эти инструменты позволяют нам не только выполнить операцию, но и сохранить ее результаты, а также интерактивно анализировать обнаруженные различия.
Самый простой и очевидный способ зафиксировать результат сравнения — это сохранить отчет. После завершения операции сравнения конфигураций, платформа предлагает нам сформировать отчет о различиях. Мы можем сохранить этот отчет в различных форматах, например, в .mxl (табличный документ 1С) или .txt (текстовый файл).
mxl для структурированного отчета или txt для простого текстового вывода) и укажите место сохранения.Этот отчет будет содержать список всех объектов конфигурации и информацию о том, были ли они изменены, добавлены или удалены, а также детали изменений для модулей и форм. Хотя этот метод полезен для общего обзора, он не всегда предоставляет желаемый "интерактивчик", который позволяет детально погрузиться в изменения построчно.
При выполнении объединения конфигураций мы принимаем решения по каждому различающемуся объекту: оставить текущую версию, взять версию из новой конфигурации, объединить модули и т.д. Эти выборы можно сохранить. Это очень удобно при многоэтапных обновлениях, например, сначала на тестовой базе, а затем на рабочей.
XML-файл.Это не сохраняет полный отчет о различиях, но значительно упрощает процесс повторного применения одних и тех же правил объединения, что является критически важным для поддержания согласованности между базами и минимизации ручных ошибок.
Несмотря на кажущееся отсутствие "быстрого сравнения одного объекта" напрямую из дерева конфигурации, стандартное окно сравнения/объединения предлагает мощные интерактивные возможности для анализа конкретных объектов.
Таким образом, мы видим, что стандартный механизм позволяет не просто получить отчет, но и провести глубокий интерактивный анализ каждого объекта, что соответствует нашей изначальной потребности.
Для более быстрого поиска конкретных изменений в рамках общего сравнения, мы можем использовать фильтры и отборы в окне сравнения. Например:
Эти возможности помогают нам эффективно навигироваться по изменениям и быстро находить интересующие нас объекты для детального интерактивного анализа.
Как верно подметили на форуме, для более глубокого и гибкого анализа изменений, а также для полноценного версионного контроля, мы можем использовать внешние системы, такие как Git. Этот подход требует начальной настройки, но дает нам несравненные преимущества, особенно при командной разработке и необходимости четкого отслеживания истории изменений.
Основная идея работы с Git заключается в том, что мы выгружаем нашу конфигурацию из формата .cf или .epf в набор текстовых файлов. Платформа 1С:Предприятие имеет встроенную возможность для этого:
XML-файлов и других текстовых файлов (например, модули в виде .bsl файлов).Каждый объект конфигурации (реквизит, форма, модуль, макет) будет представлен отдельным файлом или группой файлов. Это позволяет Git отслеживать изменения на уровне отдельных файлов.
После выгрузки конфигурации в файлы, мы инициализируем репозиторий Git в этой папке. Затем:
commit) всех файлов в Git, чтобы зафиксировать текущее состояние конфигурации.git diff), убеждаемся в их корректности и выполняем новую фиксацию, добавляя информативное сообщение о том, что было изменено.Таким образом, Git создает полную историю всех изменений нашей конфигурации.
git diff): С помощью инструментов Git (через командную строку или графические клиенты, такие как SourceTree, GitKraken, VS Code) мы можем сравнить любые две версии нашей конфигурации. Git покажет нам точные изменения в каждой строке кода для любого объекта. Это дает нам тот самый "интерактивчик", который позволяет детально просмотреть изменения.
git blame <путь_к_файлу_модуля>
Или использовать соответствующую функцию в графическом клиенте.Для более сложной и командной разработки, особенно при использовании Git, существует специализированная среда 1C:Enterprise Development Tools (EDT). EDT изначально спроектирована с учетом работы с версионным контролем и предоставляет расширенные возможности для сравнения и анализа изменений.
EDT по умолчанию работает с конфигурацией, выгруженной в файлы, и имеет встроенную, глубокую интеграцию с Git. Это означает, что все операции с Git (фиксации, сравнения, переключение веток) доступны непосредственно из интерфейса EDT, что значительно упрощает рабочий процесс для разработчиков.
В отличие от простого текстового сравнения, которое делает Git (или конфигуратор для модулей), EDT способна сравнивать модули с учетом их внутренней структуры: по процедурам, функциям и обработчикам событий. Это делает анализ изменений более осмысленным, так как мы видим, какие именно методы были изменены, а не просто "изменились строки с 10 по 20".
В EDT мы можем выделить два конкретных объекта конфигурации (например, из разных версий проекта или из разных проектов) и запустить сравнение именно для них. Это позволяет нам сосредоточиться на нужных изменениях, не запуская полный процесс сравнения всей конфигурации.
В заключение, мы выяснили, что для сохранения результатов сравнения-объединения конфигураций и детального анализа изменений в 1С у нас есть несколько мощных инструментов. Для быстрых проверок и сохранения правил обновления мы можем использовать стандартные возможности конфигуратора. Для полноценного версионного контроля, определения авторства кода и глубокого анализа истории изменений мы применим Git. А для профессиональной командной разработки и еще более удобного сравнения с учетом структуры кода, мы рассмотрим 1C:EDT. Выбор инструмента зависит от наших конкретных задач, масштаба проекта и уровня требуемой детализации контроля.