Имя: Пароль:
1C
1С v8
Как сериализовать документ по Правилам выгрузки?
,
0 PaulMuller
 
24.04.19
16:04
Стала задачка сравнивать документы в разных базах по Com соединению. Для этого сериализирую фабрикой XDTO документ в источнике и приемнике. Между базами настроен обмен по правилам, следовательно сериализированный объект на базе источнике НУЖНО сериализовать с применением правил конвертации. Ну или как то-так.

Вот так вот получаю строки:

        SB_XMLWriter         = SourceBase.NewObject("XMLWriter");
    SB_XDTOSerializer     = SourceBase.NewObject("XDTOSerializer",SourceBase.XDTOFactory);
    SB_XMLWriter.SetString();
    SB_XDTOSerializer.WriteXML(SB_XMLWriter, SourceBaseElementObject);
    SB_RESULT             = SB_XMLWriter.Close();    
    
// Тута нужно не просто оригинал документа сериализовать, а пережевать его правилами конвертации, а потом сериализовать
    RB_XMLWriter        = new XMLWriter;
    RB_XDTOSerializer      = new XDTOSerializer(XDTOFactory);
    RB_XMLWriter.SetString();
    RB_XDTOSerializer.WriteXML(RB_XMLWriter, ReceiverBaseElementObject);
    RB_RESULT             = RB_XMLWriter.Close();
    
Правила перед выгрузкой меняют суммы, валюты, и на данный момент сравнение без учета правил показывают что эти поля отличаются. Поэтому нужно пережевать этот объект правилами обмена.

Есть вариант создавать файл выгрузки универсальной обработкой обмена и с него вытаскивать готовенький XMLузел, но есть хотелка не прибегать к привязке к этой обработке, по возможности, и сделать "красивее", лаконичнее.

Внимание вопросы:

1) Правила конвертации можно использовать только в среде УниверсальногоОбменаДаннымиХМЛ или есть еще как-то?
2) Может кто использовал экспортные процедуры УниверсальногоОбменаДаннымиХМЛ для частных задач?
3) Может есть какие-то другие программные ресурсы для подобных задач, или подходы к ним?
4)  Помогите советом в общем. Совсем не знаю с какой стороны подойти к решению. Гуглить такое сложновато, по ключевым словам кидает совсем другого характера статьи.
1 Ёпрст
 
24.04.19
16:27
слит данные из этих баз в одну общую и там делать консолидированный отчет
2 PaulMuller
 
24.04.19
16:43
(1) Базы очень разные, так просто это не сделать, в частности сравнение нужно для тестирования обмена, если собирать эти данные на второй базе делая обмен, то сравнение будет некорректным, + вторая база закрытая для изменений.
3 PaulMuller
 
24.04.19
16:45
Мне бы просто способ посмотреть какой объект(после применений правил выгрузки) отправляется на вторую базу и какой пришел в итоге.
4 Ёпрст
 
24.04.19
16:55
(3) дык в режиме отладки проверяй свои правила обмена
5 PaulMuller
 
24.04.19
17:15
(4) Ну окей, правила обмена проверил, все гут. Завтра сотрудник скажет "Некоторые документы мигрировали без ПТУ" и что-бы найти подобные документы нужно сравнить базы. Или еще, на второй базе поменяли документ, а потом во время миграции он затрет измененные данные на второй базе, а этой обработкой можно такое отследить заранее.
6 fisher
 
24.04.19
17:17
ИМХО, или самому копать 2) или ждать того, кто это уже делал.
7 PaulMuller
 
24.04.19
17:19
(4) Многое в обмене зависит не только от самих правил, а и от прав пользователей, разными проверками запрета периодов миграции и проведения документов.