Процесс создания нового определения свойств через API аналогичен процессу через пользовательский интерфейс Renga с той разницей, что через API имеется возможно задать идентификатор свойства, а через UI - нет.

Шаг 1 - Создать определение свойства

Здесь мы вынуждены прибегнуть к тавтологии. Необходимо создать вспомогательный объект, описываемый COM-оболочкой Renga.IPropertyDescription, который будет содержать информацию о новом определении свойства -- его имени и типе. Тип описывается стандартным перечислением Renga.PropertyType из состава библиотеки типов. Альтернативный сценарий - создать экземпляр структуры Renga.PropertyDescription и задать ей поля Name и Type аналогично аргументам метода CreatePropertyDescription.

Renga.IPropertyManager manager;
// Вариант 1
Renga.IPropertyDescription propDef = manager.CreatePropertyDescription("DeveloperName", 
	Renga.PropertyType.PropertyType_String);
// Вариант 2
Renga.PropertyDescription propDef2 = new Renga.PropertyDescription(){Name = "DeveloperName", 
	Type = Renga.PropertyType.PropertyType_String};

Шаг 2 - Зарегистрировать свойство

Далее, в зависимости от того, чем представлено определение свойства -- COM-оболочкой Renga.IPropertyDescription или структурой Renga.PropertyDescription необходимо зарегистрировать определение свойства с указанным идентификатором в проекте Renga. В первом случае -- через метод RegisterProperty2, во второй -- через метод RegisterProperty. Проверить, занят ли данный идентификатор для нового определения свойства перед его добавлением можно через метод IsPropertyRegistered.

Renga.IPropertyManager manager;
Guid newPropDefId = Guid.Parse("06f8a29e-c932-4432-961c-8a61e5a9c8b8");
if (manager.IsPropertyRegistered(newPropDefId)) return;
// Вариант 1
manager.RegisterProperty2(newPropDefId, propDef);
// Вариант 2
manager.RegisterProperty(newPropDefId, propDef2);

Пока свойство не будет зарегистрировано, оно не появится в проекте. Можно считать данный процесс аналогичным созданию. Обратная процедура -- UnregisterProperty фактически означает удаление свойства из проекта.

Шаг 3 - Связывание свойства с типами объектов

Далее необходимо добавить определение свойства к одному или нескольким типам объектов. Типы объектов - это Guid из класса Renga.EntityTypes. Проверить, назначено ли свойство объекту можно с помощью метода IsPropertyAssignedToType. Связать свойство с объектом можно через метод AssignPropertyToType.

Прочие действия

Можно задать формулу SetExpression для расчета значения свойства (формула назначается для заданного типа объекта), перед добавлением свойство должно быть добавлено к типу объекта (шаг 3). Для определения свойства можно задать флаг, что оно будет выгружаться в CSV через метод SetCSVExportFlag.