При работе с конфигурацией «Конвертация данных 2.1» (КД 2) разработчики часто сталкиваются с ситуацией, когда после обновления релиза типовой конфигурации (источника или приемника) старые правила обмена перестают работать. Основная причина — удаление или переименование объектов метаданных (справочников, перечислений, документов) в обновленном релизе. В результате при попытке загрузить правила через обработку Универсальный обмен данными XML возникает критическая ошибка, а в самой КД 2 ссылки на эти объекты выделяются красным цветом.
Рассмотрим ситуацию на конкретном примере: в старом релизе существовало перечисление ВариантыSMTPАутентификации, которое использовалось в правилах. В новом релизе оно было полностью удалено. Попытки просто «пометить на удаление» или «удалить непосредственно» этот объект в КД 2 часто приводят к ошибке «Нарушение прав доступа!», даже если у пользователя есть полные права. Выясним причину такого поведения системы и разберем пошагово, как корректно очистить правила.
Проанализируем техническую сторону вопроса. В КД 2 справочники, хранящие метаданные (такие как ОбъектыМетаданных, Свойства, Значения), связаны между собой жесткими ссылками на уровне объектной логики конфигурации. Когда мы пытаемся удалить объект метаданных (например, то самое перечисление), система проверяет, не используется ли оно в текущих правилах конвертации.
Если на объект ссылается хотя бы одно Правило Конвертации Объекта (ПКО) или Правило Выгрузки Данных (ПВД), встроенные механизмы защиты КД 2 блокируют удаление, выдавая не совсем корректное сообщение о правах доступа. На самом деле это сигнал о том, что объект имеет зависимости. Поэтому просто нажать Shift+Del в списке метаданных не получится.
Это самый надежный и правильный метод, который позволяет сохранить целостность базы данных КД 2. Разберем его по шагам:
Бывают случаи, когда правил настолько много, что искать каждую ссылку вручную нецелесообразно, а загрузить правила в КД 2 для редактирования не получается из-за ошибок парсинга. В этой ситуации мы можем прибегнуть к «хирургическому» вмешательству в файл Rules.xml.
Воспользуемся текстовым редактором (Notepad++ или VS Code) и выполним следующие действия:
<ПравилаКонвертацииОбъектов>, где в атрибуте Имя или Источник фигурирует удаленное перечисление. Удалим весь блок <Правило>...</Правило>.<ПравилоКонвертацииСвойств> под атрибутом ПравилоКонвертации. Удалим эти атрибуты или соответствующие узлы свойств.Чтобы избежать ручного поиска «битых» ссылок, рекомендуется использовать штатный механизм обновления метаданных. Рассмотрим, как это сделать правильно:
Во-первых, необходимо выгрузить актуальное описание метаданных из обновленной базы (источника или приемника) с помощью обработки MD83Exp.epf. При выгрузке убедитесь, что вы используете версию обработки, соответствующую вашей платформе 1С.
Во-вторых, в конфигурации КД 2 выберите вашу конфигурацию и нажмите «Загрузить описание конфигурации». При загрузке система предложит обновить существующие объекты. После завершения процесса все объекты, которые исчезли из реальной базы, в КД 2 будут помечены специальной иконкой или текстом.
В-третьих, воспользуйтесь инструментом «Проверка правил» (доступен в форме списка или форме узла конвертации). Этот инструмент автоматически просканирует все ваши ПКО и ПКС на предмет ссылок на несуществующие (удаленные при обновлении) объекты метаданных и предложит варианты исправления или массового удаления таких связей.
Посмотрим на ситуацию, описанную автором вопроса, с точки зрения развития БСП (Библиотеки стандартных подсистем). Перечисление ВариантыSMTPАутентификации было исключено из многих конфигураций, так как логика работы с почтой перекочевала в справочник УчетныеЗаписиЭлектроннойПочты, где параметры аутентификации теперь определяются булевыми флагами (например, ИспользоватьБезопасноеСоединение) или выбираются автоматически программой.
Если вам нужно сохранить перенос данных, связанных с настройками почты, недостаточно просто удалить старое ПКО. Вам потребуется:
ПередВыгрузкой), чтобы программно сопоставить старые значения перечисления с новыми реквизитами.
// Пример сопоставления старого перечисления с новым булевым флагом
Если Источник.ВариантАутентификации = Перечисления.ВариантыSMTPАутентификации.БезАутентификации Тогда
Значение = Ложь;
Иначе
Значение = Истина;
КонецЕсли;
Если вы выполнили все шаги по удалению, но объект все равно «не отдается», возможно, на него есть ссылка в программном коде обработчиков (алгоритмах), которые хранятся в КД 2. Чтобы найти такие места, проанализируем данные с помощью консоли запросов. В базе КД 2 выполним запрос к таблице ПКО или ПКС, фильтруя текст обработчиков по названию вашего перечисления.
Это поможет выявить скрытые зависимости, которые не видны при стандартном поиске ссылок через интерфейс. После удаления или корректировки кода в алгоритмах, блокировка с объекта метаданных будет снята, и вы сможете завершить очистку правил.
Подводя итог, отметим, что работа с КД 2 при обновлении релизов требует внимательности и строгого соблюдения иерархии удаления: от частных правил выгрузки и свойств к общему описанию объектов метаданных. Только такая последовательность гарантирует отсутствие ошибок доступа и корректную работу правил в дальнейшем.