Ошибка присоединения файла с помощью DI API в SAP Business One 9C#

Место общения программистов C#
Ответить
Anonymous
 Ошибка присоединения файла с помощью DI API в SAP Business One 9

Сообщение Anonymous »

Я создаю приложение для прикрепления отсканированных документов к документам SAP, но у меня возникли некоторые проблемы с этим процессом. Я использую SAP BO 9 PL8 и обнаружил следующие проблемы:

Когда я пытаюсь добавить новую строку вложения в существующее вложение (используя объект Attachs2) с помощью метода обновления, DI пытается проверить старые строки, и возможно, что файл не существует в исходном исходном пути. Итак, метод обновления сообщает об ошибке. Я использую код ниже:

Код: Выделить всё

Attachments2 oAtt = oCompany.GetBusinessObject(BoObjectTypes.oAttachments2);
if (oAtt.GetByKey(doc.AttachmentEntry))
{
oAtt.Lines.Add();
oAtt.Lines.FileName = oAttNew.Lines.FileName;
oAtt.Lines.FileExtension = oAttNew.Lines.FileExtension;
oAtt.Lines.SourcePath = oAttNew.Lines.SourcePath;
oAtt.Lines.Override = BoYesNoEnum.tYES;
if (oAtt.Update() != 0)
throw new Exception(oCompany.GetLastErrorDescription());
}
В SAP есть некоторые документы, у которых есть вкладка вложения, но через DI невозможен доступ к этой функции. Например, основные данные позиции (oItems) или перемещение запаса (oStockTransfer). У них есть поле AttachmentEntry, как и у объекта Documents, но у объектов нет свойства для добавления вложения, поэтому мне нужно создать действие для этих документов.

Код: Выделить всё

Documents doc = oCompany.GetBusinessObject(oType);
doc.GetByKey(int.Parse(docEntry));
doc.AttachmentEntry = oAtt.AbsoluteEntry;
StockTransfer oStock = .oCompany.GetBusinessObject(BoObjectTypes.oStockTransfer);
// oStock.AttachmentEntry = oAtt.AbsoluteEntry FAIL
Когда я изменяю свойство AttachmentEntry в объекте LandedCost, при попытке обновить объект происходит сбой. Если к объекту уже есть вложение (добавленное вручную), добавление нового вложения в новой строке работает. Ошибка в первом случае: не найдено соответствующих записей (ODBC-2028). Когда я принудительно блокирую catch, я получаю другую информацию: «1320000126 — Неверное поле заголовка обновления». Я использую код ниже:

Код: Выделить всё

LandedCostsService service = oCompany.GetCompanyService().GetBusinessService(ServiceTypes.LandedCostsService);
LandedCostParams oParam = service.GetDataInterface(LandedCostsServiceDataInterfaces.lcsLandedCostParams);
LandedCost oLandedCost = service.GetDataInterface(LandedCostsServiceDataInterfaces.lcsLandedCost);
oParam.LandedCostNumber = int.Parse(docEntry);
oLandedCost = service.GetLandedCost(oParam);
if (oAtt.GetByKey(oLandedCost.AttachmentEntry)) {
// Code similar to first code block I posted
}
else
{
if (oAttNew.Add() != 0)
throw new Exception(oCompany.GetLastErrorDescription());
oAtt.GetByKey(int.Parse(oCompany.GetNewObjectKey()));
oLandedCost.AttachmentEntry = oAtt.AbsoluteEntry;
try
{
service.UpdateLandedCost(oLandedCost);
}
catch (Exception ex)
{
throw new Exception(ex.Message + oCompany.GetLastErrorDescription());
}
}
Мне нужно знать, что я делаю неправильно, или мне нужно связаться с SAP, чтобы сообщить об этих проблемах с DI. Надеюсь, вы сможете мне помочь. Заранее спасибо.

С уважением,
Педро

Подробнее здесь: https://stackoverflow.com/questions/211 ... ness-one-9
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»