Вход | Регистрация
    1  2

2 ПланаОбмена - как реализовать?

Ø [Фрэнки, 05.02.21 - 15:05]
2 ПланаОбмена - как реализовать?
Я
   МишельЛагранж
 
04.02.21 - 05:49
Нужны два обмена с разной периодичностью.
Базы две.
Как реализовать два плана между двумя базами? Как? Два плана РИБ между двумя базами? Или один РИБ, второй - не-РИБ? По РИБ получается, не-РИБ - непонятно пока, как делать.
Правила обмена грузить некуда, т.к. конфа отраслевая, нет механизма обработки правил обмена. Т.е. РИБ, например, пишется "вручную": в планах - регистрация, в коде - запуск.
Вот тут и проблема с не-РИБ - запускаются только РИБ-планы.
   Обработка
 
101 - 05.02.21 - 14:51
(98) Вот базу создал для тебя простую...
Опровеhжение (75)  === >>>>  https://yadi.sk/d/Gg489Ed-KylYIQ
   МишельЛагранж
 
102 - 05.02.21 - 14:52
(99) вот это уже по делу.
Примеров только не было в инете до последнего момента.
Столько искал, все про РИБ попадалось.
   МишельЛагранж
 
103 - 05.02.21 - 14:54
(101) ну, знаешь, мне и смотреть не надо - скажи только, как два главных узла назначил в одной базе?
И никаких "опровержений" и баз не нужно...
   ДенисЧ
 
104 - 05.02.21 - 14:59
"Примеров только не было"

Сколько раз этому человеку (ладно, пока будем называть его так) говорили "посмотри в типовых". А он упирался...
   МишельЛагранж
 
105 - 05.02.21 - 15:02
Вот и в реальности для всех нас теперь появился нормальный пример работы не-РИБ обмена (ПланОбмена без РИБ).
функция записи сообщения:
Процедура ЗаписатьСообщения() Экспорт
    
    // Сформировать имя временного файла

    ИмяФайла = КаталогВременныхФайлов() + ?(Прав(Каталог, 1) = "\","", "\") + "Message-" +
        СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + "-" + СокрЛП(Ссылка.Код) +
        ".xml";
        
    // Создать объект записи XML

    // *** ЗаписьXML-документов

    ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.ОткрытьФайл(ИмяФайла);
    ЗаписьXML.ЗаписатьОбъявлениеXML();

    // *** Инфраструктура сообщений

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

    // *** Механизм регистрации изменений

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

        ЗаписатьXML(ЗаписьXML, ВыборкаИзменений.Получить());
    КонецЦикла;

    ЗаписьСообщения.ЗакончитьЗапись();
    ЗаписьXML.Закрыть();
       
КонецПроцедуры

//функция чтения сообщения:

Процедура ПрочитатьСообщение() Экспорт

    // Сформировать имя файла

    ИмяФайла = КаталогВременныхФайлов() + ?(Прав(Каталог, 1) = "\", "", "\") +
        "Message-" + СокрЛП(Ссылка.Код) + "-" +
        СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + ".xml";
    Файл = Новый Файл(ИмяФайла);
    Если Не Файл.Существует() Тогда
        Возврат;
    КонецЕсли;
    
    // *** Чтение документов XML    

    // Попытаться открыть файл

    ЧтениеXML = Новый ЧтениеXML();
    Попытка 
        ЧтениеXML.ОткрытьФайл(ИмяФайла);
    Исключение 
        Возврат;
    КонецПопытки;
  
    // Загрузить из найденного файла

    // *** Инфраструктура сообщений

    ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();

    // Читать заголовок сообщения обмена данными – файла XML

    ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
      
    // Удаляем регистрацию изменений для узла отправителя сообщения.

    // *** Служба регистрации изменений

    ПланыОбмена.УдалитьРегистрациюИзменений(
        ЧтениеСообщения.Отправитель,
        ЧтениеСообщения.НомерПринятого
    );
    
    // Читаем данные из сообщения *** XML-сериализация

    Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
        // Читаем очередное значение 

        Данные = ПрочитатьXML(ЧтениеXML);
            
        // Записать полученные данные

        Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
        Данные.ОбменДанными.Загрузка = Истина;
        Данные.Записать();

    КонецЦикла;

    ЧтениеСообщения.ЗакончитьЧтение();
    ЧтениеXML.Закрыть();
    УдалитьФайлы(ИмяФайла);

КонецПроцедуры

Статья с полным примером и адекватным объяснением тут:
https://tokmakov.msk.ru/articles/item/21
   МишельЛагранж
 
106 - 05.02.21 - 15:04
(104) >> говорили "посмотри в типовых"
ты сам смотрел? нет.
Делал? нет.
Знал как? - ну так делается, примерно, как в РИБ.
Но поучаствовал в обсуждении)
   Фрэнки
 
107 - 05.02.21 - 15:05
как же ты зе.....
  1  2

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.