16.07.2015, 12:50 | #1 |
Участник
|
Уважаемые Коллеги, снова прошу вашей помощи.
Появилась задача: автоматизировать обмен данными между нашей БД и БД у удаленного "партнера". Этот партнер является нашим диллером. У него (как и у нас) стоит НАВ 5.01. Они формируют у себя заказы на покупку (т.е. заполняют таблицы 38 и 39). Эти данные (в виде XML-файла) передаются нам. Мы их должны импортировать в НАВ, сформировав из них заказы на продажу (т.е. заполнить таблицы 36 и 37 соответственно). От нас к ним будут передаваться окончательно оформленные заказы на продажу (т.е. мы обрабатываем, полученные от них заказы: меняем количество/ассортимент (маловероятно, но возможно), привязываем серийные номера (товар практически весь с серийниками, т.о. задействованы будут Т6504 и 337), определяем дату отгрузки товара). Прим.: полученные от диллера данные будут записываться не напрямую в Т36/37, а в промежуточную таблицу Теперь вопросы: 1) предполагается организовать такой обмен через XML-port. Разумно? или лучше использовать другой формат передачи данных? (через год мы планируем перейти на НАВ 2015, т.е. Dataport использовать нежелательно) 2) Как посоветуете лучше сделать: 2 XML-порта (один для импорта, другой для экспорта) или можно/нужно совместить обе операции в одном? 3) Может у кого есть идеи, как организовать описанный процесс более оптимально/с наименьшими затратами? |
|
16.07.2015, 14:56 | #2 |
Участник
|
У нас долгое время обмен работал через стороннюю утилиту XML-DEM (http://www.intant.ru/Trends/System/s...grationIS.aspx), которая представляет собой ряд объектов нава (кодюниты, таблицы, формы).
Конешно она совсем не обязательна и можно все сделать через xml-port, но имхо тут есть 2 минуса (почему мы не стали так делать): 1. Занимает сессию (лицензию). 2. Нельзя обработать произвольную ошибку, в случае возникновения вешается намертво. Причем у нас потоков было много и если вешался 1, то он вешал все, а разбрасывать 1 поток - 1 сессия у нас лицензий не хватило) Правда у нас старый нав стоит, не знаю как в 5ом это актуально... мы в конце концов свою программу (внешнюю, на делфи) написали для загрузки и выгрузки данных. Я к тому, что если у вас ограниченное количество лицензий или 2я проблема остается актуальной, то лучше свое ПО. |
|
16.07.2015, 14:57 | #3 |
Участник
|
.
|
|
16.07.2015, 15:05 | #4 |
Участник
|
Поскольку раньше с XML дело иметь не приходилось и материя для меня несколько новая, то и впоросы будут, возможно глупые, но тем не менее
Пыталась сделать экспорт Т38. Это поля порта: Purchase_Header Element Table Purchase Header(Purchase Header) Document_Type Element Field Purchase Header:ocument Type Buy-from_Vend Element Field Purchase Header::Buy-from Vendor No. No. Element Field Purchase Header::No. .... Purchase_Line Element Table Purchase Line(Purchase Line) Line_No. Element Field Purchase Line::Line No. Type Element Field Purchase Line::Type No. Element Field Purchase Line::No. Descrip Element Field Purchase Line:escription Amount Element Field Purchase Line::Unit Cost (LCY) Так он вызывается: Код: T38.SETFILTER("Buy-from Vendor No.",'75102'); TestFile.CREATE('C:\TEMP\TestxmlPort.xml'); TestFile.CREATEOUTSTREAM(TestOutStream); XMLPORT.EXPORT(50000,TestOutStream,T38); TestFile.CLOSE; Где копать, подскажите? |
|
16.07.2015, 15:20 | #5 |
Участник
|
Такой уточняющий вопрос, не про XML. На сколько вы с вашим "партнером" доверяете друг другу? Может имеет смысл слинковать ваши SQL сервера и сделать обмен на триггерах или job'ах SQL сервера? Это точно быстрее будет чем XML.
А по поводу XML-порта мне кажется вам придется бегать по записям и выгружать кучу файликов. |
|
17.07.2015, 14:00 | #6 |
Участник
|
У нас кастомная доработка на связке полей и таблиц Нава с запросами SQL сервера (а-ля XML-DEM, только через ADO) и синхронизация таблиц через фиксацию последнего синхронизированного таймстампа с таблицы.
По сравнению с XML-DEM громадный плюс - любая связанная таблица (будь то справочник по внешнего ключу или строки документа при синхронизации заголовка) доступна сразу через рекурсивный вызов то же процедуры синхронизации. По сравнению синхронизацией через сторонние приложения или чистый SQL - работают все родные валидэйты. Грубо говоря настраивается синхронизация, в интерфейс выставляются "синхронизируй заказы продажи", далее запускается импорт заголовков где таймастамп изменился со времени последнего импорта, а все связанные таблицы синхронизируются автоматически. |
|
17.07.2015, 15:41 | #7 |
Участник
|
А можно этот момент чуть подробнее осветить? Как определяются связанные таблицы, NAV'ом SQL'ем или еще как-то? И берутся просто все таблицы или как-то настраивается какие связанные таблица синхронизировать?
|
|
20.07.2015, 10:29 | #8 |
Участник
|
Не, не вариант. К тому же данных будет не много.
|
|
20.07.2015, 11:00 | #9 |
Участник
|
Цитата:
Сообщение от rmv
У нас кастомная доработка на связке полей и таблиц Нава с запросами SQL сервера (а-ля XML-DEM, только через ADO) и синхронизация таблиц через фиксацию последнего синхронизированного таймстампа с таблицы.
По сравнению с XML-DEM громадный плюс - любая связанная таблица (будь то справочник по внешнего ключу или строки документа при синхронизации заголовка) доступна сразу через рекурсивный вызов то же процедуры синхронизации. По сравнению синхронизацией через сторонние приложения или чистый SQL - работают все родные валидэйты. Грубо говоря настраивается синхронизация, в интерфейс выставляются "синхронизируй заказы продажи", далее запускается импорт заголовков где таймастамп изменился со времени последнего импорта, а все связанные таблицы синхронизируются автоматически. К тому же уточнила щас у шефа, от нас к ним будет передаваться лишь подтвержденная дата отгрузки (больше ничего. Пкрм на первом этапе только об этом идет речь) |
|
20.07.2015, 11:03 | #10 |
Участник
|
Ребята, может все-таки кто-то подскажет, почему мой XML-порт выгружает только одну строку из Т38 (из Т39 при этом выгружаются все сткроки, относящиеся к этому заказу)?
Где я накосячила? |
|
20.07.2015, 16:09 | #11 |
Участник
|
Цитата:
В стандарте есть пара простейших XMLPort-ов, которые можно взять за основу для проектирования своего. Посмотрите. |
|