Ниже приведен пример использования операции CreateObject для создания объекта репозитория. В запросе передается основная информация, необходимая для создания объекта: идентификатор, наименование и идентификатор класса объекта, описание родительского объекта. Также устанавливается признак создания постоянного объекта, позволяющий сохранить объект сразу после создания. Указывается информация, в соответствии с которой будет обновлен список объектов, имеющихся в рамках родительского объекта после создания нового объекта. Ответ будет содержать описание и моникёр созданного объекта, а также обновленный список объектов, имеющихся в рамках родительского объекта.
В примере C# используется функция FindObjectById, код которой приведен в примере «Получение описания объекта по его идентификатору».
{
"CreateObject" :
{
"tParent" :
{
"id" : "FNDKOLJACBNNFOAEDCEENEKPOGMMOOGEBLEIHFKEJOFOFMNJ!M!0"
},
"tArg" :
{
"info" :
{
"name" : "NewForm1",
"id" : "NewForm1",
"parent" :
{
"@isShortcut" : "false",
"@isLink" : "false",
"@hf" : "false",
"i" : "WORK",
"n" : "Work",
"k" : "62",
"c" : "0",
"p" : "70",
"h" : "false",
"hasPrv" : "false",
"ic" : "false"
},
"permanent" : "true",
"classId" : "1538"
},
"getObjects" :
{
"parent" :
{
"id" : "FNDKOLJACBNNFOAEDCEENEKPOGMMOOGEBLEIHFKEJOFOFMNJ!M!62"
},
"filter" :
{
"hideEmptyFolders" : "true",
"classes" :
{
"it" :
{
"k" : "1538"
}
}
},
"arg" :
{
"pattern" :
{
"n" : "false",
"i" : "true",
"ts" : "false",
"ds" : "false",
"isShortcut" : "false"
}
}
}
}
}
}
{
"CreateObjectResult" :
{
"id" :
{
"id" : "FNDKOLJACBNNFOAEDCEENEKPOGMMOOGEBLEIHFKEJOFOFMNJ!M!305000"
},
"object" :
{
"@ds" : "",
"@isShortcut" : "0",
"@isLink" : "0",
"@ver" : "1",
"@hf" : "0",
"i" : "NEWFORM1",
"n" : "NewForm1",
"k" : "305000",
"c" : "1538",
"p" : "62",
"h" : "0",
"hasPrv" : "0",
"ic" : "0",
"trackElementDependents" : "0",
"obId" :
{
"id" : "FNDKOLJACBNNFOAEDCEENEKPOGMMOOGEBLEIHFKEJOFOFMNJ!M!305000"
}
},
"objects" :
{
"id" :
{
"id" : "FNDKOLJACBNNFOAEDCEENEKPOGMMOOGEBLEIHFKEJOFOFMNJ!M!0"
},
"objects" :
{
"its" :
{
"d" :
{
"@isShortcut" : "0",
"@isLink" : "0",
"@hf" : "0",
"i" : "NEWFORM1",
"n" : "",
"k" : "305000",
"c" : "1538",
"p" : "62",
"h" : "0",
"hasPrv" : "0",
"ic" : "0"
}
}
}
}
}
}
public static CreateObjectResult CreateObject(MbId mb, string parent, string id, ulong classId)
{
var somClient = new SomPortTypeClient(); //Прокси-объект для выполнения операций
//Параметры выполнения операции
var tParent = FindObjectById(mb, parent);
var tCreateObj = new CreateObject()
{
tArg = new CreateObjectArg()
{
//Информация о создаваемом объекте
info = new ObjectCreateInfo()
{
classId = classId,
id = id,
name = id,
parent = tParent,
permanent = true
},
//Параметры обновления репозитория после создания объекта
getObjects = new GetObjectsOpArg()
{
arg = new GetObjectsArg()
{
//Шаблон извлекаемой информации
pattern = new OdsPattern()
{
ds = false,
i = true,
isShortcut = false,
n = false,
ts = false
}
},
filter = new OdsFilt()
{
classes = new OdClass[1]
{
//Обновить список объектов с тем же классом, с каким был создан новый объект
new OdClass(){k = classId},
},
hideEmptyFolders = true
},
//Указание родительского объекта, содержимое которого будет обновлено
parent = new OdId() { id = mb.id + "!" + tParent.k }
}
},
tParent = new OdId()
{
id = mb.id + "!0"
}
};
//Создание объекта
var result = somClient.CreateObject(tCreateObj);
return result;
}
См. также: