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

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

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

Принцип работы пакетной установки отметок по подсистемам

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

  1. Снимают отметки со всех объектов в корне дерева сравнения.
  2. Выбирают команду Действия → Отметить по подсистемам... (или Отметить по подсистемам основной конфигурации).
  3. В открывшемся окне отмечают созданную пользовательскую подсистему и подтверждают выбор кнопкой Установить.

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

Причины, по которым объекты не отмечаются или выбираются некорректно

Разберем основные технические нюансы работы механизма сравнения и объединения:

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

Как реализовать сценарий «Обновить всё, кроме доработанной подсистемы»

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

Способ 1. Штатное инвертирование через меню действий

Штатный механизм позволяет обойтись без ручного снятия отметок со сотен типовых объектов:

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

Способ 2. Двухэтапное обновление через выгрузку конфигурации в файл

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

  1. Выгружаем текущую рабочую конфигурацию со всеми доработками в файл .cf через меню Конфигурация → Сохранить конфигурацию в файл....
  2. Выполняем штатное обновление на новый релиз поставщика. В окне сравнения и объединения соглашаемся на обновление всех объектов без исключения (при необходимости разрешая удаление устаревших типовых объектов поставщика).
  3. Важно: не применяем изменения к конфигурации базы данных (не нажимаем клавишу F7).
  4. Открываем меню Конфигурация → Сравнить, объединить с конфигурацией из файла... и выбираем ранее сохраненный файл .cf.
  5. Снимаем все отметки, после чего через команду Отметить по подсистемам конфигурации файла выбираем свою подсистему.
  6. Объединяем конфигурацию и только после этого обновляем конфигурацию базы данных.

Альтернативы и лучшие практики

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

  1. Сохранение настроек объединения. Настроив сложное дерево объединения вручную, обязательно сохраняем его через Действия → Сохранить настройки объединения.... При накатывании обновления на рабочую базу после тестов достаточно использовать команду Загрузить настройки объединения..., что полностью исключает человеческий фактор.
  2. Трехстороннее обновление поддержки. Прямое сравнение двух файлов .cf уступает штатному механизму обновления через файл поставщика (.cfu или .cf через меню поддержки). При трехстороннем сравнении платформа видит старую конфигурацию поставщика, новую и текущую конфигурацию с изменениями, что автоматически разделяет типовые изменения и пользовательские доработки по статусам («Изменен дважды», «Не изменялся»).
  3. Перенос доработок в расширения. Наиболее надежный способ исключить проблемы с обновлением объектов — перенести новые справочники, реквизиты, документы и логику переопределения типовых модулей в механизм расширений конфигурации. В этом случае основная конфигурация остается на типовой поддержке и обновляется в полностью автоматическом режиме.
← На главную