Вопрос или проблема
Я пытаюсь сохранить черновик авторизованного перемещения запасов в действующий документ. В моей организации мы работаем с множеством мест и локаций. Я понимаю, что метод SaveDocumentToDraft() выполняется в черновике, и действующий документ должен быть сохранен (до авторизации). Проблема в том, что возникает следующая ошибка:
1470000839 – Вы не можете указать только серийные или партийные номера; вы также должны указать места выдачи для строки документа 1.
Заранее спасибо большое за вашу помощь.
Прилагаю код, который я использую для выполнения процесса:
Private Sub SolicitudTrasladoStock(draftDocEntry As Integer)
‘Получить существующий черновик
Dim draft As SAPbobsCOM.StockTransfer
draft = CType(oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oStockTransferDraft), SAPbobsCOM.StockTransfer)
If draft.GetByKey(draftDocEntry) Then
Try
If draft.SaveDraftToDocument() <> 0 Then
Dim errorCode As Integer
Dim errorMsg As String = ""
oCompany.GetLastError(errorCode, errorMsg)
MessageBox.Show("Ошибка при создании перемещения запасов: " & errorMsg, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
MessageBox.Show("Перемещение запасов успешно создано.", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Catch ex As Exception
MessageBox.Show("Исключение при добавлении перемещения: " & ex.Message, "Исключение", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Else
MessageBox.Show("Черновик с DocEntry не найден: " & draftDocEntry, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End Sub
Ответ или решение
Для решения проблемы, связанной с сохранением черновика перевода запасов в действительный документ в SAP Business One с использованием DI API, необходимо учитывать некоторые ключевые моменты.
Ошибка, которую вы получили: "1470000839 – Вы не можете указывать только серийные или партийные номера; вы также должны указать места выдачи для строки документа 1." говорит о том, что система требует указания мест выдачи (issuing bin locations) для строк документа, которые используют серийные или партийные номера.
Решение проблемы:
-
Убедитесь, что указаны места выдачи:
В каждой строке документа перевода запасов необходимо указывать не только серийные или партийные номера, но и место выдачи (issuing bin). Это можно сделать с помощью свойстваFromBin
на уровне строк документа. Убедитесь, что у вас есть доступ к нужным данным для этого. - Пример кода:
Ниже приведен обновленный код, который добавляет обработку мест выдачи:
Private Sub SolicitudTrasladoStock(draftDocEntry As Integer)
' Получаем существующий черновик
Dim draft As SAPbobsCOM.StockTransfer
draft = CType(oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oStockTransferDraft), SAPbobsCOM.StockTransfer)
If draft.GetByKey(draftDocEntry) Then
Try
' Проверяем строки документа
For i As Integer = 0 To draft.Lines.Count - 1
draft.Lines.SetCurrentLine(i)
' Убедитесь, что указаны места выдачи
If draft.Lines.Quantity > 0 Then
draft.Lines.FromBin = "Ваше_место_выдачи" ' Установите ваше место выдачи
End If
Next
' Сохраняем черновик в действительный документ
If draft.SaveDraftToDocument() <> 0 Then
Dim errorCode As Integer
Dim errorMsg As String = ""
oCompany.GetLastError(errorCode, errorMsg)
MessageBox.Show("Ошибка при создании перевода запасов: " & errorMsg, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
MessageBox.Show("Перевод запасов успешно создан.", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Catch ex As Exception
MessageBox.Show("Исключение при добавлении перевода: " & ex.Message, "Исключение", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Else
MessageBox.Show("Не найден черновик с DocEntry: " & draftDocEntry, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End Sub
Рекомендации:
- Перед использованием места выдачи (
FromBin
), убедитесь, что данное место существует в системе и может быть использовано для выбранного товара. - Проверьте, есть ли у вас все необходимые права доступа для работы с местами хранения в SAP Business One.
- Если ошибка продолжает возникать, возможно, вам потребуется проверить настройки вашего бизнес-процесса, связанные с серийными и партийными номерами, чтобы убедиться, что все требования соблюдены.
Эти шаги должны помочь вам успешно сохранить черновик перевода запасов в действительный документ. Если у вас возникнут дополнительные вопросы или потребуется дополнительная помощь, пожалуйста, не стесняйтесь задавать.