Если внимательно прочесть документацию, то там и не предполагается присвоение номера учётному документу через АПИ при создании!
objectvariable.AddBalanceDocument( DocNumber, DocDate, DocName, DocComment, DocTypeID, DepartmentID, CounteragentID, ShowDialog, DialogCaption, CalculationDocId )
objectvariable - IBalanceDocuments
DocNumber - номер документа; задаваемое текстовое значение используется в качестве префикса для генерации номера документа; если передается пустая строка, то для генерации номера документа используется префикс, заданный по умолчанию для такого типа учетного документа
Т.е. DocNumber - это заданный префикс, если пустое, то префикс берется по умолчанию :!: Префикс ограничен 10 символами! А Ваши 15 это 10 от префикса и 5 сгенерированный номер :wink:
Вобщем логика предлагается следующая:
1. Проверяете есть ли документ с нужным Вам номером, если есть, то конец, если нет - далее
2. Создаете документ через АПИ (система генерирует номер)
3. Для созданного документа редактируете номер, вписывая своё значение
*К своему GUIDу добавьте в конце текстовую строку (как в примере), тогда TechnolgiCS позволит Вам писать до 50 символов в номер!
Sub FormMacro_test(TCSActiveModule)
Dim BalDocs
Dim Dt
Dim BD_ID
Dim NUM_1C
NUM_1C = "1234567890123456789012345678901234567890" ' Ваш номер из 1С
NUM_1C = NUM_1C + "-1C" ' добавление постфикс
Set BalDocs = TCSApp.Inventory.BalanceDocuments
BalDocs.UserModuleName = BalDocs.UniqueUserModuleName
BalDocs.DateStart = Date() - 1000
BalDocs.DateEnd = Date() + 10
If Not TCSActiveModule.Locate("NUMBER",NUM_1C,0) Then
Dt = Date() ' Дата Вашего документа из 1С
BD_ID = BalDocs.AddBalanceDocument( "", Dt, "тест", "тест", 20, 127, -1, 0, "тест", -1 )
TCSActiveModule.DateStart = Dt - 1
TCSActiveModule.DateEnd = Dt + 1
TCSActiveModule.Refresh
If TCSActiveModule.Locate("ID",BD_ID,0) Then
TCSActiveModule.Edit
TCSActiveModule.Properties("NUMBER").AsString = NUM_1C
TCSActiveModule.SaveChanges
End If
Else
TCSApp.ShowErrorMessage("Документ с таким номером уже есть!")
End If
Call TCSApp.DeleteModuleByUserModuleName(BalDocs.UserModuleName)
Set BalDocs = Nothing
End Sub