Имя: Пароль:
1C
1С v8
Выгрузка через ПланОбмена
0 Csar
 
14.08.13
14:39
Еще раз добрый день.
Возникла неприятная ситуация. дело в том, что у меня ПланОбмена настроен на изменения определенного вида документов. Их изменения "накапливаются" в этом ПланеОбмена и далее документы должны выгружаться в файл. Все хорошо, но после того как документы выгружаются, то в ПланеОбмена не присваивается им НомерОтправленного. Т.е. в запросе к ТаблицеИзменений этого типа документов висят документы, которые выгрузились, но НомерСообщения не проставляется, т.е. Null. Мне казалось, что он автоматически должен присваиваться как последний НомерСообщения + 1. Однако номера в таблице нету. Подскажите, пожалуйста, что нужно для автоматического указания номера в таблицеИзменений? Обен односторонний, т.е. только выгрузка.
PS частично тема поднималась тут v8: ПланыОбмена.УдалитьРегистрациюИзменений, но в итоге вылез этот вопрос.
1 Csar
 
14.08.13
14:45
На всякий случай напишу, что выгружаю через "УниверсальныйОбменДаннымиXML", к которому подцепляю узелОбмена в качестве отбора документов.
2 rozer76
 
14.08.13
14:49
потому-что "...через УниверсальныйОбменДаннымиXML"
3 rozer76
 
14.08.13
14:51
+(2) т.е. "УниверсальныйОбменДаннымиXML" только читает изменения и номера не изменяет
4 Csar
 
14.08.13
14:53
(2) ОК, а как мне в выгруженные документы в таблицу изменений вписать номерСообщения?
По идее я могу из плана обмена получить документы, которые туда занеслись. А потом по их ссылкам запросом посмотреть есть ли номер и вручную туда вписать если этого номера нету? Есть ли более пряморукий способ?
5 Csar
 
14.08.13
15:24
Неужели никто не знает как присвоить номер сообщения в таблицу изменений выгруженных документов?
6 Csar
 
14.08.13
15:31
+ (4) не могу понять как принудительно вписать номер в таблицу изменений. в запросе вижу таблицу, а обратиться к ним, что бы вписать номер не могу.
7 rozer76
 
14.08.13
15:32
руками можно конечно для ПланОбменаСсылка, например Узел.НомерОтправленного=10 и Узел.НомерПринятого=9. Но я так понял вы хотите двухсторонний обмен завязать но тогда лучше или БСП использовать или "обертку" для "УниверсальныйОбменДаннымиXML" на выгрузку:
1) сначала читаете изменения из плана
2) через "УниверсальныйОбменДаннымиXML" выгружаете инфу
3) "номер отправленного" и "номер принятого" -  пишите значение в параметр (через КД) в вашу XML-схему
и загрузку:
1) через "УниверсальныйОбменДаннымиXML" читаете файл и значение параметра "номер принятого" - удаляете регистрацию в плане обмена для отправителя
2) загружаете инфу
8 Csar
 
14.08.13
15:39
(7) про "руками" я делал так тут v8: ПланыОбмена.УдалитьРегистрациюИзменений
В запросе смотрел - Номера корректно отображаются после выгрузки, т.е. НомерОтправленного увеличивается на единицу после выгрузки.
9 Csar
 
14.08.13
15:43
(7) У меня односторонний обмен - из одной в другую. Но регистрацию удаляю в случае если нет файлов выгрузки в папке, куда выгружается файл обмена. Т.е. принцип такой - выгрузил файл Узел.НомерОтправленного=10 и Узел.НомерПринятого=9.
Перед следующей выгрузкой посмотрел нет ли файлов выгрузки - нету, значит Узел.НомерОтправленного=10 и Узел.НомерПринятого=10 + удаление регистрации с номером 10. Но проблема в том, что изменения не подпсываются номерами, а остаются безномерными и посему мне не удалить регистрацию выгруженных объектов.
10 Csar
 
14.08.13
15:45
(7) Из базы-источника выгружаю, в базу-приемник загружаю. В таком случае не понимаю предложенного вами алгоритма. Ведь обратной связи то нету.
11 rozer76
 
14.08.13
15:47
(10)почему нет? В одной обработки и загрузка и выгрузка
12 rozer76
 
14.08.13
15:48
(9) >>Перед следующей выгрузкой посмотрел нет ли файлов выгрузки - нету, значит Узел.НомерОтправленного=10 и Узел.НомерПринятого=10  

это оч криво и не надежно ИМХО
13 Csar
 
14.08.13
15:50
(11) так проблемы определиться какого номера удалять регистрацию нет. проблема в том, что изменения объектов фиксируются планомОбмена без номеров и поэтому регистрация не удаляется при указании любого номера! Получается, что вопрос именно в том, что бы регистрировать изменения документов и вписывать туда номер.
14 Maxus43
 
14.08.13
15:51
я ж писал, выбратьИзменения юзай, он сам проставит номера в таблицах изменений, да ещё и вернёт тебе выборку их. Потом ЗаписатьИзменения - сделается файлик.
После загрузки в левую базу - пошли ответ, мол загружен такой-то номер сообщения, а потом уж удалишь своим кодом регистрацию
15 Csar
 
14.08.13
15:52
(12) Согласен, но, это пока костыль. Временный, я надеюсь=) Но даже он не справляется с проблемой не присваивания номера изменениям в (13)
16 Maxus43
 
14.08.13
15:52
в СП пример есть даже, как правильно более менее создавать файл выгрузки:

ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(ИмяФайла);
ЗаписьСообщения.НачатьЗапись(Запись, Узел);
Выб = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель,
        ЗаписьСообщения.НомерСообщения);
Пока Выб.Следующий() Цикл
    Объект = Выб.Получить();
    ЗаписатьXML(Запись, Объект);
КонецЦикла;
ЗаписьСообщения.ЗакончитьЗапись();
Запись.Закрыть();
17 Maxus43
 
14.08.13
15:53
после этого у тебя и файлик, и номера будут. читай на здоровье
18 Csar
 
14.08.13
15:56
(16) Супер, пока сочинял этот код вы уже написали его тут. Получается, что у меня еще и выгрузка будет, правда ввиду того, что я не смогу ее прочитать в другой базе, то она бесполезна получается? Не смогу корректно прочитать, т.к. выгрузка из УПП (что то типа того, самописное), а загрузка в бухню 2.0.
19 rozer76
 
14.08.13
16:02
(18) это прокатит если у вас РИБ например т.е. "платформенная" сериализация объекта и обратно - только для одинаковых конф. а так смотри (7)
20 Csar
 
14.08.13
16:03
(19) (17) Большое спасибо! Вроде светлый путь виднеется на горизонте.
21 Maxus43
 
14.08.13
16:05
если конфы разные - то конечно выгрузка другая будет, но суть таже - выбираем изменения (проставляются номера) - и делаем с выборкой чего хочется
22 rozer76
 
14.08.13
16:06
+(18) а зачем в таком случае вообще номера сообщений?
просто делай "УниверсальныйОбменДаннымиXML" (лучще обмен по COM если в одной сети) и поставь "изменение регистр. узлов"=Удалить регистрацию только для выгруженных и все..
23 Csar
 
14.08.13
16:11
(22) а где такая опция "изменение регистр. узлов"?
24 rozer76
 
14.08.13
16:32
(23) закладка дополнительно
25 Csar
 
14.08.13
16:34
(24) сорри, за глупые вопросы, но эта вкладка на какой объекте? Я ни в плане обмена, ни в документе не нашел ничего подобного.
26 Csar
 
14.08.13
17:55
(25) нашел =)
Спасибо огромное!
AdBlock убивает бесплатный контент. 1Сергей