Как при объединении конфигураций 1С сохранить уникальные объекты и не потерять настройки регистраторов?

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

Процесс сравнения и объединения конфигураций в среде 1С:Предприятие — это стандартная, но крайне ответственная операция. Одной из наиболее болезненных проблем, с которыми сталкиваются разработчики, является частичная потеря свойств объектов, которые существуют только в основной конфигурации. Типичный пример: в вашей базе есть уникальный РегистрНакопления, которого нет в файле обновления. После объединения вы обнаруживаете, что список его регистраторов (документов, делающих движения) очистился или изменился, хотя сам регистр вы «трогать» не планировали. Рассмотрим подробнее, почему это происходит и как выстроить процесс объединения так, чтобы ничего не «затереть».

Выясним причину: почему «слетают» регистраторы?

Для начала проанализируем ситуацию с точки зрения архитектуры метаданных 1С. Нужно понимать, что список регистраторов для регистра — это не самостоятельный объект, а свойство самого регистра. Когда система выполняет сравнение, она сопоставляет объекты по их внутренним идентификаторам (GUID). Если в файле конфигурации, с которым вы объединяетесь, отсутствует ваш уникальный регистр, 1С видит это различие.

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

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

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

  1. Откройте окно сравнения и объединения конфигураций.
  2. Найдите на панели инструментов значок «воронки» (Фильтр).
  3. В появившемся меню выберите режим «Показывать только различия». Это отсечет идентичные объекты и позволит сосредоточиться на изменениях.
  4. Установите флажок «Исключить объекты, отсутствующие в файле конфигурации». Это ключевой момент! Данная настройка скроет из списка все ваши уникальные объекты (регистры, справочники, документы), которых нет во внешнем файле. Таким образом, вы физически не сможете случайно поставить на них «галочку» и изменить их.

Проанализируем, что это дает: скрыв объекты, отсутствующие в файле, вы работаете только с тем «набором изменений», который пришел извне, не затрагивая локальные доработки.

Настройка правил для свойств и подчиненных объектов

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

Кликните правой кнопкой мыши на конкретном объекте в дереве сравнения. Вы увидите пункт «Установить режим для подчиненных объектов». Здесь можно выбрать приоритет:

Если вы хотите обновить только алгоритмы проведения (модули), но сохранить структуру (реквизиты и связи), используйте режим объединения с объединением модулей, но снимайте флажки с состава свойств объекта Регистраторы.

Опция «Разрешить удаление объектов»

Рассмотрим еще один важный защитный механизм. В окне сравнения и объединения есть кнопка «Параметры». В ней находится флажок «Разрешить удаление объектов».

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

Практический алгоритм безопасного объединения

Представим, что нам нужно обновить документ РеализацияТоваровУслуг, но при этом у нас есть самописный РегистрНакопления, который нельзя трогать. Выполним следующие действия:

  1. В окне объединения первым делом нажимаем «Действия» — «Снять пометки со всех объектов». Это обнуляет все изменения и дает нам «чистый лист».
  2. Включаем фильтр «Показывать только различия».
  3. Находим в дереве только нужный нам документ РеализацияТоваровУслуг и ставим на него галочку.
  4. Разворачиваем дерево объекта РеализацияТоваровУслуг и проверяем, чтобы в списке его свойств не было пометок на удаление связей с вашим уникальным регистром.
  5. Если вы видите, что при выборе документа автоматически ставится галка на корень ветки Регистры, обязательно перейдите туда и снимите её.

Важность использования файла настроек (.vrs)

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

В завершение отметим, что самым надежным способом проверки является предварительное выполнение объединения на копии базы с последующей проверкой метаданных. Если вы видите, что Регистраторы в РегистрСведений или РегистрНакопления все же пропали, значит, связь была разорвана на стороне объекта-регистратора. В таком случае поможет только ручное восстановление галочек или более тонкая настройка сопоставления объектов по именам, если GUID-ы объектов разошлись.

← На главную