При активной разработке в расширениях конфигурации 1С со временем возникает серьезная сложность: стандартное дерево метаданных расширения не дает наглядного представления о том, какие именно модули (объекта, менеджера или формы) были модифицированы, какие процедуры перехвачены и какие алгоритмы изменены. При подготовке к обновлению типовой конфигурации разработчику приходится вручную анализировать весь объем доработок. Разберем эффективные подходы и штатные инструменты платформы для решения этой задачи.
Использование распределенных систем контроля версий (Git, Mercurial) — один из самых надежных способов отслеживания модификаций в расширениях. Разберем по шагам порядок организации рабочего процесса:
Такой подход позволяет мгновенно увидеть diff (разницу) между текущим состоянием расширения и состоянием на момент прошлого релиза типовой конфигурации.
Если требуется быстро получить реестр всех перехваченных методов без выгрузки во внешние системы, используем штатный механизм глобального поиска в Конфигураторе:
&Перед
&После
&Вместо
&ИзменениеИКонтроль
При переопределении типового кода вместо полной подмены процедуры через &Вместо рекомендуется применять аннотацию &ИзменениеИКонтроль. Рассмотрим пример правильного оформления модификации типовой процедуры:
&ИзменениеИКонтроль("РассчитатьСуммуДокумента")
Процедура Расш1_РассчитатьСуммуДокумента(ПараметрыРасчета)
// Исходный типовой код
Сумма = ПараметрыРасчета.Количество * ПараметрыРасчета.Цена;
#Вставить
// Наша доработка
Сумма = Сумма - ПараметрыРасчета.Скидка;
#КонецВставить
ПараметрыРасчета.ИтоговаяСумма = Сумма;
КонецПроцедуры
Преимущество данного механизма заключается в том, что платформа 1С автоматически отслеживает неизменность оригинального типового метода. Если при обновлении типовой конфигурации разработчики фирмы «1С» изменят текст этой процедуры, расширение выдаст ошибку валидации при проверке применимости, что исключит незамеченную потерю типовой бизнес-логики.
В современных версиях платформы 1С реализована поддержка подключения расширений к отдельным хранилищам конфигурации. Это позволяет:
Перед каждым обновлением основной конфигурации рекомендуется использовать два встроенных инструмента:
.cfe перед обновлением, после чего через меню «Конфигурация — Сравнить, объединить с конфигурацией из файла...» наглядно анализируем различия в текстах модулей и свойствах объектов.Для минимизации риска ошибок при обновлении конфигураций с расширениями критически важно покрывать доработанные сценарии автотестами (например, с использованием сценарных тестов). Тесты позволяют за считанные минуты проверить корректность работы расширения на новой версии типовой базы без необходимости ручного тестирования всего функционала.