Разработка и Конфигурация · 8 мин
Как сравнить два модуля 1С: практическая инструкция
Как сравнить два модуля 1С: встроенное сравнение конфигураций, анализ текстов модулей, внешние инструменты, типичные ошибки и проверка результата.
Под сравнением двух модулей в 1С обычно понимают одну из трёх задач: сопоставить текст общего модуля в двух конфигурациях, сравнить две версии одной конфигурации целиком или проверить, чем отличается модуль объекта (документа, справочника) после доработки. Во всех случаях есть штатные средства конфигуратора, а для сложных сценариев — внешние инструменты сравнения файлов.
Правильный выбор способа зависит от того, что именно вы сравниваете: два файла выгрузки, конфигурацию базы с конфигурацией поставщика или два хранилища. Ошибка на этом этапе приводит к потере доработок при обновлении, поэтому перед любым объединением конфигураций делайте архивную копию базы.
Определите, что именно нужно сравнить
Термин «модуль» в 1С охватывает несколько сущностей: общие модули, модули объектов, модули менеджеров, модули форм, модуль приложения. Прежде чем запускать сравнение, уточните, где находятся оба сравниваемых экземпляра: в одной конфигурации, в двух разных базах, в файловой выгрузке или в хранилище.
От этого зависит инструмент. Если оба модуля внутри одной базы — достаточно открыть оба текста и сверить вручную или через внешний diff-инструмент. Если модули в разных базах — понадобится либо выгрузка конфигураций в файлы, либо механизм сравнения конфигураций.
Как выбрать способ
Сравнение через механизм «Сравнить, объединить»
Основной штатный способ — меню «Конфигурация → Сравнить, объединить с конфигурацией из файла». Предварительно из второй базы выгрузите конфигурацию в файл .cf («Конфигурация → Сохранить конфигурацию в файл»). После выбора файла конфигуратор построит дерево отличий по всем объектам, включая модули.
В окне сравнения найдите нужный объект — например, общий модуль — и дважды щёлкните по строке с пометкой «Изменено». Откроется окно построчного сравнения текстов модулей: добавленные строки, удалённые и изменённые подсвечиваются разными цветами. Это позволяет увидеть точную разницу в коде, а не только факт изменения.
Важно: на этом этапе ничего не применяется. Сравнение и объединение — разные операции. Снимите все флажки в дереве, если нужно только посмотреть отличия, и закройте окно без выполнения объединения.
- 1Сделайте архивную копию рабочей базы
- 2Во второй базе выполните «Сохранить конфигурацию в файл» (cf)
- 3В первой базе откройте «Сравнить, объединить с конфигурацией из файла» и выберите cf-файл
- 4В дереве отличий найдите нужный модуль и откройте сравнение текстов
- 5Изучите различия, не устанавливая флажки объединения
- 6Закройте окно или выполните объединение осознанно, с выбором нужных объектов
Сравнение текстов двух модулей напрямую
Если нужно сравнить два конкретных текста — например, общий модуль из рабочей базы и его копию из тестовой — удобнее выгрузить оба текста во внешние файлы. Откройте модуль, выделите весь текст и сохраните в файл с расширением .bsl или .txt. Повторите для второго модуля.
Далее используйте любой инструмент сравнения файлов: встроенное сравнение в Notepad++ с плагином Compare, WinMerge, KDiff3 или встроенный diff в EDT. Такие инструменты показывают различия нагляднее конфигуратора и позволяют игнорировать пробелы и регистр, что полезно при косметических правках форматирования.
Сравнение версий через хранилище конфигурации
Если разработка ведётся через хранилище конфигурации, история изменений модулей доступна штатно. Откройте историю объекта (правый клик по объекту в дереве конфигурации → «История хранилища»), выберите две версии и запросите сравнение. Конфигуратор покажет, какие строки модуля менялись между версиями и кто внёс изменения.
Этот способ незаменим при поиске регрессий: когда после обновления перестала работать функция, сравнение текущей версии модуля с последней рабочей версией быстро локализует причину.
Сравнение модулей форм и объектов
Модули форм сравниваются тем же механизмом сравнения конфигураций, но с оговоркой: текст модуля формы связан с самой формой, и различия в реквизитах формы могут сделать построчное сравнение менее читаемым. В дереве сравнения раскройте объект до уровня формы и откройте сравнение именно модуля формы.
Для модулей объектов (документов, справочников) и модулей менеджеров логика та же: они отображаются в дереве сравнения как отдельные строки под соответствующим объектом метаданных.
Типичные ошибки и как их избежать
Самая частая ошибка — сравнение не тех версий: например, конфигурации базы с конфигурацией поставщика после того, как базу уже частично обновили. Всегда фиксируйте, какая именно версия является эталоном, и сохраняйте её cf-файл отдельно.
Вторая ошибка — игнорирование контекста изменений. Строка кода может отличаться из-за переименования переменной в другом модуле, и перенос одного модуля без связанных объектов приведёт к ошибкам компиляции. После любого переноса выполняйте полную проверку конфигурации («Конфигурация → Проверка конфигурации»).
Проверка результата после переноса изменений
После того как различия проанализированы и нужные изменения перенесены, обновите конфигурацию базы данных и выполните синтаксическую проверку модулей. Затем прогоните ключевой сценарий, который затрагивает изменённый модуль: проведение документа, формирование отчёта, вызов экспортной функции.
Как проверить результат
Нет ошибок компиляции модулей
Ошибки «Процедура или функция не обнаружена»
Функция отрабатывает как до изменений
Ошибки времени выполнения или неверный результат
Отличаются только осознанно перенесённые фрагменты
Остались неучтённые различия в коде
Что важно запомнить
Сравнение модулей 1С выполняется штатным механизмом сравнения конфигураций, историей хранилища или внешними diff-инструментами для отдельных текстов. Перед любым объединением — архивная копия, после переноса — проверка конфигурации и контрольный запуск сценария.
Частые вопросы
Можно ли сравнить два модуля без доступа к конфигуратору второй базы?
Да, если у вас есть выгрузка конфигурации в файл .cf или .dt. Попросите коллегу сохранить конфигурацию в файл и сравните её со своей через «Сравнить, объединить с конфигурацией из файла». Доступ к самой базе при этом не нужен.
Чем сравнение конфигурации базы и конфигурации поставщика отличается от сравнения двух файлов?
Сравнение с конфигурацией поставщика показывает, какие объекты доработаны относительно типовой поставки, — это основа анализа перед обновлением. Сравнение двух произвольных файлов cf показывает различия между любыми двумя версиями независимо от поставщика.
Как сравнить модули, если конфигурация на поддержке с запретом изменений?
Сравнение не изменяет конфигурацию и доступно всегда. Ограничения поддержки влияют только на возможность редактирования и объединения, а не на просмотр отличий.
Почему построчное сравнение показывает весь модуль изменённым?
Чаще всего причина в различиях отступов, переносов строк или кодировки выгрузки. Проверьте настройки сравнения и, при использовании внешних инструментов, включите игнорирование незначащих пробелов.
Можно ли сравнить модули в 1С:EDT?
Да. В EDT доступно сравнение версий через историю Git, а также сравнение двух файлов проекта через контекстное меню «Сравнить». Для команд, работающих с Git, это основной и наиболее удобный способ отслеживания изменений в модулях.
Что делать, если после объединения модуль перестал компилироваться?
Откройте проверку конфигурации и посмотрите список ошибок: обычно это ссылки на процедуры или объекты, которые не были перенесены вместе с модулем. Перенесите недостающие объекты или восстановите базу из архивной копии и повторите объединение аккуратнее.