Как обновить доработанную конфигурацию 1С и не потерять изменения?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Рассмотрим частую ситуацию: в типовой конфигурации 1С добавлены пара новых справочников, изменен один документ (новые справочники добавлены в качестве реквизитов) и эти реквизиты выведены на форму. Возникает закономерный вопрос: не слетят ли эти доработки при обычном обновлении? Проанализируем возможные риски и разберем проверенные способы сохранения пользовательских изменений, чтобы процесс обновления проходил максимально гладко.

Анализ рисков: что может пойти не так?

Выясним причину возможных проблем при стандартном объединении конфигураций. Поведение системы сильно зависит от того, как именно реализованы доработки:

  1. Автоматически генерируемые формы: Если конфигурация работает на управляемых формах и измененный документ не имеет созданной разработчиком формы (то есть форма генерируется платформой автоматически), то визуальные изменения не слетят, так как слетать попросту нечему.
  2. Пользовательские формы: Если реквизиты добавлены на пользовательскую (типовую) форму визуально в конфигураторе, риск потери изменений очень высок. Формы при обновлении объединяются непредсказуемо, и ваши элементы могут исчезнуть. Также может слететь установка вашей измененной формы в качестве основной.
  3. Программный код: Изменения в модулях также не в 100% случаев объединяются корректно, особенно если код менялся в тех же процедурах, что и в новом релизе поставщика.

Современный подход: Перенос доработок в расширения

Рассмотрим наиболее надежный и рекомендуемый 1С способ — использование механизма расширений. Начиная с версии платформы 8.3.11 (и особенно в версиях 8.3.13 и выше), появилась возможность добавлять в расширения собственные объекты метаданных: справочники, документы и новые реквизиты. Это позволяет оставить основную конфигурацию на полной поддержке и обновлять ее "в один клик".

Разберем по шагам правильный алгоритм работы с расширениями:

  1. Обязательно дополняйте все свои добавленные объекты и реквизиты собственным уникальным префиксом (например, МойПрефикс_НовыйРеквизит), чтобы избежать совпадений с будущими объектами поставщика.
  2. Создайте новые справочники непосредственно в расширении.
  3. Поместите форму типового документа, в который нужно внести изменения, в расширение.
  4. Добавьте необходимые реквизиты и выведите их на форму.

Программное изменение форм

Посмотрим на пример еще более безопасного внедрения в интерфейс. Визуальное редактирование заимствованных форм даже в расширениях иногда может приводить к конфликтам, если поставщик кардинально перерисует форму. Более стабильный метод — программное создание элементов управления.

Добавлять новые поля на форму следует в модуле формы, используя обработчик события ПриСозданииНаСервере. Для этого в платформе предусмотрен метод ИзменитьРеквизиты() и динамическое создание элементов типа ПолеФормы. При таком подходе типовая форма будет обновляться без проблем, а ваши уникальные элементы будут дорисовываться кодом каждый раз при ее открытии.

Правильное обновление через подготовленный файл .cf

Если вы по каким-то причинам не используете расширения и ведете разработку в основной конфигурации, рассмотрим процесс обновления через заранее подготовленный (объединенный разработчиком) файл .cf. Главное правило: не используйте пункт меню "Сравнить, объединить с конфигурацией из файла...". Этот метод обновит только основную конфигурацию, но не затронет конфигурацию поставщика, что гарантированно сломает все будущие обновления.

Чтобы обновление прошло правильно и обновилась конфигурация поставщика, выполните следующие действия:

  1. Откройте меню "Конфигурация" -> "Поддержка" -> "Обновить конфигурацию...".
  2. Выберите подготовленный вами правильный файл .cf в качестве источника обновления.
  3. Убедитесь, что для измененных документов и добавленных справочников в окне "Настройка поддержки" установлен статус "Редактируется с сохранением поддержки". Если объекты будут сняты с поддержки полностью, обновления от поставщика до них не дойдут.

Организация доработок и разрешение конфликтов

Проанализируем процесс объединения модулей при обновлении. Чтобы облегчить визуальный поиск своих доработок в дереве метаданных, заведите собственную подсистему (с префиксом вашей компании) и включите в нее все свои новые справочники и документы. В окне сравнения и объединения вы сможете использовать фильтр по подсистемам, мгновенно исключая новые объекты из сравнения.

При объединении измененных объектов воспользуйтесь встроенным фильтром. Включите режим "Показывать дважды измененные свойства" (иконка или фильтр в окне объединения). Это позволит не выписывать на листочек все измененные вами объекты, а сразу увидеть конфликты: где изменения внесли и вы, и поставщик в новом релизе.

Приоритеты при конфликтах в коде:
Если алгоритм был изменен обеими сторонами, безопасным подходом является установка правила "Взять из новой конфигурации поставщика". Затем, открыв результат объединения (через шестеренку настройки объединения модулей), вручную перенесите свои доработанные строки кода в нужные места. Это гарантирует, что важные исправления ошибок и новые функции от разработчиков 1С не будут случайно затерты вашим старым кодом.

← На главную