AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.07.2015, 12:50   #1  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Уважаемые Коллеги, снова прошу вашей помощи.

Появилась задача: автоматизировать обмен данными между нашей БД и БД у удаленного "партнера". Этот партнер является нашим диллером. У него (как и у нас) стоит НАВ 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  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
У нас долгое время обмен работал через стороннюю утилиту 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  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
.
Старый 16.07.2015, 15:05   #4  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Поскольку раньше с 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;
Файл создается, но в нем только одна запись, хотя в таблице 38 их несколько. Что интересно: из Т39 выгружаются ВСЕ строки, относящиеся к заказу, а вот из Т38 - только первая.
Где копать, подскажите?
Старый 16.07.2015, 15:20   #5  
Constantine_imported is offline
Constantine_imported
Участник
 
126 / 10 (1) +
Регистрация: 28.04.2011
Такой уточняющий вопрос, не про XML. На сколько вы с вашим "партнером" доверяете друг другу? Может имеет смысл слинковать ваши SQL сервера и сделать обмен на триггерах или job'ах SQL сервера? Это точно быстрее будет чем XML.
А по поводу XML-порта мне кажется вам придется бегать по записям и выгружать кучу файликов.
Старый 17.07.2015, 14:00   #6  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
У нас кастомная доработка на связке полей и таблиц Нава с запросами SQL сервера (а-ля XML-DEM, только через ADO) и синхронизация таблиц через фиксацию последнего синхронизированного таймстампа с таблицы.
По сравнению с XML-DEM громадный плюс - любая связанная таблица (будь то справочник по внешнего ключу или строки документа при синхронизации заголовка) доступна сразу через рекурсивный вызов то же процедуры синхронизации.
По сравнению синхронизацией через сторонние приложения или чистый SQL - работают все родные валидэйты.
Грубо говоря настраивается синхронизация, в интерфейс выставляются "синхронизируй заказы продажи", далее запускается импорт заголовков где таймастамп изменился со времени последнего импорта, а все связанные таблицы синхронизируются автоматически.
Старый 17.07.2015, 15:41   #7  
Constantine_imported is offline
Constantine_imported
Участник
 
126 / 10 (1) +
Регистрация: 28.04.2011
Цитата:
Сообщение от rmv Посмотреть сообщение
По сравнению с XML-DEM громадный плюс - любая связанная таблица (будь то справочник по внешнего ключу или строки документа при синхронизации заголовка) доступна сразу через рекурсивный вызов то же процедуры синхронизации.
А можно этот момент чуть подробнее осветить? Как определяются связанные таблицы, NAV'ом SQL'ем или еще как-то? И берутся просто все таблицы или как-то настраивается какие связанные таблица синхронизировать?
Старый 20.07.2015, 10:29   #8  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от Constantine Посмотреть сообщение
Такой уточняющий вопрос, не про XML. На сколько вы с вашим "партнером" доверяете друг другу? Может имеет смысл слинковать ваши SQL сервера и сделать обмен на триггерах или job'ах SQL сервера? Это точно быстрее будет чем XML.
Не, не вариант. К тому же данных будет не много.
Старый 20.07.2015, 11:00   #9  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от rmv Посмотреть сообщение
У нас кастомная доработка на связке полей и таблиц Нава с запросами SQL сервера (а-ля XML-DEM, только через ADO) и синхронизация таблиц через фиксацию последнего синхронизированного таймстампа с таблицы.
По сравнению с XML-DEM громадный плюс - любая связанная таблица (будь то справочник по внешнего ключу или строки документа при синхронизации заголовка) доступна сразу через рекурсивный вызов то же процедуры синхронизации.
По сравнению синхронизацией через сторонние приложения или чистый SQL - работают все родные валидэйты.
Грубо говоря настраивается синхронизация, в интерфейс выставляются "синхронизируй заказы продажи", далее запускается импорт заголовков где таймастамп изменился со времени последнего импорта, а все связанные таблицы синхронизируются автоматически.
Думаю, что так мудрёно нам нет необходимости делать, т.к. объем обмениваемых данных невелик (примерно 200 заказов в год).
К тому же уточнила щас у шефа, от нас к ним будет передаваться лишь подтвержденная дата отгрузки (больше ничего. Пкрм на первом этапе только об этом идет речь)
Старый 20.07.2015, 11:03   #10  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Ребята, может все-таки кто-то подскажет, почему мой XML-порт выгружает только одну строку из Т38 (из Т39 при этом выгружаются все сткроки, относящиеся к этому заказу)?
Где я накосячила?
Старый 20.07.2015, 16:09   #11  
Romul is offline
Romul
Участник
 
186 / 11 (1) +
Регистрация: 26.12.2007
Цитата:
Сообщение от Kadawrik Посмотреть сообщение
Ребята, может все-таки кто-то подскажет, почему мой XML-порт выгружает только одну строку из Т38 (из Т39 при этом выгружаются все сткроки, относящиеся к этому заказу)?
Где я накосячила?
У вас, вероятнее всего, Sales Header используется в качестве Root-элемента. Как результат - получаете 1 header и множество линий.
В стандарте есть пара простейших XMLPort-ов, которые можно взять за основу для проектирования своего. Посмотрите.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:53.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.