Как исправить ошибку «Объект метаданных не найден» в Конвертации данных 2.1 после обновления релиза

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

При работе с конфигурацией «Конвертация данных 2.1» (КД 2) разработчики часто сталкиваются с ситуацией, когда после обновления релиза типовой конфигурации (источника или приемника) старые правила обмена перестают работать. Основная причина — удаление или переименование объектов метаданных (справочников, перечислений, документов) в обновленном релизе. В результате при попытке загрузить правила через обработку Универсальный обмен данными XML возникает критическая ошибка, а в самой КД 2 ссылки на эти объекты выделяются красным цветом.

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

Почему возникает ошибка «Нарушение прав доступа» при удалении?

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

Если на объект ссылается хотя бы одно Правило Конвертации Объекта (ПКО) или Правило Выгрузки Данных (ПВД), встроенные механизмы защиты КД 2 блокируют удаление, выдавая не совсем корректное сообщение о правах доступа. На самом деле это сигнал о том, что объект имеет зависимости. Поэтому просто нажать Shift+Del в списке метаданных не получится.

Способ 1. Последовательная очистка зависимостей в КД 2

Это самый надежный и правильный метод, который позволяет сохранить целостность базы данных КД 2. Разберем его по шагам:

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

Способ 2. Прямое редактирование XML-файла правил

Бывают случаи, когда правил настолько много, что искать каждую ссылку вручную нецелесообразно, а загрузить правила в КД 2 для редактирования не получается из-за ошибок парсинга. В этой ситуации мы можем прибегнуть к «хирургическому» вмешательству в файл Rules.xml.

Воспользуемся текстовым редактором (Notepad++ или VS Code) и выполним следующие действия:

Способ 3. Обновление описания конфигураций

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

Во-первых, необходимо выгрузить актуальное описание метаданных из обновленной базы (источника или приемника) с помощью обработки MD83Exp.epf. При выгрузке убедитесь, что вы используете версию обработки, соответствующую вашей платформе 1С.

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

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

Особенности работы с SMTP-аутентификацией в новых релизах

Посмотрим на ситуацию, описанную автором вопроса, с точки зрения развития БСП (Библиотеки стандартных подсистем). Перечисление ВариантыSMTPАутентификации было исключено из многих конфигураций, так как логика работы с почтой перекочевала в справочник УчетныеЗаписиЭлектроннойПочты, где параметры аутентификации теперь определяются булевыми флагами (например, ИспользоватьБезопасноеСоединение) или выбираются автоматически программой.

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

  1. Создать новые ПКС в правилах конвертации справочника учетных записей.
  2. Использовать обработчики событий (например, ПередВыгрузкой), чтобы программно сопоставить старые значения перечисления с новыми реквизитами.
  3. Пример кода для сопоставления в обработчике ПКС:

// Пример сопоставления старого перечисления с новым булевым флагом
Если Источник.ВариантАутентификации = Перечисления.ВариантыSMTPАутентификации.БезАутентификации Тогда
    Значение = Ложь;
Иначе
    Значение = Истина;
КонецЕсли;

Использование консоли запросов для поиска скрытых связей

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

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

Подводя итог, отметим, что работа с КД 2 при обновлении релизов требует внимательности и строгого соблюдения иерархии удаления: от частных правил выгрузки и свойств к общему описанию объектов метаданных. Только такая последовательность гарантирует отсутствие ошибок доступа и корректную работу правил в дальнейшем.

← На главную