Как вернуть объекты конфигурации на полную поддержку и убрать фантомные изменения метаданных

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

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

Разбор причины появления ошибки «Данное правило невозможно установить рекурсивно»

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

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

Рассмотрим порядок действий для решения этой проблемы:

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

Борьба с «вечными» изменениями в справочной информации

Часто встречается ситуация, когда при сравнении с конфигурацией поставщика платформа настойчиво показывает наличие изменений в объекте, хотя код, формы и структура идентичны. В 90% случаев виновником является Справочная информация (Help). Это происходит из-за особенностей хранения HTML-данных справки. Даже если текст не менялся, в файл справки могут добавиться невидимые символы (переводы строк, пробелы) или измениться кодировка при переходе между версиями платформы.

Разберем методы устранения этого «фантомного» редактирования:

Метод 1: Режим копирования из конфигурации поставщика

Если в окне сравнения и объединения вы видите «желтый куб» напротив справочной информации, выполните следующие действия:

  1. В дереве сравнения нажмите правой кнопкой мыши на проблемный объект или конкретный узел справки.
  2. В контекстном меню выберите «Установить режим копирования из конфигурации поставщика».
  3. Выполните объединение. Это заставит платформу перезаписать ваш локальный файл справки байт в байт из конфигурации поставщика.

Метод 2: Радикальное обновление через файл CF

Если первый метод не помог и строка «Объект поставщика не редактируется» остается серой (недоступной), воспользуемся более надежным способом. Для этого нам понадобится файл конфигурации (.cf) той же версии, что и текущая конфигурация поставщика.

  1. Выполните команду «Конфигурация — Сравнить, объединить с конфигурацией из файла».
  2. Выберите чистый cf файл поставщика.
  3. В появившемся окне снимите все галочки.
  4. Найдите ваш проблемный объект, установите на нем галочку.
  5. Нажмите кнопку «Выполнить». Платформа обновит объект, сохранив при этом его связь с поддержкой.

Метод «Двойного снятия» для восстановления жесткой связи

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

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

Технические нюансы работы с кэшем метаданных

Не стоит забывать, что 1С активно использует кэширование. Если вы внесли изменения, вернули замок, но индикатор изменений все равно висит, возможно, дело в серверном или локальном кэше. Посмотрим, как это исправить:

Во-первых, очистите локальный кэш пользователя (папки %AppData%\1C\1Cv8 и %LocalAppData%\1C\1Cv8).

Во-вторых, если база клиент-серверная, записи об объектах хранятся в таблице Config. В редких случаях помогает выполнение команды «Конфигурация — Поддержка — Обновить конфигурацию поставщика». Проанализируем, что это дает: платформа перечитывает структуру XML-описаний объектов из системных таблиц и обновляет внутренние индексы связей, что часто убирает ложные срабатывания о наличии изменений.

Заключение и рекомендации

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

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

← На главную