Описание
Пришел тут ко мне на днях несмышленый юнленг и попросил изготовить скрипт VBS, складывающий две строки. Смешно конечно, но на то они и дети...
Скрипт лучше вешать на кнопку или любое другое событие, кроме "Изменение значения свойства" - надеюсь понятно почему.
Пример
При нажатии на кнопку - значение поля "Строка" добавляется в значение полей типа "Папка ФС":
Тело
Code Block |
---|
'Формирование пути Option Explicit Function DoEvent(UserSession, CardFrame, CardData, ActivateFlags, ModeID, FolderID, PropValue) DoEvent = 2 Dim Stroka, Stroka2, FolderFS1, FolderFS2, Simbol Stroka = GetProp(CardData, "Строка", 0) Simbol = "\" FolderFS1 = GetProp(CardData, "Папка 1", 0) & Simbol & Stroka FolderFS2 = GetProp(CardData, "Папка 2", 0) & Simbol & Stroka SetProp CardData, "Папка 1", FolderFS1, CStr(FolderFS1) SetProp CardData, "Папка 2", FolderFS2, CStr(FolderFS2) End Function ' Получение карточки папок Function FolderCard(UserSession) Set FolderCard = UserSession.CardManager.Dictionary("{DA86FABF-4DD7-4A86-B6FF-C58C24D12DE2}") End Function ' Копирование значения свойства2 Sub CopyProp2(SrcCardData, DestCardData, PropName) CopyProp SrcCardData, PropName, DestCardData, PropName End Sub ' Копирование значения свойства Sub CopyProp(SrcCardData, SrcPropName, DestCardData, DestPropName) Dim SrcProp Set SrcProp = Prop(SrcCardData, SrcPropName) SetProp DestCardData, DestPropName, SrcProp.Value("Value"), SrcProp.Value("DisplayValue") End Sub ' Получение секции карточки по имени 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 ' Вывести предупреждение Sub ReportWarning(Msg) MsgBox Msg, vbExclamation Or vbOKOnly, "Предупреждение" End Sub ' Добавление ссылки Sub AddCardReference(CardData, UserSession, Link, LinkDesc) Dim Refs, Row Set Refs = Sect(CardData, "CardReferences") Set Row = Refs.CreateRow Row.Value("Link") = Link Row.Value("CreationDate") = Now Row.Value("CreatedBy") = StaffObject(UserSession).GetCurrentUserID Row.Value("LinkDesc") = LinkDesc End Sub ' Получение StaffObject Function StaffObject(UserSession) Set StaffObject = CreateObject("TOHelperObjects.StaffObject") Set StaffObject.UserSession = UserSession End Function |