' Создание новой версии ' Скрипт на кнопку в карточке (свойство кнопочного типа) ' 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