QuickBooks SDK - Как получить пользовательские поля и должность?
Мне интересно с использованием QuickBooks SDK. У меня есть список сотрудников, которые я получил из QuickBooks, как мне получить настраиваемые поля, которые я установил в QuickBooks для сотрудника?
Также со встроенными полями для сотрудников есть "Должность", в SDK есть Job Title, но всегда ли он пуст?
В любом случае, чтобы получить пользовательские поля и должность?
Спасибо
Вот мой код, который я использую для получения объекта сотрудника внутри QuickBooks, однако мне нужно получить настраиваемое поле и Job Title (но Job Title всегда нулевой, даже если он установлен внутри QuickBooks).
using QBFC12Lib;
QBSessionManager sessionManager = null;
try
{
// create the session manager
sessionManager = new QBSessionManager();
sessionManager.OpenConnection("", "Test Employee");
sessionManager.BeginSession(@"C:\PathTo\CompanyFile.qbw", ENOpenMode.omDontCare);
//Create the message set request object to hold our request
IMsgSetRequest request = sessionManager.CreateMsgSetRequest("US", 8, 0);
request.Attributes.OnError = ENRqOnError.roeContinue;
// create the employee query
IEmployeeQuery employeeQuery = request.AppendEmployeeQueryRq();
// send the request and get the response from QuickBooks
IMsgSetResponse responseMsgSet = sessionManager.DoRequests(request);
IResponse response = responseMsgSet.ResponseList.GetAt(0);
IEmployeeRetList employeeRetList = (IEmployeeRetList)response.Detail;
if (employeeRetList != null)
{
for (int i = 0; i < employeeRetList.Count; i++)
{
// create employee item
IEmployeeRet employee = employeeRetList.GetAt(i);
// only get active employees
if (employee.IsActive.GetValue())
{
string firstName = employee.FirstName.GetValue();
string jobTitle = employee.JobTitle.GetValue();
}
}
}
}
catch
{ }
1 ответ
Хорошо, после многих проб и ошибок я решил половину этого вопроса, часть получения пользовательских полей! Вы должны установить запрос, чтобы получить их, а затем вы можете получить доступ к настраиваемым полям, но лучший способ, который я нашел, если у вас есть несколько настраиваемых полей, вам придется циклически просматривать их, чтобы найти нужное поле. Вот код ниже.
employeeQuery.IncludeRetElementList.Add("DataExtRet");
employeeQuery.OwnerIDList.Add("0");
for (int x = 0; x < employee.DataExtRetList.Count; x++)
{
// get the dataExt object, now you have access to the custom field
IDataExtRet dataExt = employee.DataExtRetList.GetAt(x);
string customFieldName = dataExt.DataExtName.GetValue();
string value = dataExt.DataExtValue.GetValue();
}