← На главную
При сопровождении отраслевых решений и баз с внесенными доработками программисты регулярно сталкиваются с задачей обновления конфигураций, находящихся на поддержке с возможностью изменения. Рассмотрим подробно, как выгрузить чистую конфигурацию поставщика текущего релиза, выявить все изменения в кодовой базе и корректно применить файл обновления, не потеряв доработки пользователей.
Шаг 1. Получение эталонной конфигурации поставщика из рабочей базы
Если конфигурация поставлялась единым дистрибутивом (например, отраслевая надстройка, объединенная с типовой бухгалтерией), типовой файл .cf уже встроен в саму информационную базу как конфигурация поставщика. Чтобы извлечь его и использовать для сравнения, выполним следующие действия:
- Откроем информационную базу в режиме Конфигуратор.
- Перейдем в главное меню Конфигурация — Поддержка — Настройка поддержки.
- В открывшемся окне отображается список доступных конфигураций поставщика. Выделим нужную конфигурацию и нажмем кнопку Сохранить в файл.
- Укажем путь для сохранения файла на диске. В результате получим чистый файл конфигурации поставщика (
.cf) той версии, которая сейчас установлена на поддержке в рабочей базе.
Шаг 2. Выявление пользовательских доработок
Имея на руках эталонный файл конфигурации поставщика текущей версии, мы можем точно определить, какие объекты метаданных и строки кода были добавлены или изменены разработчиками. Для этого воспользуемся механизмом сравнения:
- В меню конфигуратора выберем Конфигурация — Сравнить, объединить с конфигурацией из файла.
- Укажем только что сохраненный файл поставщика.
- В окне сравнения и объединения снимем общий флаг объединения в корне дерева (наша цель на данном этапе — исключительно аудит изменений).
- Проанализируем цветовую индикацию дерева метаданных:
- Объекты с синей (голубой) индикацией — объекты, существующие как у поставщика, так и в основной конфигурации, но имеющие различия в свойствах, формах, макетах или программных модулях.
- Объекты с оранжевой индикацией — новые объекты метаданных (документы, справочники, регистры, реквизиты), созданные разработчиками, которые отсутствуют в типовой поставке.
Шаг 3. Штатное обновление и фильтр «Показывать только дважды измененные»
Для выполнения обновления до новой версии необходимо использовать штатный помощник обновления, а не простое сравнение/объединение. Только штатный режим включает трехстороннее сопоставление (исходная конфигурация поставщика, новая конфигурация поставщика и текущая рабочая конфигурация).
- Перейдем в меню Конфигурация — Поддержка — Обновить конфигурацию.
- Выберем файл обновления
.cfu или полный файл новой версии .cf.
- После сопоставления версий откроется окно Сравнение и объединение.
- В нижней части окна настроим фильтр отображения: в раскрывающемся списке установим режим Показывать только дважды измененные свойства.
Разберем, почему данный фильтр является ключевым инструментом разработчика при обновлении:
Дважды измененные свойства — это те участки метаданных и модулей, где одновременно присутствуют изменения поставщика (новый функционал или исправления от вендора) и изменения локального разработчика базы. Только эти объекты требуют ручного вмешательства и принятия решений.
Все остальные объекты распределяются платформой автоматически:
- Если объект менялся только поставщиком (а в рабочей базе не трогался), платформа автоматически выставляет правила для его полного обновления.
- Если объект менялся только локальным разработчиком (а поставщик в новом релизе его не затрагивал), платформа автоматически оставляет пользовательские доработки без изменений.
Шаг 4. Попроцедурное объединение модулей и разрешение конфликтов
При работе со списком дважды измененных объектов нельзя бездумно снимать или ставить флаги на весь объект целиком, так как это приведет либо к затиранию доработок, либо к отказу от нового типового функционала. Рассмотрим алгоритм построчного объединения модулей:
- В строке дважды измененного модуля (модуль объекта, модуль менеджера, модуль формы) нажмем на пиктограмму шестеренки (или лупы в зависимости от версии платформы).
- Откроется окно попроцедурного сравнения модулей. Платформа сопоставит каждую процедуру и функцию по отдельности.
- Процедуры, затронутые только одной из сторон, объединяются автоматически. Внимание требуется только процедурам с пересекающимися правками.
- Используя режим ручного объединения или копирования блоков кода, аккуратно встроим пользовательские конструкции (вызовы процедур, условия, алгоритмы) в обновленный текст типовой процедуры поставщика.
Шаг 5. Работа с окном «Неразрешимые ссылки» и формы
В процессе применения обновлений могут возникать предупреждающие окна платформы. Разберем типичные ситуации:
- Неразрешимые ссылки: если при обновлении поставщик удалил или переименовал объект метаданных (например, реквизит шапки или роль), а пользовательский код или макеты продолжают ссылаться на старое имя, платформа выведет список неразрешимых ссылок. Игнорировать это окно нельзя — необходимо зафиксировать все проблемные метаданные и скорректировать обращения к ним в доработанном коде, иначе база завершит работу с критической ошибкой в режиме 1С:Предприятие.
- Обычные формы (поколение конфигураций на обычных формах): в отличие от текста программных модулей, визуальные элементы обычных форм не объединяются автоматически. Если форма списка или документа была изменена локально, и одновременно поставщик выпустил новую версию этой формы, форма переносится только целиком. В таких случаях форму оставляют в рабочей версии, а новые типовые реквизиты и кнопки добавляют вручную через графический редактор форм.
Шаг 6. Контроль качества и фиксация изменений
После завершения процедуры объединения, до нажатия клавиши F7 (Обновить конфигурацию базы данных), выполним обязательную проверку:
- Запустим синтаксический контроль: меню Конфигурация — Проверка конфигурации.
- Установим флаги Поиск некорректных ссылок, Синтаксический контроль модулей и Проверка логической целостности.
- При обнаружении ошибок устраним несовпадения параметров вызова методов и обращений к удаленным реквизитам.
- Применим изменения к базе данных (
F7) и выполним первый запуск в режиме 1С:Предприятие от имени пользователя с полными правами для завершения работы регламентных процедур обновления информационной базы.