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

Как правильно организовать работу с планом обмена?

Как правильно организовать работу с планом обмена?
Я
   DTX 4th
 
18.09.20 - 12:24
Пишу модуль, который будет выгружать изменения номенклатуры на сайт.

Создал план обмена, добавил номенклатуру и справочник упаковок с авторегистрацией.

В момент выгрузки нужно понять номер последнего отправленного сообщения на сайт, выбрать все изменения после него, по этому списку получить список номенклатуры (выгружать надо измененную номенклатуру + номенклатуру, у который изменены упаковки).

В моей голове выглядит так:
1. Получаем номер последнего отправленного сообщения: N
2. Выгружаем все изменения от N + 1 и дальше
2.1. Получать изменения запросом или через ПрочитатьИзменения (или что там у плана обмена есть, не помню)?
2.2. Нужно иметь в виду, что в момент выгрузки могут появиться новые изменения, и важно не затереть их в следующем шаге
3. Выгружаем все это дело на сайт. Если сайт сказал, что он принял изменения, мы удаляем из плана обмена все эти изменения от N+1 до последнего на момент получения (с учетом 2.2.)
3.1. Каким образом это правильно сделать?

Для хранения номера последнего отправленного сообщения, если я правильно понимаю, отдельный регистр не нужно. Вроде в плане обмена можно хранить эту инфу.

Прокомментируйте пожалуйста, чтобы я понимал, куда двигаться дальше.
Спасибо
   ДенисЧ
 
1 - 18.09.20 - 12:26
А чем просто ВыбратьИзменения() не катит?
   DTX 4th
 
2 - 18.09.20 - 12:34
(1) Видимо, катит.
Года пол назад последний раз работал с планом обмена - уже успел все забыть.

Т.е. я в ВыбратьИзменения() передаю номер сообщения, которое сейчас будет выгружено. Откуда мне взять это номер?
И как потому удалить все изменения с этим номером? Что-то не вижу в СП
   Timon1405
 
3 - 18.09.20 - 12:37
читать "проф. разработка: Глава 19. Обмен данными" до полного просветления
   Web00001
 
4 - 18.09.20 - 12:37
(2)Там вроде как получить изменения и возвращает этот номер увеличивая его.
   Web00001
 
5 - 18.09.20 - 12:38
(3)+1 там очень подробно написано. Напиши на почту, кину в тебя pdfкой.
   VladZ
 
6 - 18.09.20 - 12:46
(0) "В моей голове выглядит так:" - корявенько всё выглядит в твое голове.

Должно быть так:
1. Получаем список зарегистрированных объектов.
2. Выгружаем.
3. В случае успешной загрузки - очищаем изменения по узлу.

Всё! В топку все заморочки с "номер последнего отправленного сообщения".
   DTX 4th
 
7 - 18.09.20 - 12:47
(3) Так тут инфы то на лист А4 в виде презентации.. Разве нет?

(4) Не, выборку возвращает. Нужно передавать номер сообщения, которым будут помечены выгружаемые данные

(5) Написал
   DTX 4th
 
8 - 18.09.20 - 12:48
(6) Ну конечно
Каким образом предлагаешь изменения по узлы очищать? Если по ссылкам, то см. пункт 2.2.
   ДенисЧ
 
9 - 18.09.20 - 13:05
ЗАчем читать профразработку? В СП есть

<НомерСообщения> (обязательный)
Тип: Число.
Номер сообщения обмена данными, в *который будут помещены выбранные изменения*.
   hhhh
 
10 - 18.09.20 - 13:07
(8) в типовых обменах всё это реализовано. И пункт 2.2 тоже. Зачем тебе свой велосипед придумывать?
   Dmitry1c
 
11 - 18.09.20 - 13:08
(6) угу, и теряем объекты, попавшие в план обмена за время выгрузки
   DTX 4th
 
12 - 18.09.20 - 13:12
(10) Да потому что типовой модуль выгрузки в битрикс - то еще извращение. Проще за пару часов что-то подобное наколбасить

(9) Все вижу, на запись доступно, спасибо
   hhhh
 
13 - 18.09.20 - 13:22
(12) это кажется что проще. А по факту сам еще больше извратишься в итоге. Проверено.
   DTX 4th
 
14 - 18.09.20 - 13:25
(13) Да я уже поковырял однажды обмен с битриксом. Плевался долго.
А тут с прогом битрикса обсудили, что подобная выгрузка не помешает.
Выбрать все из плана обмена, засунуть в JSON, отправить на сайт. Пару часов чистыми.
   VladZ
 
15 - 18.09.20 - 13:26
Упс. Сорян. Действительно, потеряются данные.
   zippygrill
 
16 - 18.09.20 - 13:31
(15)         ИначеЕсли ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки = 1 Тогда
            
            // Для всех изменений которые были в плане обмена отменяем регистрацию.

            ПланыОбмена.УдалитьРегистрациюИзменений(Элемент.Ключ, Элемент.Значение.НомерСообщения);
   DTX 4th
 
17 - 18.09.20 - 13:56
(16) То что нужно, спасибо

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