Имя: Пароль:
1C
1С v8
Работа плана обмена
,
0 apdate by
 
13.07.21
15:59
Подскажите пожалуйста. я не очень хорошо понимаю логику плана обмена

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

он так же удалиться со всех сообщений?
1 ДенисЧ
 
13.07.21
16:01
Что значит "удалю изменения по источнику"?
2 apdate by
 
13.07.21
16:02
как правильно удалять изменения из плана обмена?

потом заметил так же что пока я не выполню ПланыОбмена.ВыбратьИзменения() , УзелОбъект = УзелОбмена.ПолучитьОбъект();
        УзелОбъект.НомерОтправленного = УзелОбъект.НомерОтправленного+1;
        УзелОбъект.Записать();


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

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

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

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

а следовательно при обмене если он прошел удачно тогда

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

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


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

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

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

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

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

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

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