План обмена между самописными базами

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

        // Разрешение коллизий при одновременном изменении в обоих узлах
        Если Не ЧтениеСообщения.Отправитель.Главный И 
            ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель, Данные) Тогда
            Сообщение = Новый СообщениеПользователю();
            Сообщение.Текст = "- Изменения отклонены:";
            Сообщение.Сообщить();
#Если Клиент Тогда
            ВывестиДанные(Данные);
#КонецЕсли        
            Продолжить;
        КонецЕсли;
        
        // Вывод диагностического сообщения о загружаемых данных
        ВывестиДанные(Данные);

        // Устанавливаем отправителя, чтобы для него при записи не было бы зарегистрировано изменение
        Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;

        // Включает режим Загрузка, так как данные могут загружаться
        // в произвольном порядке и нужно отключить такой контроль данных, как проверка уникальности номеров
        Данные.ОбменДанными.Загрузка = Истина;

        // Запись перенесенных данных
        
            
        Данные.Записать();
                
        
    КонецЦикла;
    ЧтениеСообщения.ЗакончитьЧтение();
    ЧтениеXML.Закрыть();
    
    Возврат НомерСообщения;

    
КонецФункции

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 14.03.17 12:29 Сейчас в теме
правило обмена написано с помощью конвертации данных ? тогда и не будет удаляться
3. belka23 14.03.17 12:31 Сейчас в теме
(2)
помощью конвертации данных ? тогда и не будет удаляться
нет это не конвертация, и сейчас зачищаются все данные
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот