Обновление конфигураций 1С, в которые были внесены доработки, — одна из самых частых и трудоемких задач для программиста. Возникает закономерный вопрос: как выстроить этот процесс, чтобы он был предсказуемым, надежным и по возможности автоматизированным? Хочется найти одну методику, отточить ее, подобрать инструменты и довести до автоматизма. Давайте разберем, какие подходы существуют, начиная от базовых ручных методов и заканчивая современными практиками.
Прежде чем приступать непосредственно к обновлению, важно заложить правильный фундамент. Соблюдение двух простых правил сэкономит массу времени и нервов в будущем.
1. Обязательное резервное копирование. Это аксиома, но о ней стоит напомнить. Перед любыми манипуляциями с конфигурацией обязательно сохраните ее текущую версию в файл .cf. Это ваша страховка, которая позволит быстро откатиться назад, если что-то пойдет не так, или восстановить случайно затертый код.
2. Последовательность обновлений. Очень важный момент, на который часто не обращают внимания. Не перепрыгивайте через релизы. Если ваша текущая версия 2.4.5, а актуальная — 2.4.7, обновляйтесь поэтапно: 2.4.5 -> 2.4.6 -> 2.4.7. Почему это так критично?
В каждом промежуточном релизе могут содержаться специальные обработчики обновления, которые корректируют структуру данных. Например, разработчик мог переименовать реквизит или перенести данные из одного регистра в другой. Если пропустить такой релиз, обработчики не выполнятся, и вы можете столкнуться с трудноуловимыми ошибками в данных или в коде. Классический пример из практики — реквизиты, которым вендор присваивает префикс Удалить. В одном из обновлений реквизит Количество мог быть переименован в УдалитьКоличество, а в следующем — окончательно удален, а его данные перенесены. Пропустив промежуточное обновление, вы рискуете получить неработающие запросы или процедуры, которые обращаются к уже несуществующему полю, как это и произошло в обсуждаемой на форуме ситуации.
Это классический, базовый способ, с которого начинают все разработчики. Разберем его по шагам.
.cfu или .cf) новой версии.Ключевой инструмент в этом окне — настройка фильтра. Обратите особое внимание на опцию «Показывать дважды измененные свойства». Именно она подсвечивает самые проблемные места — объекты, которые изменили и вы (или другой разработчик), и поставщик в новом релизе. Это и есть точки конфликтов, которые требуют ручного анализа и переноса изменений.
Ваша задача — внимательно пройти по всем таким объектам (модулям, формам, ролям) и аккуратно перенести свои доработки в новую версию объекта от поставщика. Нельзя просто оставлять свой старый объект, так как в нем будет отсутствовать новый функционал от вендора.
Стандартное окно сравнения модулей в Конфигураторе не всегда удобно. Оно не очень наглядно показывает различия в больших блоках кода. Здесь на помощь приходят внешние программы для сравнения текстов (diff-утилиты).
Как это работает?
В настройках Конфигуратора (Сервис -> Параметры -> Закладка «Тексты» -> «Внешние программы») можно указать путь к такой утилите. Популярные варианты: KDiff3, Araxis Merge, WinMerge, Beyond Compare или встроенные инструменты сравнения в редакторах кода вроде VS Code.
Когда вы в окне сравнения конфигураций дважды щелкнете по измененному модулю, 1С автоматически выгрузит три версии текста (старая версия поставщика, ваша версия, новая версия поставщика) и откроет их во внешней программе. Трехстороннее сравнение гораздо нагляднее и позволяет:
Работа с формами и макетами сложнее, так как их нельзя просто сравнить как текст. Здесь приходится полагаться на визуальный анализ в Конфигураторе, аккуратно перетаскивая новые элементы от поставщика на свою измененную форму и восстанавливая свои доработки.
Ручное обновление, описанное выше, надежно, но очень трудоемко. Современная разработка на 1С движется в сторону упрощения этого процесса. Рассмотрим передовые методики, которые позволяют кардинально сократить затраты на обновления.
Это главный тренд последних лет. Идея в том, чтобы не изменять основную конфигурацию поставщика вообще, а все доработки выносить в расширения. Конфигурация остается на поддержке, "чистой".
Преимущества:
Этот подход требует пересмотра архитектуры доработок, но в долгосрочной перспективе он окупается многократно.
Профессиональные разработчики управляют кодом конфигурации как любым другим программным проектом, используя системы контроля версий, чаще всего Git.
Базовый процесс выглядит так:
1C:Enterprise Development Tools (EDT), gcomp или скриптов на OneScript..cf для загрузки в базу.Этот подход требует более высокой квалификации, но он превращает "магию" обновления в прозрачный и управляемый инженерный процесс.
Вершиной мастерства является полная автоматизация процесса обновления с использованием принципов CI/CD (непрерывная интеграция и доставка).
OneScript и Vanessa-Automation можно написать скрипты, которые будут автоматически скачивать новый релиз, выполнять слияние в Git, собирать конфигурацию, загружать ее в тестовую базу, запускать обработчики обновления и выполнять набор дымовых тестов для проверки работоспособности.1C:Enterprise Development Tools предоставляет более продвинутые инструменты для анализа кода, рефакторинга и сравнения объектов, чем классический Конфигуратор.В итоге, выбор методики зависит от масштаба доработок и квалификации команды. Можно начать с отладки надежного ручного процесса с использованием внешних diff-утилит и строгого соблюдения последовательности релизов, а по мере роста сложности — переходить на использование расширений, Git и средств автоматизации.