План обмена между самописными базами
Здравствуйте! Есть две самописные базы между ними настроен план обмена. Из базы 1 переносится справочник подразделения в базу 2. Подскажите как реализовать если из базы 1 удалили подразделение, но при обмене чтобы в базе приёмника оно не удалялось?
Функция ПрочитатьНовоеСообщение(ИмяФайла)
// Создаем объект чтения XML
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
// Загрузка из найденного файла
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
НомерСообщения = ЧтениеСообщения.НомерСообщения;
Если ЧтениеСообщения.Отправитель <> Ссылка Тогда
// Сообщение предназначено не для этого узла
ВызватьИсключение "Неверный узел";
КонецЕсли;
// Удаляем регистрацию изменений для узла отправителя сообщения
// по номеру принятого сообщения, полученного из сообщения
ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);
// Читаем данные из сообщения пока это возможно
Счетчик = 0;
Пока ВозможностьЧтенияДанных(ЧтениеXML) Цикл
// Читаем очередное значение
Данные = ПрочитатьДанные(ЧтениеXML);
#Если Клиент Тогда
Счетчик = Счетчик + 1;
Состояние("Загрузка данных: " + Строка(Счетчик));
#КонецЕсли
// Разрешение коллизий при одновременном изменении в обоих узлах
Если Не ЧтениеСообщения.Отправитель.Главный И
ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель, Данные) Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "- Изменения отклонены:";
Сообщение.Сообщить();
#Если Клиент Тогда
ВывестиДанные(Данные);
#КонецЕсли
Продолжить;
КонецЕсли;
// Вывод диагностического сообщения о загружаемых данных
ВывестиДанные(Данные);
// Устанавливаем отправителя, чтобы для него при записи не было бы зарегистрировано изменение
Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
// Включает режим Загрузка, так как данные могут загружаться
// в произвольном порядке и нужно отключить такой контроль данных, как проверка уникальности номеров
Данные.ОбменДанными.Загрузка = Истина;
// Запись перенесенных данных
Данные.Записать();
КонецЦикла;
ЧтениеСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();
Возврат НомерСообщения;
КонецФункции
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот