SAP BUSINESS ONE – DI API – Сохранение авторизованного черновика в действующий документ (10.00 SQL)

Вопрос или проблема

Я пытаюсь сохранить черновик авторизованного перемещения запасов в действующий документ. В моей организации мы работаем с множеством мест и локаций. Я понимаю, что метод SaveDocumentToDraft() выполняется в черновике, и действующий документ должен быть сохранен (до авторизации). Проблема в том, что возникает следующая ошибка:

1470000839 – Вы не можете указать только серийные или партийные номера; вы также должны указать места выдачи для строки документа 1.

Ошибка SDK

Заранее спасибо большое за вашу помощь.

Прилагаю код, который я использую для выполнения процесса:

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) для строк документа, которые используют серийные или партийные номера.

Решение проблемы:

  1. Убедитесь, что указаны места выдачи:
    В каждой строке документа перевода запасов необходимо указывать не только серийные или партийные номера, но и место выдачи (issuing bin). Это можно сделать с помощью свойства FromBin на уровне строк документа. Убедитесь, что у вас есть доступ к нужным данным для этого.

  2. Пример кода:

Ниже приведен обновленный код, который добавляет обработку мест выдачи:

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.
  • Если ошибка продолжает возникать, возможно, вам потребуется проверить настройки вашего бизнес-процесса, связанные с серийными и партийными номерами, чтобы убедиться, что все требования соблюдены.

Эти шаги должны помочь вам успешно сохранить черновик перевода запасов в действительный документ. Если у вас возникнут дополнительные вопросы или потребуется дополнительная помощь, пожалуйста, не стесняйтесь задавать.

Оцените материал
Добавить комментарий

Капча загружается...