1

Тема: Параметры создания новой версии документа

Здравствуйте! Существуют ли особенности использования параметров создания новой версии документа?
Мне, например, нужно создать версию с параметрами:
1) сделать новую версию документа активной,
2) создать новую версию документа на основе существующей,
3) скопировать список атрибутов из исходной версии документа,
4) скопировать значения атрибутов исходной версии документа.
Складываю 8+16+128+256 = 408.
Код

Call TCSApp.Folders.CreateDocVer( 408, "Новая версия", Versions.Properties("ID").AsInteger, "" )

выдает ошибку
"Неизвестная версия документа
CSDN.Folders".
То же с 280 (8+16+256).
При использовании параметров по отдельности (8 или 16) версия создается успешно.
А с 256 значения параметров не скопировались.
Подскажите, пожалуйста, что я упускаю.

2 (изменено: Дмитрий Гамий, 22-03-2016 16:07:44)

Re: Параметры создания новой версии документа

Попробуйте так:

Dim DocFlags
      
DocFlags = 8 Or 16 Or 128 Or 256
Call TCSApp.Folders.CreateDocVer(DocFlags, "Новая версия", Versions.Properties("ID").AsInteger, "" )

3 (изменено: Дмитрий Гамий, 22-03-2016 16:30:55)

Re: Параметры создания новой версии документа

Но у вас, скорее всего, ошибка где-то в другом месте, так как у меня на тестовом примере следующий код отрабатывает без ошибок:

Sub FormMacro_Test(TCSActiveModule)' Тест
    
    If TCSApp.Folders.RunModuleForSelect("Выберите документ", False) > 0 Then

        Set Versions = TCSApp.Folders.Properties("VERSIONS").AsIDispatch
        If Versions.RunModuleForSelect("Выберите версию документа", False) > 0 Then      

            Call TCSApp.Folders.CreateDocVer(408, "Новая версия", Versions.Properties("ID").AsInteger, "" )

        End If
        Set Versions = Nothing

    End If
End Sub

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

4

Re: Параметры создания новой версии документа

Такой же, но выдает ошибку

Sub FormMacro_Add_Ver(TCSActiveModule) 
    Dim Versions
    If TCSApp.Folders.RunModuleForSelect("Выберите документ", False) > 0 Then
        Set Versions = TCSApp.Folders.Properties("VERSIONS").AsIDispatch
        If Versions.RunModuleForSelect("Выберите версию документа", False) > 0 Then
            Call TCSApp.Folders.CreateDocVer( 408, "Новая версия 22_6", Versions.Properties("ID").AsInteger, "" )
        End If
        Set Versions = Nothing
    End If
    Exit Sub

Re: Параметры создания новой версии документа

Versions.Properties("ID").AsInteger

Свойство ID у версий указывает на идентификатор документа, а не версии. На версию указывается VER_ID. Отсюда и возникает ошибка.


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

Поразбираемся как раньше было, но скорей всего так было всегда.

Спасибо сказали: snake1

6

Re: Параметры создания новой версии документа

Олег, спасибо! Все получилось.
И Вам, Дмитрий, спасибо за поддержку!

Re: Параметры создания новой версии документа

С Новым годом

<p>Мне, например, нужно создать версию с параметрами:
1) сделать новую версию документа активной,
2) создать новую версию документа на основе существующей,
3) скопировать список атрибутов из исходной версии документа,
4) скопировать значения атрибутов исходной версии документа.
Складываю 8+16+128+256 = 408.
</p>

Мне то же самое, что выше и плюс:
5) скопировать текущий статус
6) скопировать файловый состав
7) скопировать эскизы
Складываю ..... = 3064


Call Doc.CreateDocVer( 3064, Naim_New_Version, Vers, "" )

Не работает

ПОЧЕМУ?

8 (изменено: Дмитрий Гамий, 09-01-2018 16:51:06)

Re: Параметры создания новой версии документа

Евсеева Людмила пишет:

С Новым годом

Спасибо! Взаимно! smile

Евсеева Людмила пишет:

Складываю ..... = 3064

У меня получилось 3032

Заставляйте VBScript вычислять значение (он редко ошибается smile  )

  Flag = CSDN_Const.cdvMakeActive _
      Or CSDN_Const.cdvBaseOnSourceDocVersion _
      Or CSDN_Const.cdvCopySourceParamList _
      Or CSDN_Const.cdvCopySourceParamValues _
      Or CSDN_Const.cdvCopySourceState _
      Or CSDN_Const.cdvCopySourceSketches _
      Or CSDN_Const.cdvCopySourceFiles

Call Doc.CreateDocVer( Flag, Naim_New_Version, Vers, "" )