Дубли в ЦБ РИБ

1. iwannafly90 20.04.18 11:52 Сейчас в теме
Всем привет.
Используется самописная база на основе БСП. В ней организован РИБ на 300+ узлов (раз в неделю, обычно, добавляется еще по узлу). На каждом узле работает один человек.
Во время работы, пользователь создает документ, указывает разнообразные фильтры и заполняет документ номенклатурой. Номенклатура тянется из ДРУГОЙ БАЗЫ (база не на 1С). Если номенклатуры на узле нет, то создается новый элемент справочника. Далее, при синхронизации с ЦБ, она переносится в ЦБ (т.е. там также создается данная номенклатура).
Проблема в том, что одна и та же номенклатура может быть создана на разных узлах и, соответственно, при синхронизации с ЦБ в ЦБ возникают дубли.

Вариант с созданием номенклатуры только в ЦБ не подходит, т.к. новая номенклатура изначально появляется в другой базе, появиться она там может в любой момент и оперативно отправить новые номенклатуры на узлы не получится.

Какие есть еще варианты для решения данной проблемы?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dream_kz 129 20.04.18 12:03 Сейчас в теме
(1) Есть какое-нибудь поле, по которому можно однозначно идентифицировать номенклатуру? название/артикул/штрихкод? Если да, то поиском и заменой дублей это все чистить
5. iwannafly90 20.04.18 12:18 Сейчас в теме
(2) Поле, однозначано идентифицирующее номенклатуру есть. Но замена дублей, думаю, не поможет. Т.к. собьются Гуиды и тогда дубли пойдут уже на узлах. Плюс хотелось бы решения, которое избавило от появления дублей, в принципе.
6. Dream_kz 129 20.04.18 12:22 Сейчас в теме
(5) Что значит собьются? В документе ссылка на номенклатуру будет подменена, сама номенклатура будет помечена на удаление, после это все летит в узел, там помеченную на удалению номенклатуру уже выбирать не должны
7. iwannafly90 20.04.18 12:27 Сейчас в теме
(6) Да, согласен. Немного затупил))
Замена дублей поможет избавиться от этих дублей. Но проблему того, что они появляются это не исправит.
9. Dream_kz 129 20.04.18 12:35 Сейчас в теме
(7) Если бы не РИБ, можно было бы правила обмена сделать, чтобы поиск осуществлялся не только по ссылке, но и по полю поиска

Как на узлах с оперативным доступом к интернету? Можно конечно сделать вундервафлю на веб-сервисах, как предлагают выше, но если интернет по карточкам, то только костылями типа замены дублей
10. spezc 795 20.04.18 12:36 Сейчас в теме
(9) ну если все ПБ лезут в ДРУГУЮ базу, есть подозрение, что она одна и в инете.
11. Dream_kz 129 20.04.18 12:39 Сейчас в теме
(10) Могут быть всякие справочники запчастей, которые устанавливаются локально, и периодически обновляются, но это так, мысли вслух
13. iwannafly90 20.04.18 12:42 Сейчас в теме
(10) база не в инете, она на сервере. У пользователей на компах стоят СiscoConnect, которые позволяют подключиться к сети компании и, соответственно, к базе на сервере и получить из нее данные.
14. Dream_kz 129 20.04.18 12:47 Сейчас в теме
(13) А на сервере 1С еще случаем не крутится? Самый простой вариант организовать работу через веб-клиенты (с точки зрения прикладной логики, но не простоты организации)
18. iwannafly90 20.04.18 12:56 Сейчас в теме
(14) конкретно на том сервере, откуда получается номенклатура, 1с нет.
12. iwannafly90 20.04.18 12:40 Сейчас в теме
(9) оперативный доступ в интернет у пользователей есть
15. iwannafly90 20.04.18 12:48 Сейчас в теме
(9) по идее, можно и к РИБ привязать правила обмена, только придется немного изменить код. На создание узлов, регистрацию изменений и пр. это не должно повлиять, а передача данных будет идти по правилам.
Но тут возникнет проблема передачи обновлений на узлы, в случае изменения ЦБ (например, изменение какого-то текста запроса или куска кода в ЦБ), т.к. по правилам обмена, насколько я понимаю, обновления им не передать.
16. spezc 795 20.04.18 12:50 Сейчас в теме
17. iwannafly90 20.04.18 12:55 Сейчас в теме
(16) зачем использовать правила обмена или зачем передавать обновления?)
19. spezc 795 20.04.18 12:59 Сейчас в теме
(17) наверно я просто ход мысли потерял.

вообщем как вариант - можно еще сделать отдельный план обмена для номенклатуры и обмениваться только ей. правила обмена не нужны. просто записываете элемент в хмл при отдаче и достаете из хмл и записываете при приеме.

Мы так делали, когда УПП обменивалась с 20 узлами раз в час, а номенлатура бегала каждые 5 мин.
3. spezc 795 20.04.18 12:08 Сейчас в теме
Без централизации никуда. Попробуйте такой вариант.

Сделайте в ЦБ хттп-сервис, который отвечает за общение с ДРУГОЙ БАЗОЙ:
1. ПБ обращается к ЦБ со списоком кодов (или артикулов, или любым другим набором, по которому однозначно определяется номенклатура) к этому хттп-сервису.
2. ЦБ получив список кодов номенклатуры, смотрит у себя в базе. Все что не найдено - запрашивается из ДРУГОЙ БАЗЫ и создаются новые элементы в ЦБ.
3. ЦБ возвращает в ПБ 2 набора ссылок. В первом наборе - которые уже были в базе, во втором - вновь созданные (+ доп инф: наименование, цена и прочее).
4. ПБ получив от хттп-сервиса наборы ссылок - использует их по назанчению. А для второго набора проводит еще создание новых элементов (используя ссылки из второго набора).
4. spezc 795 20.04.18 12:10 Сейчас в теме
т.е. новые элементы одновременно записываются в двух базах - ЦБ и ПБ. Но так как при записи в ПБ используются ссылки на уже созданные элементы в ЦБ - при обмене задвоения не произойдет.
8. kudlach 13 20.04.18 12:32 Сейчас в теме
Как уже заметили - требуется единая точка ввода и контроля. Это у вас ЦБ.
Для ввода новой позиции - отдельная форма, которая лезет с параметрами в ЦБ любым доступным способом.
в ЦБ проверка. Если такой элемент есть - возврат Структуры данных из ЦБ, включая ГУИД,
с ним создание и запись из этой формы в ПБ с полученным ГУИД
Если элемент отсутствует - в ЦБ создание элемента и возврат все той же структуры параметров включая ГУИД,
далее на ПБ действия те же.
Оставьте свое сообщение

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