---
title: Работа с планом обмена
slug: общие-обмен-данными-планы-обмена/работа-с-планом-обмена
---

## Как вручную зарегистрирвоать изменение объекта

```bsl
УзелОбмена = ПланыОбмена.ОбменИсточникПриемник.НайтиПоКоду("ПР");
Если ЗначениеЗаполнено(УзелОбмена) Тогда
    ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Объект);
КонецЕсли;
```

## Как создать сообщение обмена

```bsl
// 0. Создаем объект ЗаписьXML для формирования XML-файла
ПутьКФайлуСообщения = "S:\Exchange\Message_ИС_ПР.xml";
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.ОткрытьФайл(ПутьКФайлуСообщения); // Или Запись.УстановитьСтроку()

// 1. Создаем объект "ЗаписьСообщенияОбмена"
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();

// 2. Начинаем запись сообщения обмена для выбранного узла в файл XML
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена);

// 3. Выбираем изменения
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения);	

// 4. Записываем изменения в файл XML
Пока ВыборкаИзменений.Следующий() Цикл
    Данные = ВыборкаИзменений.Получить();
    ЗаписатьXML(ЗаписьXML, Данные);
КонецЦикла;

// 5. Заканчиваем запись сообщения обмена
ЗаписьСообщения.ЗакончитьЗапись();

```

## Как прочитать сообщение обмена в другой базе

В базе приемнике должен быть создан такой же план обмена

## Как прочитать изменения, зарегистрированные в плане обмена
### С присваиванием номера сообщения

```bsl
// См. описание в синтакс-помощнике
Выборка = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения);
```

### Просто запросом
```bsl
УзелОбмена = ПланыОбмена.ОбменИсточникПриемник.НайтиПоКоду("ПР");

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Узел", УзелОбмена);
Запрос.Текст = 
"ВЫБРАТЬ
|	КонтрагентыИзменения.Узел КАК Узел,
|	КонтрагентыИзменения.НомерСообщения КАК НомерСообщения,
|	КонтрагентыИзменения.Ссылка КАК Ссылка
|ИЗ
|	Справочник.Контрагенты.Изменения КАК КонтрагентыИзменения
|ГДЕ
|	КонтрагентыИзменения.Узел = &Узел";

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = Выборка.Ссылка;
    Сообщение.Сообщить();
КонецЦикла;
```

## Как удалить регистрацию объекта из плана обмена
```bsl
// См. описание в синтакс-помощнике
ПланыОбмена.УдалитьРегистрациюИзменений(<Узлы>, <Данные>);
```