Обновление сильно доработанной конфигурации «1С:Управление производственным предприятием» (УПП) — это всегда ответственный процесс, требующий внимательности и системного подхода. Основная сложность заключается в том, что при обновлении типовые механизмы 1С могут затереть ваш уникальный программный код или элементы форм. Разберем пошагово, как минимизировать риски и эффективно перенести доработки в новую версию релиза.
Прежде чем приступать к обновлению, проанализируем текущее состояние нашей базы. Рассмотрим ситуацию, когда у нас есть доработанная конфигурация версии 1.3.106.1, которую нужно обновить до 1.3.111.1. Первый шаг — понять, что именно было изменено программистами ранее.
.cf) того же релиза, на котором сейчас находится наша рабочая база (в данном примере — 1.3.106.1)..cf.Проанализируем полученный список. Важно зафиксировать все изменения. Некоторые специалисты предпочитают выгружать этот список в Excel для дальнейшего контроля. Посмотрим, как это помогает: имея перед глазами перечень измененных модулей и форм, мы точно не забудем проверить их после завершения процедуры обновления.
Стандартный механизм сравнения в 1С не всегда удобен при анализе больших программных модулей. Для повышения эффективности работы воспользуемся внешней утилитой KDiff3. Она позволяет выполнять так называемое «трехстороннее сравнение» (Three-way merge), что значительно ускоряет процесс слияния кода.
Для настройки выполним следующие действия:
KDiff3 на рабочий компьютер.Теперь при обновлении через поддержку 1С будет предлагать открыть внешнюю утилиту для разрешения конфликтов в коде. Это особенно полезно в ситуациях, когда и вы, и вендор (компания 1С) изменили одну и ту же процедуру. Проанализируем ситуацию: KDiff3 подсветит изменения 1С и ваши изменения разными цветами, позволяя одной кнопкой собрать итоговый вариант модуля.
Наиболее правильный путь обновления нетиповой конфигурации — использование механизма поддержки. Разберем этот процесс подробнее:
.cfu) или полный дистрибутив нового релиза (.cf).Здесь кроется самый важный момент. Нам нужно обратить внимание на объекты с пометкой «Дважды изменен». Это те объекты, которые были доработаны вами и одновременно изменились в новом релизе от 1С. Выясним причину каждого изменения. Если 1С добавила новую функциональность в процедуру ПередЗаписью, а у вас там стоит проверка заполнения, нам необходимо совместить оба фрагмента кода.
Пример совмещения кода в модуле объекта:
// Было в типовой 106.1:
Процедура ПередЗаписью(Отказ)
// Типовой код
КонецПроцедуры
// Стало в вашей 106.1:
Процедура ПередЗаписью(Отказ)
// Типовой код
Если Не ЗначениеЗаполнено(Ответственный) Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
// В релизе 111.1 от 1С добавилось:
Процедура ПередЗаписью(Отказ)
// Типовой код
РаботаСДоговорами.ПроверитьДоговор(ЭтотОбъект); // Новое от 1С
КонецПроцедуры
В результате объединения мы должны получить структуру, сохраняющую обе логики:
Процедура ПередЗаписью(Отказ)
// Типовой код
РаботаСДоговорами.ПроверитьДоговор(ЭтотОбъект); // Сохраняем новое от 1С
// Наши доработки
Если Не ЗначениеЗаполнено(Ответственный) Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Поскольку УПП 1.3 использует обычные формы, автоматическое объединение визуальных элементов часто работает некорректно. Рассмотрим рекомендации по сохранению элементов форм:
Для того чтобы процесс прошел максимально гладко, применим дополнительные инструменты и методики:
ПодпискиНаСобытия. Это позволит в будущем обновлять модули объектов как полностью типовые, не опасаясь за сохранность своего кода.&Вместо, &После). Это самый современный и безопасный способ кастомизации.Подведем итог. Процесс обновления нетиповой УПП требует терпения. Посмотрим на него как на последовательность: Аудит — Сравнение — Слияние — Тестирование. Никогда не пренебрегайте созданием резервных копий на каждом этапе, особенно перед нажатием кнопки «Выполнить» в окне объединения конфигураций.