Re: Ограничение длины номера учетного документа

Здравствуйте, уважаемые.
Сталкнулся с такой проблеммой: не могу записать в номер учетного документа больше 15 символов с помощью АПИ, хотя ручками можно вписать 50.
Внимание вопрос: к чему такое ограничение? Или всетаки как то можно вписать более 15 символов?

Re: Ограничение длины номера учетного документа

Мне не удалось ввести только 10 символов.

Re: Ограничение длины номера учетного документа

И как с этим бороться?

Re: Ограничение длины номера учетного документа

Вопрос из любопытства: а зачем такие длинные номера учетных документов?

Re: Ограничение длины номера учетного документа

Суть такая: мне нужно синхронизировать учетные документы ТКС и 1С. В 1С уникальность документов отслеживается по GUID (уникальный код документа), который содержит 36 символов. В ТКС уникальность отслеживается по номеру документа, поэтому хотелось бы в номер записать этот самый GUID. Не понятно почему руками это сделать можно, а через АПИ нельзя.

Re: Ограничение длины номера учетного документа

Насчет API не в курсе, может кто-нибудь из спецов по этому вопросу ответит.
Вот что смущает, так это GUID в номер документа писать... Некрасиво просто будет - "ордер №..." и 36 цифр с буквами :)
Может все таки в номер писать номер, а GUID, например, в параметр? Уникальность значений можно поставить, если надо.

Re: Ограничение длины номера учетного документа

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

Re: Ограничение длины номера учетного документа

AlexB писал(а):
Если GUID запихать в параметр, то тогда для того чтобы узнать есть ли документ с таким параметрам нужно будет перебрать их все, что не есть хорошо. Может 36 непонятных букв в номере выглядит и не красиво, но зато работать на много быстрее будет.

Можно схему поиска с этим параметром создать, а потом, соответственно, присоединять эту схему поиска когда надо.

Re: Ограничение длины номера учетного документа

А можно поподробнее про схему поиска? И будет ли это работать быстрее чем Locate, если колисество документов будет превышать 5000-10000?

Re: Ограничение длины номера учетного документа

Извиняюсь, не посмотрел, что я в ветке про АПИ  :oops:
Про схему поиска забудьте, я предполагал её использование для отображения параметра в основном гриде, а далее уже стандартные поиски, фильтры в ручном режиме.
В АПИ аналогичный интерфейс есть IAttachedParams, но к сожалению BalanceDocuments его не реализует.  :(

Re: Ограничение длины номера учетного документа

Так и не понял как побороть это ограничение?

Re: Ограничение длины номера учетного документа

AlexB писал(а):
Если GUID запихать в параметр, то тогда для того чтобы узнать есть ли документ с таким параметрам нужно будет перебрать их все, что не есть хорошо. Может 36 непонятных букв в номере выглядит и не красиво, но зато работать на много быстрее будет.

С точки зрения перебора - согласен, про параметр не очень хорошая идея. Тем более, что уникальность параметра в этом месте не ослеживается  :?

Re: Ограничение длины номера учетного документа

Константин писал(а):

AlexB писал(а):
Если GUID запихать в параметр, то тогда для того чтобы узнать есть ли документ с таким параметрам нужно будет перебрать их все, что не есть хорошо. Может 36 непонятных букв в номере выглядит и не красиво, но зато работать на много быстрее будет.

С точки зрения перебора - согласен, про параметр не очень хорошая идея. Тем более, что уникальность параметра в этом месте не ослеживается  :?

Это я понял до того как написал в форум, вопрос: какие есть варианты?

Re: Ограничение длины номера учетного документа

Товарищи разрабодчики, помогите :!:

Re: Ограничение длины номера учетного документа

Если внимательно прочесть документацию, то там и не предполагается присвоение номера учётному документу через АПИ при создании!

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

Re: Ограничение длины номера учетного документа

Спасибо, буду пробовать.