Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Работа плана обмена

Работа плана обмена
Я
   apdate by
 
13.07.21 - 15:59
Подскажите пожалуйста. я не очень хорошо понимаю логику плана обмена

если я удалю изменения не по номеру сообщения а по источнику тогда что бцдет если изменили какой либо источник который я сейчас удаляю?

он так же удалиться со всех сообщений?
   ДенисЧ
 
1 - 13.07.21 - 16:01
Что значит "удалю изменения по источнику"?
   apdate by
 
2 - 13.07.21 - 16:02
как правильно удалять изменения из плана обмена?
потом заметил так же что пока я не выполню ПланыОбмена.ВыбратьИзменения() , УзелОбъект = УзелОбмена.ПолучитьОбъект();
        УзелОбъект.НомерОтправленного = УзелОбъект.НомерОтправленного+1;
        УзелОбъект.Записать();


номера сообщения я не вижу 

а как только выполню это только тогда появляется номер сообщения

отсюда вопрос как быть в следующем случае когда 

например по каким то причинам обмен не прошел только по одной позиции товара а по все остальным прошел удачно но удаляю я по номеру а выходит что попытаться в следующий раз я уже не смогу обменяться?
   ДенисЧ
 
3 - 13.07.21 - 16:05
Чтобы удалить по номеру - тебе нужно обработать ответ от приёмника. А он приходит успешным тогда и только тогда, когда весь пакет загружен. Если хоть что-то ой - тады ой.
   apdate by
 
4 - 13.07.21 - 16:06
(1) в составе плана обмена только номенклатура

а следовательно при обмене если он прошел удачно тогда
выполняю ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена,Товар); где товар это ссылка на номенклатуру

а не номер сообщения в этом случае у меня в зарегистрированных остается этот товар и в следующем обмене я смогу повторить его выгрузку!


но я как то где то читал что если я выполняю этот метод ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена,Товар); не по номеру сообщения а по зарегеному товару и если существуют еще номера сообщений и там имеется этот товар то они все регистрации по этому товару я потеряю?
   apdate by
 
5 - 13.07.21 - 16:06
(3) у меня обмен идет не пакетом а по каждому товару
   ДенисЧ
 
6 - 13.07.21 - 16:07
А зачем тебе в 10 регистрациях один и тот же товар?
(5) Пакетом таки. А в пакете адын штюк.
   apdate by
 
7 - 13.07.21 - 16:07
+(5) но из за того что 1С тупит при проведении документов я переделываю и пытаюсь понять как сделать лучше
   ДенисЧ
 
8 - 13.07.21 - 16:07
Ну, это если ты штатным обменом делаешь, а не изобретаешь велосипед на тетраэдических колёсах.
   apdate by
 
9 - 13.07.21 - 16:09
(6) а не будет ли такого

например в 07 01 01 начался обмен товаром
продолжался он 15 сек но в 07 01 10 менеджер провел реализацию (соответвенно остаток этого товара уменьшился) а в 07 01 16 я выполнил ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена,Товар); что в итоге приводит к таму что при следующем обмене информации о том что остаток уменьшился не будет это так?
   apdate by
 
10 - 13.07.21 - 16:10
(8) нету штатного! это самописная конфига
   Сурьма
 
11 - 13.07.21 - 16:12
(9) Задумайся, зачем нужны номера сообщений, и почему изменения обычно удаляются с их учётом.
   apdate by
 
12 - 13.07.21 - 16:14
(11) чего ж тогда в типовой УТ в типовом обмене с сайтом реализовано именно отмена регистрации по товару а не по номеру сообщения? Для РБ если что УТ
   apdate by
 
13 - 13.07.21 - 16:17
(11) ок как быть если мне не нужно удалять все зарегистрированные объекты а только частично дабы после некоторого времени повторить обмен ими? возможно при обмене например выполнялся обмен и сервер
(приемник лег например) но обмен прошел удачно к примеру 9 из 10 товаров

нафига мне поновой пихать в обмен 10 товаров когда мне нужно обменяться толь одним?
   apdate by
 
14 - 13.07.21 - 16:19
будет ли верным если я буду делать следующее

после обмена даже неудачного буду повторно регить необходимые обьекты к обмену увеличивая тем самым номер сообщения далее после этих действий удалять регистрацию по номеру сообщения
   Сурьма
 
15 - 13.07.21 - 16:22
(12) Потому, что если товар уже выгружен и принят, то смысла его отправлять повторно никакого, если его реквизиты не менялись.
   Сурьма
 
16 - 13.07.21 - 16:22
(14) Вы почитайте хоть немного теории, а то как-то на такое отвечать нет желания.
   apdate by
 
17 - 13.07.21 - 16:23
(11) + (15) я потерял логику
   apdate by
 
18 - 13.07.21 - 16:24
(16) то есть по Вашему верно будет не удалять всю регистрацию а повторно затем обмениваться всем пакетом?
   apdate by
 
19 - 13.07.21 - 16:25
подскажите пожалуйста для каких целей необходимо указывать номер сообщения и в каких случаях указывают ссылку? при ПланыОбмена.УдалитьРегистрациюИзменений()
   Сурьма
 
20 - 13.07.21 - 16:25
(18) Если обмен успешный, то удалить регистрацию по номеру сообщения, а остальное отправить следующим сообщением.
   hhhh
 
21 - 13.07.21 - 16:27
(14) ты занимаешься невероятной хренью. Отправляй снова 10 объектов и всё. Про теорию вероятности слышал?  Ситуация, о которой пишешь, может случиться раз в год. И из-за этого ты собираешся чего-то там изобрести, что -то невероятное, с квадратными колесами?
   apdate by
 
22 - 13.07.21 - 16:27
(20) а если ситуация когда 9 измененных обьектов удачно ушли в приемник а 10 не ушел по тем или инным причинам

Вы всегда пихаете в обмен Опять весь пакет?

а если трафик платный то как быть?
   apdate by
 
23 - 13.07.21 - 16:28
(21) -> (22)
   apdate by
 
24 - 13.07.21 - 16:29
я из за трафик ане могу выполнять обмен всеми пакетами!  водном пакете слишком много данных особенно изображения товаров и изображения вариантов товаров
там на один товар где то 20 метров )
   Сурьма
 
25 - 13.07.21 - 16:29
(22) Напиши тогда свой обмен с нуля, и не пудри людям мозги.
   fisher
 
26 - 13.07.21 - 16:32
(19) УдалитьРегистрациюИзменений юзают только если уже есть гарантии доставки. При обмене с квитированием УдалитьРегистрациюСообщений не используется. В этом случае удаление происходит автоматически при чтении ответного пакета обмена - номер принятого приемником предыдущего пакета вычитывается из заголовка сообщения обмена и в источнике удаляются все изменения, номер пакета отправки которого меньше либо равен подтвержденному. А ВыбратьИзменения() фиксирует в таблице изменений номер пакета, с которыми эти изменения выгружаются. В итоге изменения не будут удалены до тех пор, пока не получено подтверждение их загрузки.
   apdate by
 
27 - 13.07.21 - 16:32
(25) что я и сделал но теперь переписываю его и хочу детально рассмотреть варианты

отсюда и спрашиваю если я выполняю ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена,Товар); указывая не номер сообщения а ссылку то если произойдет ситуация описанная в (9) то все изменения удаляться ил инет?
   apdate by
 
28 - 13.07.21 - 16:34
(26) у меня обмен если что не с 1С а 1С TU сайт даже не сайт а там сервис на шарпе написанный крутится
   Сурьма
 
29 - 13.07.21 - 16:38
(27) А зачем тебе использовать стандартные планы обмена и регистрацию изменений, если ты свой обмен написал?
   hhhh
 
30 - 13.07.21 - 16:38
(22) похрен на платный. Ты что не понял про теорию вероятностей?Фирма тебе платит зарплату, пока ты будешь мудохаться с этими объектами фирма из-за тебя потеряет десятки тысяч рублей. А из-за трафика он потеряет 10 рублей. Сравни суммы.
 
 
   Kassern
 
31 - 13.07.21 - 16:40
(9) для этого и есть номер сообщения. все изменения, которые делаются в момент выгрузки, регистрируются уже под новым номером сообщения.
   серый КТУЛХУ
 
32 - 13.07.21 - 16:42
тебе уже неоднократно объясняли - у тебя в консерватории бардак.
документ ни при чем.
сущность(товары) регистрируются к обмену по факту изменения и с учетом доп.условий в подписке.
сущность(документ) регистрируется по факту его изменения и с учетом доп.условий в подписке.
и то и то выгружается в нужном согласно одним обработчикам правил обмена(!) - и принимаются в приемнике согласно другим обработчикам правил обмена.
КАК это все принятое в приемнике показывать/учитывать/использовать/итп - дело приемника.
регистрировать-передавать-принимать измененную сущность(документ) кусочно - глупость несусветная, т.к. получиться может так: вот эту строку документа не выгружаем потому что у товара реквизит неправильный и документ уехал бехз этой строки - отредактировали этот товар (не документ!) - товар (не документ!) зарегистрировался и поехал в приемник - и в приемнке, в котором теперь бы должна быть строка и по этому товару - нету тупо потому что тот документ не менялся в источнике и никогда не изменится.
"где деньг, зин?" (с)
   Kassern
 
33 - 13.07.21 - 16:42
(31) вы сделали выгрузку, если все хорошо, то удалили все изменения с данным номером сообщения, что в этом сложного?
   серый КТУЛХУ
 
34 - 13.07.21 - 16:48
(33): ну он и тут хочет кусками, чтобы "не захлОмлять" (орфография сохранена)
   Kassern
 
35 - 13.07.21 - 16:50
(33) зачем в цикле к примеру для 100тыс товаров обходить их всех и каждый удалять из узла)) Когда это делается 1 раз с указанием номера сообщения.
   Kassern
 
36 - 13.07.21 - 16:51
(34) возможно ТС уже осознал свои косяки в реализации и сделает нормальную регистрацию объектов и выгрузку/очистку по номеру сообщения)
   fisher
 
37 - 13.07.21 - 16:53
(28) Тогда так. Из справки по УдалитьРегистрациюИзменений():
"Если в качестве первого параметра указан одиночный узел, то в параметре может быть указан номер сообщения. В этом случае метод УдалитьРегистрациюИзменений удаляет из всех таблиц регистрации изменений все записи относящиеся к указанному узлу, у которых номер сообщения меньше или равен значению второго параметра."
   серый КТУЛХУ
 
38 - 13.07.21 - 17:41
(36): да там наверное ему и не надо будет этого всего сложного. ему ведь по сути не надо "ответок" ждать, считается что все что отвесили и передали - доехало и алё. не?
если так - то там тупо обработкой выгружать все и тупо зачищать всё.
ну или если не так - то смотреть что уехало - то и вычищать, это все тоже не сложно.
   Kassern
 
39 - 13.07.21 - 17:43
(38) а что делать с теми позициями, по которым произошли изменения в период выгрузки? В этом случае, после выгрузки изменения по ним очистятся. Поэтому и нужны номера сообщений.
   серый КТУЛХУ
 
40 - 13.07.21 - 17:48
(39): ну там в последней строке так и сказано: "что уехало - то и вычищать". то же самое - просто другими словами...
   Kassern
 
41 - 13.07.21 - 17:57
(40) нда, вы выгрузили товар, у него на момент выгрузки было 10шт в наличии, пока формируете xml/json файлик остаток уже поменялся у это позиции. А вы возьмете и бахните изменения по данному товару. В итоге в следующей выгрузке его уже не будет, а это повлечет кучу косяков в дальнейшем.
   Kassern
 
42 - 13.07.21 - 17:58
(41) в общем при постоянных обменах с короткой периодичностью имхо надо юзать функционал с номерами сообщений, чтобы таких коллизий не было
   серый КТУЛХУ
 
43 - 13.07.21 - 18:32
(41): сфиговли? например перед формированием грохну - если надо запишет по новой (пока формирую и передаю), это записанное до след.раза доживет.
(42): по слогам. "по номеру обмена" - это и один из способов упоминаемого в (38) "что уехало - то и вычищать"
   Вафель
 
44 - 13.07.21 - 18:36
А если грохнешь и не сформируешь?
   серый КТУЛХУ
 
45 - 13.07.21 - 18:38
(44): а я в тразакцию заверну, не сформирую - откачу. ы.


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