' Скрипт на изменение свойства ' Копирует файл из записи универсального справочника на вкладку "файлы и ссылки" ' v 1.0.0 Function DoEvent(UserSession, CardFrame, CardData, ActivateFlags, ModeID, FolderID, PropValue) Dim UniItemID, UniItem, UniItemProp, CardFileID UniItemID = GetProp(CardData, "Вид договора", Null) If Not IsNullGuid(UniItemID) Then Set UniItem = Sect(RefUniversal(UserSession), "Item").GetRow(UniItemID) Set UniItemProp = SubSect(UniItem, "Properties").FindRow("@Name='Карточка'") If IsNull(UniItemProp) Then MsgBox "В Универсальном справочнике не найдено свойство 'Карточка'", vbOKOnly Or vbExclamation, "Предупреждение" Exit Function End If CardFileID = UniItemProp.Value("Value") If IsNull(CardFileID) Or CardFileID = vbNullString Then MsgBox "В Универсальном справочнике для вида договора не задан файл", vbOKOnly Or vbExclamation, "Предупреждение" Exit Function End If AttachCardFileCopy UserSession, CardData, CardFileID End If DoEvent = 2 End Function Function IsNullGuid(ID) IsNullGuid = (IsNull(ID) Or ID = vbNullString Or ID = "00000000-0000-0000-0000-000000000000" Or ID = "{00000000-0000-0000-0000-000000000000}") End Function ' Универсальный справочник Function RefUniversal(UserSession) Set RefUniversal = UserSession.CardManager.DictionaryData("{B2A438B7-8BB3-4B13-AF6E-F2F8996E148B}") 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 ' Прикрепление к карточке копии существующей карточки файла Sub AttachCardFileCopy(UserSession, CardData, CardFileID) Dim FileListID, FileListData, FileList FileListID = MainInfo(CardData).Value("FilesID") Set FileListData = UserSession.CardManager.CardData(FileListID) Set FileList = CreateObject("TOFileList.FileList") Set FileList.UserSession = UserSession Set FileList.CardData = FileListData FileList.FileRefs.Clear FileList.CopyExistingFile CardFileID End Sub