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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.01.2011, 12:58   #1  
Алексей Рождествин is offline
Алексей Рождествин
Участник
 
8 / 10 (1) +
Регистрация: 31.01.2011
Com-соединение
Здравствуйте! Заранее прошу прощения за, возможно, глупый вопрос, но я специалист не в Axapta, а всего лишь в Lotus Domino/Notes. Есть задача - помещать xml-файл, созданный в приложении, работающем на платформе Lotus Domino в Axapta. Файл создается этим приложением и складывается в папку, далее Заказчик требует соорудить com-процедуру, которая запускала бы процесс "засасывания" этого файла в Axapta. Подскажите, какие есть решения этой задачи? Заранее благодарен!
Старый 31.01.2011, 13:07   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Есть и немало.

Можно написать процедуру импорта и запускать по требованию.
Можно ее осуществить в виде периодической операции.
Можно задействовать специальный механизм интеграции - AIF, но он громоздкий.

Обратитесь к специалистам, которые поддерживают DAX на предпиятии Заказчика.

С Уважением,
Георгий
Старый 31.01.2011, 13:08   #3  
Алексей Рождествин is offline
Алексей Рождествин
Участник
 
8 / 10 (1) +
Регистрация: 31.01.2011
К сожалению, обратиться к их специалистам не представляется возможным, решение задачи целиком на мне
Старый 31.01.2011, 13:30   #4  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Вы не закачаете информацию в DAX внешними средствами. DAX добавляет много служебной информации, RecId, RecVersion, идентификатор компании и т.д., которую невозможно добавить внешними средствами.

Вам нужен доступ к приложению. Если у Вас есть доступ к приложению, то необходимо кратко представлять структуру DAX, что нетривиальная задача для новичка.

Как только Вы получите представление о структуре приложения (что куда нужно импортировать и какие обработки при этом необходимо вызывать), можно будет прочитать про COM-коннектор и XML - парсеры.

На данный момент решение задачи Вашими силами не представляется возможным. Ищите DAX специалистов. Говорите Заказчику, что без них решения данной задачи невозможно и очень рискованно.

С Уважением,
Георгий
Старый 31.01.2011, 13:54   #5  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Георгий, тут еще неизвестно, что имеется в виду под "засасыванием файла в Аксапту". Может нужно не содержимое файла распарсить и по таблицам раскидать, а например сам файл целиком к записи в документообороте присоединить. Но что и для чего, конечно, знать надо заранее. Я вообще не понимаю, как может взяться не знакомый с какой-то системой человек что-то в незнакомую систему загрузить, ведь он не знает, будет ли соблюдена целостность данных, к чему это может привести, и тем более как потом исправить проблему, если закачается не то и не туда.
Старый 31.01.2011, 14:01   #6  
Алексей Рождествин is offline
Алексей Рождествин
Участник
 
8 / 10 (1) +
Регистрация: 31.01.2011
Георгий спасибо за ответ! Сложность этого решения мне ясна. А если попробовать иной способ: xml-файл выгружается сторонним приложением в указанную папку, и далее нужно настроить Axapta так, что бы она "смотрела" в эту папку с определенным интервалом, к примеру, раз в час, или каждый день в 18:00 и забирала оттуда xml-файл, так возможно? Просто сейчас всё это делается руками, берется этот xml-файл, относится человеку, который работает с Axapta, и этот человек руками запускает в Axapta процедуру, которая этот файл забирает.
Старый 31.01.2011, 14:04   #7  
Алексей Рождествин is offline
Алексей Рождествин
Участник
 
8 / 10 (1) +
Регистрация: 31.01.2011
Zabr, разносится именно содержимое из файла. Всё разносится корректно, но только руками,а нужно автоматически. Естественно, не зная этого, я бы даже не стал пытаться решать какие-то задачи.
Старый 31.01.2011, 14:30   #8  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
А, ну, если есть процедура, которая парсит файл, то задача упрощается. Необходимо настроить периодичность данной операции, путь, откуда она будет забирать файл, и осуществить контроль на дублирование, чтобы избежать повторной закачки. Желательно сделать журнал импорта - когда и кем запускалось, запускалось ли автоматом, были ли ошибки.

Для этого, скорее всего, надо править уже существующий код. Немного, но надо

С Уважением,
Георгий
Старый 31.01.2011, 14:39   #9  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Так же, если уже есть готовая внутренняя процедура импорта, то есть возможность дёрнуть её снаружи. При помощи "COM Business connector" либо "NET Business connector" в зависимости от версии аксапты connector в AX 2009
Старый 31.01.2011, 14:48   #10  
Алексей Рождествин is offline
Алексей Рождествин
Участник
 
8 / 10 (1) +
Регистрация: 31.01.2011
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Так же, если уже есть готовая внутренняя процедура импорта, то есть возможность дёрнуть её снаружи. При помощи "COM Business connector" либо "NET Business connector" в зависимости от версии аксапты connector в AX 2009
Спасибо за информацию, почитаю более подробно, пожалуй, это и есть то, что нужно.
Старый 31.01.2011, 16:25   #11  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Цитата:
Сообщение от Алексей Рождествин Посмотреть сообщение
Zabr, разносится именно содержимое из файла. Всё разносится корректно, но только руками,а нужно автоматически. Естественно, не зная этого, я бы даже не стал пытаться решать какие-то задачи.
Алексей, если бы вы сразу написали внятно, правильный ответ не заставил бы себя ждать 2 часа, как сейчас. А то ведь вы написали: Есть задача - помещать xml-файл, созданный в приложении, работающем на платформе Lotus Domino в Axapta. А на самом-то деле: Задача загрузки данных из файла в Аксапту решена, запускается вручную из Аксапты, а надо запускать автоматически по расписанию, желательно извне Аксапты. Это же совершенно другая задача.
Старый 15.02.2011, 11:06   #12  
Алексей Рождествин is offline
Алексей Рождествин
Участник
 
8 / 10 (1) +
Регистрация: 31.01.2011
"Задача загрузки данных из файла в Аксапту решена, запускается вручную из Аксапты, а надо запускать автоматически по расписанию, желательно извне Аксапты"
Да, именно так. Прошу прощения за неверное определение. Каким образом возможно это реализовать и насколько трудоёмок данный процесс?
Старый 15.02.2011, 11:37   #13  
Алексей Рождествин is offline
Алексей Рождествин
Участник
 
8 / 10 (1) +
Регистрация: 31.01.2011
Импорт XML-файла через SMTP и POP3
Можно ли настроить Axapta что бы она обращалась в почтовый ящик, выдергивала оттуда вложенный xml-файл и запускала уже имеющуюся процедуру размещения данных из этого файла? Если да, то можно ли привести тут код, который эту задачу выполнял бы?
Старый 15.02.2011, 14:26   #14  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 429 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от Алексей Рождествин Посмотреть сообщение
Можно ли настроить Axapta что бы она обращалась в почтовый ящик, выдергивала оттуда вложенный xml-файл и запускала уже имеющуюся процедуру размещения данных из этого файла? Если да, то можно ли привести тут код, который эту задачу выполнял бы?
Вы можете настроить сортировщик вашего почтового клиента на автоматическое сохранение attach файла в заданную папку, откуда затем читать файл Аксаптой.
(theBat это умеет, outlook скорее всего тоже).
Но зачем вам вообще заморачиваться с почтой ? Почта тут - лишнее звено, из за которого будут одни проблемы при эксплуатации. Не надежно все это. На мой взгляд такой способ - извращение.

Не лучше ли из Аксапты, напрямую, запрашивать некий web сервис, который по заданному адресу будет возвращать xml пакет с данными, необходимыми для импорта в Аксапту ?
(Эту функцию можно будет затем запускать в Аксапте в режиме пакетной обработки с любой периодичностью)

Вот пример, который импортирует данные о курсах валют с сайта ЦБ (http://www.cbr.ru/scripts/XML_daily.asp) - все очень просто

X++:
void run()
{
    com                 xml;
    XMLNodeList         nodelist;
    XMLElement          xmlNodeLine;
    int                 i;
    Currency            currency;
    CurrencyCode        currencyCode;
    ExchRates           exchRates;
    InteropPermission   dllPermission = new InteropPermission(InteropKind::ComInterop);
    ;
    dllPermission.assert();

    try
    {
        xml = new COM('Microsoft.Xmldom');
        xml.async(False);
        xml.validateOnParse(False);

        xml.load(strfmt("http://www.cbr.ru/scripts/XML_daily.asp"));

        nodelist = xml.getElementsByTagName("Valute");

        for (i = 0; i < nodelist.length(); i ++)
        {
            xmlNodeLine = nodelist.item(i);

            currencyCode =  valueFromXMLNode(types::String, xmlNodeLine.getElementsByTagName('CharCode').item(0)).value('value');

            currency = currency::find(currencyCode);

            if (currency.RecId != 0)
            {
                exchRates = exchRates::find(currencyCode);

                if (exchRates.RecId == 0)
                {
                    exchRates.CurrencyCode  = currencyCode;
                    exchRates.FromDate      = systemDateGet();
                    exchRates.ExchRate      = valueFromXMLNode(types::Real, xmlNodeLine.getElementsByTagName('Value').item(0)).value('value') / valueFromXMLNode(types::Real, xmlNodeLine.getElementsByTagName('Nominal').item(0)).value('value') * 100;

                    if (exchRates.validateWrite())
                    {
                        exchRates.insert();

                        info (strFmt('Введен курс валюты %1 со значением %2 на дату %3', exchRates.CurrencyCode, exchRates.ExchRate, exchRates.FromDate));
                    }
                }
            }
        }
    }
    catch (Exception::Error)
    {
        error(chi_GetTimeStamp() + "Процедура импорта валютных курсов завершилась неудачей");
    }
}
Этот код должен работать и в 3.0 и в AX2009

Это всего лишь один из примеров реализации. Есть возможность передавать через web сервисы и "закрытые" данные, и данные по параметрическим запросам...

Обратитесь к поставщикам вашего xml файла. Создать web сервис, который будет выдавать xml - дело 5 минут для грамотного NET программиста, например...
Старый 17.02.2011, 14:11   #15  
Алексей Рождествин is offline
Алексей Рождествин
Участник
 
8 / 10 (1) +
Регистрация: 31.01.2011
У нас данные в XML-файл выгружаются из системы на платформе Lotus Domino, которая и является почтовой, с клиентами Lotus Notes, по-этому нам ближе вариант именно через почтовый ящик
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
COM соединение DinDim DAX: Программирование 6 04.06.2010 16:42
Fred Shen: Argument passed to ‘KPIVALUE’ function must be a KPI name Blog bot DAX Blogs 4 03.06.2010 10:07
Kurt Hatlevik: Sneak preview of the WMS E&E Blog bot DAX Blogs 0 20.11.2008 01:10
msdynamicsax: VB script that test the com connector for Dynamics Ax 4.0 Blog bot DAX Blogs 0 25.08.2008 18:05

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:16.