Обновление типовых конфигураций 1С (например, 1С:Зарплата и Управление Персоналом), в которые внесено множество существенных доработок, — одна из наиболее трудоемких задач для разработчика. Ситуация осложняется, когда пропускается несколько релизов или выходит масштабное обновление, меняющее типовые механизмы (например, учет НДФЛ или структуру регистров накопительного типа). В таком случае окно сравнения и объединения содержит сотни дважды измененных объектов, а сам процесс объединения может затянуться на несколько дней.
Рассмотри пошагово, как правильно организовать процесс обновления, как не потерять результаты многочасовой работы при сбое и какие методики позволяют максимально безопасно перенести доработки на новую версию.
Метод 1. Сохранение промежуточных настроек сравнения и объединения в файл
Главный риск при длительном разборе дважды измененных объектов — потерять проставленные флажки и выбранные режимы объединения из-за случайной перезагрузки компьютера, отключения электричества или сбоя платформы. Чтобы не начинать процедуру с нуля каждый раз, используем встроенный механизм сохранения настроек.
Разберем порядок действий:
Открываем окно Сравнение и объединение конфигураций.
Проходим часть метаданных и модулей, выставляя нужные режимы объединения и галочки для измененных процедур и функций.
В верхней панели окна сопоставления нажимаем кнопку Сохранить настройки и сохраняем файл настроек (обычно с расширением .cfsettings).
Если работа прервалась, при следующем запуске процесса сравнения нажимаем кнопку Загрузить настройки и выбираем ранее сохраненный файл. Все ранее проставленные флаги и выбранные правила объединения восстановятся.
Важное ограничение: Файл настроек сопоставляет объекты строго для текущей пары конфигураций. Если структура метаданных обновляемого релиза изменилась кардинально, часть сопоставлений при повторной загрузке может потребоваться проверить вручную.
Метод 2. Пошаговый алгоритм обновления через две тестовые копии информационной базы
Выполнять обновление непосредственно на рабочей базе или пытаться объединить весь код за один прием крайне рискованно. Выясним, как правильно подготовить файл обновленной конфигурации (.cf) с помощью тестового контура.
Проанализируем методику подготовки релиза:
Создаем две копии рабочей базы:
Копия 1 (Рабочая площадка): база, на которой будет выполняться непосредственное объединение и последующая отладка кода.
Копия 2 (Эталон / Шпаргалка): неизменяемая копия текущей базы с вашими доработками. Она необходима для оперативного просмотра исходного кода и сравнения алгоритмов «как было до обновления».
Запускаем обновление на первой копии: Выполняем сравнение и объединение с новым релизом поставщика. Для типовых модулей и форм, затрагивающих измененные механизмы, временно отдаем приоритет конфигурации поставщика, чтобы получить актуальную структуру типового решения.
Формируем список доработок: Фиксируем объекты и процедуры, где доработанный код был замещен типовым функционалом.
Переносим и адаптируем доработки: Используя вторую копию-шпаргалку, последовательно восстанавливаем кастомный функционал с учетом изменений нового релиза поставщика.
Тестируем и запускаем обработчики БСП: Запускаем базу в режиме 1С:Предприятие на первой копии и дожидаемся завершения работы отложенных и монопольных обработчиков обновления Библиотеки Стандартных Подсистем (БСП) из модуля ОбновлениеИнформационнойБазы. Это критически важно для корректной конвертации данных регистров.
Выгружаем итоговый файл: После завершения всех проверок сохраняем конфигурацию в файл .cf. При обновлении рабочей базы останется лишь накатить готовый файл конфигурации.
Метод 3. Использование внешних программ трехстороннего сравнения (KDiff3, WinMerge)
Встроенный текстовый редактор сравнения конфигуратора 1С при разборе сложных модулей может быть неудобен. Для ускорения слияния кода применяют внешние утилиты трехстороннего сравнения, такие как KDiff3 или WinMerge.
Разберем, как настроить внешнюю программу в Конфигураторе:
Устанавливаем утилиту (например, KDiff3).
В Конфигураторе открываем меню Сервис — Параметры.
Переходим на вкладку Сравнение / объединение (или Модули).
В свойствах Показать различия без учета структуры и Обновление конфигурации на поддержке указываем путь к исполняемому файлу внешнего дифференциального анализатора.
При настройке объединения модулей выбираем вариант объединения с помощью внешней программы. Утилита автоматически сопоставит строки из трех источников (исходный релиз поставщика, новый релиз поставщика и ваша доработанная конфигурация) и сведет непересекающиеся правки в автоматическом режиме.
Метод 4. Настройка приоритетов объединения и разбор специальных меток //[MRG]
При использовании стандартного окна сравнения и объединения платформы 1С v8.3 предусмотрены механизмы управления приоритетами для модулей объектов и форм.
Рассмотрим алгоритм работы с дважды измененными модулями:
В окне сравнения устанавливаем фильтр Показывать только дважды измененные объекты.
Открываем настройки объединения конкретного модуля (значок шестеренки напротив модуля).
Для процедур и функций выставляем режим слияния:
С приоритетом основной конфигурации: если в блоке преобладают ваши доработки.
С приоритетом новой конфигурации поставщика: если поставщик существенно переписал логику работы метода.
При объединении с замещением платформа маркирует закомментированные участки кода специальными тегами:
//[MRG] - Признак начала изменений
// Новая процедура поставщика
Процедура РассчитатьНДФЛ()
// Новый типовой код
КонецПроцедуры
//[MRG]
//[MRG]
// Старая доработанная процедура
//Процедура РассчитатьНДФЛ()
// // Ваш доработанный код
//КонецПроцедуры
//[MRG]
После завершения автоматического объединения проходим по коду, ищем теги //[MRG], вручную раскомментируем нужные блоки и удаляем технические маркировочные комментарии.
Архитектурные рекомендации: как избежать проблем при будущих обновлениях
Чтобы каждое следующее обновление не превращалось в длительный ручной разбор конфликтов, проанализируем возможности архитектурного рефакторинга конфигурации:
Перенос логики в подписки на события: Выносите проверки и алгоритмы заполнения из модулей документов в Подписки на события (события ПередЗаписью, ОбработкаПроведения, ПриЗаписи). Это позволит оставить модуль типового объекта нетронутым на стандартной поддержке.
Использование расширений конфигурации (.cfe): Для перехвата процедур и изменения поведения форм применяйте механизмы расширений с аннотациями &Перед, &После или &Вместо.
Использование переопределяемых общих модулей: Для интеграции с БСП применяйте специально вынесенные разработчиками 1С модули с суффиксом Переопределяемый.
Отказ от прямого изменения типовых регистров: Не меняйте структуру типовых измерений и ресурсов в регистрах накопительного и расчетного типа. При необходимости добавления аналитики создавайте собственные регистры сведений или сведений-расширений.