При обновлении сильно кастомизированных баз 1С программисты часто сталкиваются с проблемой потери доработок. Один из проверенных временем способов контроля — маркировка своих изменений специальными комментариями (например, // Доработка_Иванов) и последующий глобальный поиск по ним. Однако, когда список изменений велик, проверять его «глазками» в окне поиска становится неэффективно. Рассмотрим подробно, как автоматизировать этот процесс, сохранив результаты поиска в формат .mxl и сравнив их между двумя базами (до обновления и после).
Разберем по шагам, как получить редактируемый список из окна глобального поиска. Многие начинающие разработчики пытаются найти кнопку «Сохранить» непосредственно в окне поиска, но механизм в 1С реализован иначе. Проанализируем правильный алгоритм действий:
Ctrl+Shift+F).Важный нюанс: часто пользователи жалуются, что в главном меню пункт «Файл — Сохранить» остается неактивным. Выясним причину: для активации команд сохранения необходимо установить фокус (кликнуть мышкой) внутрь созданного табличного документа. Только после этого станет доступна команда Файл — Сохранить как..., где нужно выбрать тип файла Табличный документ (*.mxl).
Теперь, когда у нас есть два файла (один из старой базы с полным набором доработок, другой из новой, где часть изменений могла пропасть), мы можем воспользоваться встроенным механизмом сравнения 1С. Рассмотрим, как это сделать:
Перейдем в пользовательский режим 1С (1С:Предприятие) или останемся в Конфигураторе. Воспользуемся пунктом меню Файл — Сравнить файлы.... В открывшемся окне выберем первый файл (эталонный) и второй (результат обновления). Программа откроет специализированное окно сравнения, где различия будут подсвечены цветом:
Этот визуальный контроль позволяет мгновенно определить, какие именно блоки кода не были перенесены при объединении конфигураций.
Рассмотрим более продвинутый вариант. Если доработок сотни, стандартного MXL-сравнения может быть недостаточно, так как оно чувствительно к сдвигам строк. Опытные разработчики используют внешние утилиты. Проанализируем пример настройки программы P4Merge для работы напрямую из Конфигуратора.
Для подключения внешнего инструмента перейдем в Сервис — Параметры — Тексты — Сравнение и объединение. Укажем путь к программе и зададим параметры командной строки. Посмотрим на пример настройки параметров для P4Merge, который позволяет выполнять трехстороннее сравнение:
-C utf8-bom -nl %baseCfgTitle -nr %secondCfgTitle %baseCfg %secondCfg
-C utf8-bom -nl %baseCfgTitle -nr %secondCfgTitle %baseCfg %secondCfg -merge %merged
-C utf8-bom -nl %baseCfgTitle -nr %secondCfgTitle -nb %oldVendorCfgTitle %oldVendorCfg %baseCfg %secondCfg %merged
Использование таких инструментов позволяет сравнивать модули не как статичные таблицы, а как динамический программный код, игнорируя лишние пробелы и корректно обрабатывая перемещенные блоки текста.
Выясним, как подстраховаться, если вы не уверены, что все доработки помечены комментариями. Вместо глобального поиска можно использовать штатный отчет о сравнении. Пройдем по шагам:
Этот отчет также можно сохранить в .mxl и сравнивать аналогично методам, описанным выше. Это даст 100% гарантию, что вы увидите изменения не только в коде модулей, но и в свойствах реквизитов, формах и правах доступа.
В завершение проанализируем ситуацию: стоит ли продолжать использовать поиск по комментариям? Современный стандарт разработки в 1С подразумевает постепенный уход от изменения основной конфигурации. Рассмотрим основные советы:
&Вместо с инструкциями #Вставить и #Удалить. Это позволит платформе самой предупреждать вас, если типовой алгоритм в новой версии изменился настолько, что ваша доработка требует адаптации.1C:EDT. Она базируется на Git, где сравнение списков изменений и поиск «пропавшего» кода реализованы на уровне системы контроля версий, что в разы ускоряет работу программиста.Таким образом, использование формата .mxl для сравнения результатов поиска — это отличный «быстрый» метод контроля, но для долгосрочной перспективы рекомендуем осваивать внешние инструменты дифференциации кода и механизм расширений.