' Создание новой версии
' Скрипт на кнопку в карточке (свойство кнопочного типа)
' v 2.0.0
Option Explicit
Function DoEvent(UserSession, CardFrame, CardData, ActivateFlags, ModeID, FolderID, PropValue)
DoEvent = 0
Dim CardData2, FileList2, Ver, State, FolderID2
If GetProp(CardData, "состояние", vbNullString) <> "Действующий" Then
MsgBox "Хуй вам, а не новая версия!", vbOKOnly, "Порицание"
Exit Function
End If
' Копируем карточку
Set CardData2 = CardData.Copy
' Чистим файлы
Set FileList2 = UserSession.CardManager.CardData(MainInfo(CardData2).Value("FilesID"))
Sect(FileList2, "FileReferences").Rows.Clear
MainInfo(FileList2).Value("Count") = 0
' Чистим ссылки
Sect(CardData2, "CardReferences").Rows.Clear
' Проставляем версию
Ver = GetProp(CardData, "версия", 0) + 1
SetProp CardData2, "версия", Ver, CStr(Ver)
' Пишем состояние
State = "превед!"
SetProp CardData2, "состояние", State, State
' Помещаем в папку
FolderID2 = GetProp(CardData, "папка", FolderID)
FolderCard(UserSession).CreateShortcut FolderID2, CardData2.ID, True
' Выводим на экран новую карточку
CardFrame.Host.ShowCard CardData2.ID
End Function
' Получение карточки папок
Function FolderCard(UserSession)
Set FolderCard = UserSession.CardManager.Dictionary("{DA86FABF-4DD7-4A86-B6FF-C58C24D12DE2}")
End Function
' Получение секции карточки по имени
Function Sect(CardData, Alias)
Set Sect = CardData.Sections(CardData.Type.AllSections.GetByAlias(Alias).ID)
End Function
' Получение подчиненной секции по имени
Function SubSect(RowData, Alias)
Set SubSect = RowData.ChildSections(RowData.Section.Type.ChildSections.GetByAlias(Alias).ID)
End Function
' Нулевая строка секции MainInfo
Function MainInfo(CardData)
Set MainInfo = Sect(CardData, "MainInfo").FirstRow
End Function
' Строка свойства
Function Prop(CardData, Alias)
Set Prop = Nothing
Dim Row: For Each Row In Sect(CardData, "Properties").Rows
If Row.Value("Name") = Alias Then
Set Prop = Row
Exit Function
End If
Next
End Function
' Получение значения свойства
Function GetProp(CardData, Alias, DefaultValue)
Dim Row: Set Row = Prop(CardData, Alias)
If Row Is Nothing Then
GetProp = DefaultValue
Else
GetProp = Row.Value("Value")
If IsNull(GetProp) Then GetProp = DefaultValue
End If
End Function
' Установка значения свойства
Sub SetProp(CardData, Alias, Value, DisplayValue)
Prop(CardData, Alias).Value("Value") = Value
Prop(CardData, Alias).Value("DisplayValue") = DisplayValue
End Sub |