Настройка обмена. Нужны советы

1. user5300 1019 03.11.20 16:39 Сейчас в теме
Привет друзья, помогите реализовать обмен между двумя нетиповыми базами..

Имеются 2 базы, (не типовые), нужен небольшой обмен 2-3 справочников и документов, реализовал с помощью Web-Сервисов и Универсальным обменом данных XML,. Регистрирую изменения с помощью правил обмена и выгружаю измененные объекты.
В теории всё работает (и в копии).
Т.Е. выгружаются все объекты - регистрация в плане обмена удаляется.
Но если по какой либо причине не удалось загрузить файлы в приемнике (Возникла ошибка, отключили свет\интернет и тд) - файлы не смогут загрузиться повторно, и в плане обмена регистрация уже будет снята...

Можете подсказать как лучше настроить ? или направить в нужном направлении ...

Обмен, можно сказать, односторонний.
Есть мысли подключиться к базе и выгрузить файлы первый раз, и второй отправить обратно эти же файлы для удаления регистрации изменения )) Но это не очень оптимальное решение
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. serg33rus 28 04.11.20 09:53 Сейчас в теме
(1) Попробовать перейти на http-сервисы и json. Если данные в приемнике загрузились вернет код 200 и все ОК. Если нет, сформировать код с ошибкой. Если ошибка, значит регистрацию в плане обмена не удалять. Правда что делать потом не очень ясно. Но это полностью переделывать обмен. Хотя по мне http и json как-то интереснее, чем XML и веб-сервисы.
А обмен можно сделать с смешнее. Источник по http уведомляет что есть изменения данных и где, а приемник в ответ запрашивает эти данные. Тогда наверно вообще можно от планов обмена уйти. Это уже так, размышления как можно сделать.
9. user5300 1019 04.11.20 10:19 Сейчас в теме
(7)
Источник по http уведомляет что есть изменения данных и где

можно по подробнее ?) Как узнать что есть изменения без регистрации плана обмена ? После каждого изменения\нового документа - отправлять запрос на обновления в базу1 или я не правильно понял ?)
10. FatPanzer 04.11.20 10:33 Сейчас в теме
(9) Нет, после каждого изменения документа записывать его ссылку в специальную таблицу (либо в таблицу регистрации, либо в свой специальный РС).
11. user5300 1019 04.11.20 11:12 Сейчас в теме
12. serg33rus 28 04.11.20 17:07 Сейчас в теме
(9) Ну вариантов тут много. Да, самый простой - это после изменения/создания документа тут же отправлять запрос/уведомление на сторону-приемник. Что делать на приемнике, сразу получать данные или где-то их накопить и с какой-то периодичностью забирать, тут уже есть варианты. И в данном случае можно на этапе получения данных явно указать что они нормально легли. Либо нет. Что делать с информацией об ошибке при получении данных, это уже зависит от постановки задачи. Может это и не лучший вариант. Но вполне себе вариант.
Кстати, он гораздо гибче. В том плане, что можно реализовать какие-то хитрые алгоритмы обработки полученной информации. Т.е. не просто синхронизация, а с какими-то плюшками. Это не всегда нужно конечно, но иногда очень даже полезно.
user5300; +1 Ответить
2. VladimirB 16 03.11.20 16:46 Сейчас в теме
Оформи транзакцию. В случае отключения света, в базе ничего не будет.
3. user5300 1019 03.11.20 16:53 Сейчас в теме
(2)Нет, смотри,
база1 подключается к базе2 по WS.
там формируется файл xml (стандартные процедуры универсального обмена xml)
и регистрация Плана обмена удаляется сразу ( тоже типовой механизм)
и формально файл выгружен и возвращается обратно в базу1
(Вот если при чтении произойдет ошибка ) - данные потеряются

Даже не отключение света скорее, а какая-нибудь банальная ошибка пользователя в документе например (не правильно заполнил реквизит)
4. FatPanzer 03.11.20 17:04 Сейчас в теме
(3) Ну тогда используйте трехфакторную структуру.
1. Файл выгрузки сохраняется в отдельный РС, а в Базу 1 возвращается его адрес (идентификатор в регистре), База 2 хранит у себя идентификаторы.
2. База 1 запрашивает по необработанным идентификаторам состав файла.
3. После успешной обработки файла База1 подает сигнал в Базу2 о необходимости удалить файл (успешная обработка).
user5300; +1 Ответить
5. user5300 1019 04.11.20 07:55 Сейчас в теме
(4)Как вариант, спасибо, попробую так
6. user5300 1019 04.11.20 08:07 Сейчас в теме
(4) Хотя есть нюанс )
Допустим файл сфомировался с ошибкой, (допустим документ "Установка цен", пользователь не указал отбор и выгрузилось без ошибок но 2 документа с одной номенклатурой)
По сути фал сохранен, но база1 не сможет его загрузить и будет ругаться ...
8. FatPanzer 04.11.20 10:10 Сейчас в теме
(6) Значит в п.3 можно отправлять информацию о неудачной загрузке конкретного документа, и База2 регистрирует этот документ к повторной отправке.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот