برقراری ارتباط ERP مایکروسافت داینامیکس و آفیس
برقراری ارتباط ERP مایکروسافت داینامیکس و آفیس یکی از امکاناتی است که به راحتی در این ERP دردسترس است ، بخشی از رفع خطاهای برنامه نویسی در این خصوص را مطرح کنیم.
مایکروسافت داینامیکس از طریق زیر ساخت AIF یا همان Application Integration Framework با مجموعه گسترده ای از ابزارهای مایکروسافت و ابزارهای Third Party ارتباط برقرار میکند.
بررسی خطای اجرایی در هنگام Integration با نرم افزارهای آفیس:
The method has been called with an invalid number of parameters
یکی از ویژگی های عالی Dynamics AX یکپارچگی غنی با سایر برنامه ها یا خدمات است. کاربر Dynamics AX برای مثال وقتی در حال تبادل داده با برنامه های مایکروسافت آفیس مانند Microsoft Office Excel یا Microsoft Office Outlook است، برخی از این تعاملات با استفاده از COM انجام می شود. هنگامی که Dynamics AX Client از COM برای تبادل داده در شرایط خاصی استفاده می کند، ممکن است با یکی از پیام های خطای زیر مواجه شوید:
- Error executing code: The method has been called with an invalid number of parameters
- The number of arguments provided is different from the number of arguments accepted by the method
موقعیتهای خاص به این معنی است که شما همیشه این پیام خطا را دریافت نمیکنید، اما فقط گاهی اوقات و خطا قابل تکرار نیست. وقتی client Dynamics AX در حال انجام عملیات COM است، احتمال دریافت این پیام خطا بیشتر است.
یکی از دلایل اجرای این مشکل می تواند این باشد که سیستم عامل ویندوز پنجره برنامه Dynamics AX را با یک پنجره شبح جایگزین می کند. هنگامی که Dynamics AX یک عملیات طولانی COM را شروع می کند، به پیام های ارسال شده توسط سیستم عامل ویندوز به موقع پاسخ نمی دهد. بنابراین ویندوز فرض می کند که Dynamics AX دیگر پاسخ نمی دهد. هنگامی که این اتفاق می افتد، پنجره برنامه Dynamics AX با یک پنجره شبح جایگزین می شود تا زمانی که Dynamics AX از سر گرفته شود.
Window ghosting
Window ghosting یک ویژگی خوب است که به کاربر این امکان را می دهد که پنجره اصلی را حتی اگر برنامه پاسخ نمی دهد، کوچک کند، حرکت دهد یا ببندد. شما به راحتی می توانید یک پنجره شبح را همانطور که در عنوان پنجره نشان می دهد (عدم پاسخگویی) شناسایی کنید.
متأسفانه جایگزینی پنجره برنامه Dynamics AX با پنجره شبح می تواند در عملیات COM اختلال ایجاد کند و پیام خطای فوق را ایجاد کند. بنابراین، خاموش کردن شبحهای پنجره برای Dynamics AX Client میتواند مفید باشد:
- میانبر Dynamics AX را در منوی استارت ویندوز پیدا کنید
- با دکمه سمت راست ماوس روی میانبر کلیک کرده و Properties را انتخاب کنید
- به تب Compatibility بروید
- چک باکس Run this program in Compatibility mode for را تیک کرده و گزینه زیر را فعال کنید:
Windows XP (Service Pack 2)
توجه داشته باشید که:
- ما این مشکل را بیشتر در ویندوز ویستا و ویندوز سرور 2008 دیده ایم، اما این مشکل به این دو محدود نمی شود.
- Windows ghosting تنها دلیل این مشکل نیست، بنابراین ممکن است همچنان پیغام خطا را ببینید حتی اگر شبحسازی پنجره خاموش باشد.
اما گاهی اوقات چندین احتمال وجود دارد که منجر به این وضعیت می شود و غیرفعال کردن Window Ghosting در برخی از آنها به عنوان راه حل ثابت شده است. تاکنون راهحلهای دیگری نیز پیدا کردهایم ولی احتمال وجود مواردی هم هست که هیچ کدام از این راه حلها برای آنها کارساز نباشد.
راه حلهای دیگر
1: غیرفعال کردن Ghosting پنجره همانطور که در این پست توضیح داده شده است.
2: کد X++ را تا خطی که باعث خطا می شود اشکال زدایی کنید. پس از شناسایی، یک خط قبل از این عبارت یک فراخوانی به متد yield کلاس xInfo وارد کنید.
مثال: infolog.yield();
3: کد X++ را تا خطی که باعث خطا می شود اشکال زدایی کنید. پس از شناسایی، عبارت را در یک بلوک try/catch قرار دهید. در بلوک catch به سادگی عملیات را دوباره امتحان کنید.
مثال: int retryCount = 3;
//…
try
{
namespace = outlook.getNamespace(#mapidef);
}
catch(Exception::Error)
{
retryCount–;
if(retryCount > 0)
retry;
else
throw(Exception::Error);
}