Введение
Представьте вы помечаете на удаление объект в базе-источнике, запускаете обмен, но в базе-приемнике объект так и остается не помеченным на удаление, но вам очень хотелось бы что в двух системах данные были консистентными.
Кто сталкивался с универсальным обменом знает что передача признака пометки на удаление отсутствует. Распространенное, но неверное решение — пытаться передать признак удаления через пользовательские поля в AdditionalInfo
. Я предлагаю использовать механизм, заложенный самой платформой 1С, — секцию УдалениеОбъекта
в файле обмена.
В статье рассмотрим, как настроить регистрацию изменений на удаление и работу с секцией УдалениеОбъекта
. И буду я использовать для этого правила регистрации объектов.
Важное условие: Метод работает только при идентификации объектов по уникальному идентификатору.
Как это выглядит в XML?
Вот пример секции, которую мы в итоге хотим получить в исходящем пакете данных:
<Body xmlns="http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.6">
<УдалениеОбъекта>
<СсылкаНаОбъект>
<СсылкаНаОбъект>
<КонтрагентыСсылка>d4830c3e-0e62-11ed-9f06-00155d000916</КонтрагентыСсылка>
</СсылкаНаОбъект>
</СсылкаНаОбъект>
</УдалениеОбъекта>
</Body>
Пошаговая реализация метода
Для того чтобы настроить правила регистрации объектов, нужно вернуться к истокам, а именно к конвертации данных 2.0. Не зря же на форме узла осталась команда загрузки правил регистрации
Шаг 1: Регистрация объектов для обмена
Первое и важное действие: Нужно проверить код регистрации изменений для ваших объектов, чтобы при постановке на выгрузку вручную через триггеры записи объектов у вас не стояли фильтры, запрещающие выгрузку помеченных на удаление объектов.
Шаг 2: Выгрузка метаданных конфигурации
Для работы с правилами регистрации нам потребуется файл с метаданными вашей конфигурации.
- Возьмите стандартную обработку
MD83Exp.epf
., которая идет вместе с конвертацией данных 2.0. - Запустите ее в вашей базе и выгрузите метаданные в файл (например,
Metadata.xml
).
Шаг 3: Настройка правил регистрации объектов
Это ключевой шаг, где мы непосредственно настраиваем логику.
- В режиме 1С:Предприятие откройте базу Конвертация данных 2.0
- Загрузите структуру метаданных конфигурации, укажите выгруженный ранее файл с метаданными.
- Заходим в правила регистрации объектов и создаем новую регистрацию. Указываем конфигурацию, которую загрузили на предыдущем этапе и нужный план обмена.
- Нажмите "Записать". После этого станет активной кнопка перехода к самим правилам.
-
Перейдите в Правила регистрации объектов. Здесь нужно создать новое правило для каждого объекта, который должен удаляться.
-
Объект настройки: Выберите нужный объект из состава плана обмена.
- Переключатель режима: это реквизит в плане обмена, в котором обязательно указывается Тип ПеречислениеСсылка.РежимыВыгрузкиОбъектовОбмена, более подробно можете почитать на ИТС в разделах внедрение БСП, в пункте Обмен Данными.
- Отбор по свойству объекта: Это самый важный элемент настройки. Добавьте условие отбора:
-
Свойство:
ПометкаУдаления
-
Вид сравнения:
Равно
- Значение:
Ложь
(илиНет
)
-
-
Данное правило означает: «выгружать объект только если он НЕ помечен на удаление». Для объектов, помеченных на удаление, это правило не срабатывает, но, так как изменение было зарегистрировано (Шаг 1), обмен формирует для них команду в секции УдалениеОбъекта
.
Шаг 4: Сохранение и применение правил
После настройки всех необходимых правил:
-
Сохраните получившуюся структуру в XML-файл с помощью соответствующей команды.
-
Этот файл необходимо загрузить в узел обмена. Для этого скопируйте содержимое XML-файла в макет
ПравилаРегистрации
в вашей конфигурации (откройте конфигуратор, найдите этот макет и вставьте текст) или через команду "Загрузить правила регистрации объектов"
Результат работы
До обмена: Объект существует в обеих базах. Но в источнике он помечен на удаление.
В приемнике данные не помечены.
После обмена: Пакет данных содержит секцию УдалениеОбъекта
, и объект удаляется в базе-приемнике.
Заключение
Предложенный метод использует штатный, но не всегда очевидный механизм платформы 1С. Он позволяет добиться консистентности данных между базами при удалении объектов без изобретения велосипедов. Настройка через Правила регистрации дает четкий контроль над логикой обмена и является правильным способом решения задачи в рамках идеологии БСП.
Вступайте в нашу телеграмм-группу Инфостарт