Исходный текст
Option Explicit
Call AppendAttributeToObject(ThisObject)
'======================================================================
'Добавить в тип объекта тип атрибута "Комментарий", если его нет
'Замечание 1: выполнять этот скрипт может только системный администратор
'Замечание 2: обратите внимание - при добавлении нового типа атрибута
'ранее созданные пользовательские объекты не обновляются!
'==============================================================================
Sub AppendAttributeToObject(Object)
Dim ObjDefAttrs, AttrDef, NewAttrDef
' Получаем ссылку на коллекцию типов атрибутов объекта
Set ObjDefAttrs = Object.ObjectDef.AttributeDefs
' Если тип атрибута в системе не существует, создать его.
If Not ThisApplication.AttributeDefs.Has("ATTR_COMMENT") Then
Set AttrDef = ThisApplication.AttributeDefs.Create
AttrDef.SysName = "ATTR_COMMENT"
AttrDef.Description = "Комментарий"
AttrDef.Type = tdmString
AttrDef.Comments(0) = "Первый комментарий (тестовый)"
'Значение по умолчанию AttrDef.Value здесь присвоить нельзя -не имеет смысла.
' Только для типов атрибутов, полученных из коллекций ObjectDef.Attributes
Else
Set AttrDef = ThisApplication.AttributeDefs("ATTR_COMMENT")
End If
'В логах отладчика выводим идентификатор
ThisApplication.DebugPrint("Идентификатор нового типа атрибута - " & AttrDef.Handle)
'Если тип объекта не содержит атрибута такого типа, добавить его
If Not ObjDefAttrs.Has(AttrDef) Then
ObjDefAttrs.Add(AttrDef)
MsgBox "Тип атрибута """ & AttrDef.Description _
& """ успешно добавлен к типу объекта """ & Object.ObjectDefName & """."
Else
MsgBox "Атрибут """ & AttrDef.Description & """ уже определен для объектов типа """ _
& Object.ObjectDefName & """."
End If
'теперь можно присвоить значение по умолчанию
ObjDefAttrs.Item(AttrDef).Value = "Новый комментарий"
End Sub
'======================================================================