Исходный текст
Option Explicit
Call CreateObjectDef(ThisApplication.ObjectDefs)
'==============================================================================
'Создать новый тип объекта в приложении.
'Скрипт может выполнять только системный администратор
'==============================================================================
Sub CreateObjectDef(ObjDefsCol)
Dim StrRet, NewObjDef, NewObj, i, EditObjDlg, StrSysName
'Запросить описание нового типа
StrRet = InputBox("Введите описание для нового типа объекта:")
'Если введена пустая строка или диалог отменен, выйти из процедуры
If StrRet="" Then Exit Sub
'Проверить, существует ли такое системное имя; если да - запросить другое
StrSysName = "TYPE_NEW"
While ObjDefsCol.Has(StrSysName)
StrSysName = InputBox("Введите другое сист. имя (такое уже есть):",, StrSysName)
Wend
'Создать новый тип объекта
Set NewObjDef = ObjDefsCol.Create
' Присваиваем свойства новому типу
With NewObjDef
.SysName = StrSysName 'системное имя
.Description = StrRet 'описание
.Comments(0) = "Тестовый первый комментарий"
' Добавляем типы атрибутов
For i=0 To 3
.AttributeDefs.Add ThisApplication.AttributeDefs.Item(i)
Next
' Добавляем типы файлов
.AllFileDefs = FALSE 'не может содержать все типы файлов
For i=0 To 3
.FileDefs.Add ThisApplication.FileDefs.Item(i)
Next
' Добавляем типы объектов, которые могут быть в составе
.AllObjectDefs = FALSE 'не может содержать все типы Объектов
For i=0 To 3
.ObjectDefs.Add ThisApplication.ObjectDefs.Item(i)
Next
' Добавляем форму ввода
.InputForms.Add ThisApplication.InputForms.Item(0)
'Включим поддержку версионности
.VersionsEnabled = TRUE
End With
'В логах отладчика выводим идентификатор
ThisApplication.DebugPrint("Идентификатор нового типа объекта - " & NewObjDef.Handle)
'Создадим производный объект...
Set NewObj = NewObjDef.CreateObject
'...и откроем его в диалоге редактирования. Необходимо учесть, что новый объект
'создается не в коллекции, а прямо в базе, и искать его (после закрытия диалога)
'придется с помощью выборки.
Set EditObjDlg = ThisApplication.Dialogs.EditObjectDlg
EditObjDlg.Object = NewObj
EditObjDlg.Show
End Sub
'==============================================================================