Это вопрос интерфейса бизнес-объектов облака Sage 2019.
У меня возникают проблемы при попытке создать объект AR_Customer_bus, моя конечная цель - создать нового клиента с помощью BOI. Я получаю ошибку 200.
Полное раскрытие; Я новичок в Sage BOI, хотя я довольно опытный разработчик и у меня нет опыта Sage, но у меня есть учебные материалы по Sage BOI. Я также разместил этот вопрос на форуме Sage, но активность на форумах довольно низкая, поэтому я освещаю свои базы: https://www.sagecity.com/support_communities/sage100_erp/f/sage-100-business-object-interface/146142/unable-to-newobject-the-ar_customer_bus
Любая помощь в этом вопросе очень ценится , это даже не должно быть точным решением, просто было бы очень полезно просто общее руководство, которое могло бы помочь облегчить решение.
Пока это мой код, также обратите внимание, что я списал это с Вот несколько примеров, которые я нашел на своем пути:
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
// Instantiate a ProvidexX.Script object and initialize with the path to MAS90\Home
using (DispatchObject pvx = new DispatchObject("ProvideX.Script"))
{
// Replace the text "*PATH TO MAS90\HOME*" with the correct MAS90\Home path in the line below
pvx.InvokeMethod("Init", @"[Correct path]");
// Instantiate a new Session object and initialize the session
// by setting the user, company, date and module
using (DispatchObject oSS = new DispatchObject(pvx.InvokeMethod("NewObject", "SY_Session")))
{
oSS.InvokeMethod("nLogon");
oSS.InvokeMethod("nSetUser", new object[] {"[Username]", "[Password]"});
oSS.InvokeMethod("nSetCompany", "[CompanyName]");
oSS.InvokeMethod("nSetDate", "A/R", "05312006");
oSS.InvokeMethod("nSetModule", "A/R");
// Get the Task ID for the AR_Customer_ui program
int TaskID = (int) oSS.InvokeMethod("nLookupTask", "AR_Customer_ui");
//int TaskID = (int)oSS.InvokeMethod("nLookupTask", "AR_Invoice_ui");
oSS.InvokeMethod("nSetProgram", TaskID);
CreateCustomer(pvx, oSS, out var customerNumber);
GetCustomerList(pvx, oSS, out var bob);
}
}
}
private static string CreateCustomer(DispatchObject pvx, DispatchObject oSS, out string customerNumber)
{
customerNumber = "";
using (DispatchObject oARCustomerEntry = new DispatchObject(pvx.InvokeMethod("NewObject", "AR_Customer_bus", oSS.GetObject()))) //Error 200 throw here.
{
try
{
object[] nextCustomerNumber = new object[] { "CustomerNo$" };
//Getting Next Customer Number
oARCustomerEntry.InvokeMethodByRef("nGetNextCustomerNo", nextCustomerNumber);
Console.WriteLine(nextCustomerNumber[0].ToString());
object retVal = 0;
retVal = oARCustomerEntry.InvokeMethodByRef("nSetKeyValue", new object[] { "ARDivisionNo$", "01" });
retVal = oARCustomerEntry.InvokeMethodByRef("nSetKeyValue", new object[] { "CustomerNo$", nextCustomerNumber[0].ToString() });
retVal = oARCustomerEntry.InvokeMethod("nSetKey");
Console.WriteLine(retVal.ToString());
retVal = oARCustomerEntry.InvokeMethodByRef("nSetValue", new object[] { "CustomerName$", "ROSE DAWSON" });
retVal = oARCustomerEntry.InvokeMethodByRef("nSetValue", new object[] { "AddressLine1$", "1234 LONG DREAM ST" });
retVal = oARCustomerEntry.InvokeMethodByRef("nSetValue", new object[] { "AddressLine2$", "" });
retVal = oARCustomerEntry.InvokeMethodByRef("nSetValue", new object[] { "AddressLine3$", "" });
retVal = oARCustomerEntry.InvokeMethodByRef("nSetValue", new object[] { "City$", "CITRUS HEIGHTS" });
retVal = oARCustomerEntry.InvokeMethodByRef("nSetValue", new object[] { "State$", "CA" });
Console.WriteLine(retVal.ToString());
retVal = oARCustomerEntry.InvokeMethodByRef("nSetValue", new object[] { "ZipCode$", "95621" });
retVal = oARCustomerEntry.InvokeMethodByRef("nSetValue", new object[] { "CountryCode$", "USA" });
retVal = oARCustomerEntry.InvokeMethodByRef("nSetValue", new object[] { "SalespersonDivisionNo$", "01" });
retVal = oARCustomerEntry.InvokeMethodByRef("nSetValue", new object[] { "SalespersonNo$", "RAP" });
Console.WriteLine(retVal.ToString());
retVal = oARCustomerEntry.InvokeMethod("nWrite");
if (retVal.ToString() == "0")
{
object errorMsg = oARCustomerEntry.GetProperty("sLastErrorMsg");
Console.WriteLine(errorMsg.ToString());
Console.Read();
}
customerNumber = nextCustomerNumber[0].ToString();
Console.WriteLine(retVal.ToString());
Console.Read();
}
catch (Exception ex)
{
object errorMsg = oARCustomerEntry.GetProperty("sLastErrorMsg");
Console.WriteLine(errorMsg.ToString());
Console.WriteLine(ex.Message);
Console.Read();
}
finally
{
oARCustomerEntry.Dispose();
}
}
return customerNumber;
}
Ниже приведена строка, которая выдает ошибку:
public object GetObject()
{
return m_object;
}
Затем он вызывает InvokeMethod, который показан ниже, это именно там, где выдается ошибка 200:
public object InvokeMethod(string sMethodName, params object[] aryParams)
{
return m_object.GetType().InvokeMember(sMethodName, m_flgMethod, null, m_object, aryParams);
}
Мои первые мысли были о том, что это проблема с разрешениями (поскольку я сталкивался с этим раньше, но пользователь, которого я настраиваю, имеет роль «Полный администратор», которая глядя на раздел обслуживания ролей sage, я вижу, что роли назначены все разрешения безопасности.
Обратите внимание: я смог обновить другие бизнес-объекты, такие как AR_DepositHistory_bus, без проблем, и мне также удалось обновить AR_Customer_ui и AR_Customer_sv c, поэтому я не знаю, почему это проблема.