Описание
Скрипт на изменение свойства. Получает значение свойства "Вид договора", типа запись универсального справочника, получает свойство "Группа согласующих" в справочнике, получает состав группы и записывает сотрудников в свойство карточки "Согласующие лица".
Тело
Code Block |
---|
' Скрипт, получающий состав группы Function DoEvent(UserSession, CardFrame, CardData, ActivateFlags, ModeID, FolderID, PropValue) Dim MembersProp, MembersPropVals, UniItemID, UniItem, GroupProp Dim GroupID, Group, Staff, Members, Member, EmplID, DispVal Set MembersProp = Prop(CardData, "Согласующие лица") Set MembersPropVals = SubSect(MembersProp, "SelectedValues") MembersProp.Value("DisplayValue") = vbNullString MembersPropVals.Rows.Clear UniItemID = GetProp(CardData, "Вид договора", Null) If Not IsNull(UniItemID) Then Set UniItem = Sect(RefUniversal(UserSession), "Item").GetRow(UniItemID) Set GroupProp = SubSect(UniItem, "Properties").FindRow("@Name='Группа согласующих'") If Not GroupProp Is Nothing Then GroupID = GroupProp.Value("Value") If Not IsNull(GroupID) Then Set Group = Sect(RefStaff(UserSession), "AlternateHierarchy").GetRow(GroupID) Set Members = SubSect(Group, "Group").Rows DispVal = vbNullString Set Staff = StaffObject(UserSession) For Each Member In Members EmplID = Member.Value("EmployeeID") With MembersPropVals.Rows.AddNew .Value("Order") = MembersPropVals.Rows.Count .Value("SelectedValue") = EmplID End With DispVal = DispVal & "; " & Staff.GetEmployeeName(EmplID, True) Next If Len(DispVal) > 0 Then DispVal = Right(DispVal, Len(DispVal) - 2) End If MembersProp.Value("DisplayValue") = DispVal End If Else MsgBox "Не найдено свойство записи универсального справочника Группа согласующих", vbOKOnly or vbExclamation, "Предупреждение" End If End If DoEvent = 2 End Function ' Универсальный справочник Function RefUniversal(UserSession) Set RefUniversal = UserSession.CardManager.DictionaryData("{B2A438B7-8BB3-4B13-AF6E-F2F8996E148B}") End Function ' Справочник сотрудников Function RefStaff(UserSession) Set RefStaff = UserSession.CardManager.DictionaryData("{6710B92A-E148-4363-8A6F-1AA0EB18936C}") End Function ' Получение StaffObject Function StaffObject(UserSession) Set StaffObject = CreateObject("TOHelperObjects.StaffObject") Set StaffObject.UserSession = UserSession 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 ' Строка свойства 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 |