Пример использования операции SaveObjectAs для создания копии объекта репозитория. В запросе передается моникёр копируемого объекта, описание родительского объекта, в котором будет создана копия, а также параметры создания копии. В ответе приходит обновленный список объектов той папки, в который была создана копия.
В JSON-запросе передается моникёр объекта, для которого необходимо создать копию, а также параметры создания копии. В JSON-ответе приходит обновленный список объектов той папки, в который была создана копия.
{
"SaveObjectAs" :
{
"tObject" :
{
"id" : "S1!M!176019"
},
"tArg" :
{
"destination" :
{
"operation" : "CreateNew",
"create" :
{
"name" : "Регламентный отчет(Копия)",
"id" : "REPORT_Copy",
"parent" :
{
"@isShortcut" : "false",
"@isLink" : "false",
"@hf" : "false",
"i" : "WORK",
"n" : "Work",
"k" : "62",
"c" : "0",
"p" : "70",
"h" : "false",
"hasPrv" : "false",
"ic" : "false"
}
},
"withData" : "true",
"autoGenerateName" : "true"
},
"getObjects" :
{
"parent" :
{
"id" : "S1!M!62"
}
}
}
}
}
{
"SaveObjectAsResult" :
{
"object" :
{
"@ds" : "",
"@isShortcut" : "0",
"@isLink" : "0",
"@ver" : "2",
"@hf" : "0",
"i" : "REPORT_COPY",
"n" : "Регламентный отчет(Копия)",
"k" : "176178",
"c" : "2562",
"p" : "62",
"h" : "0",
"hasPrv" : "0",
"ic" : "0",
"obId" :
{
"id" : "S1!M!176178"
}
},
"objects" :
{
"id" :
{
"id" : "S1!M!176019"
},
"objects" :
{
"its" :
{
"d" :
{
"@isShortcut" : "0",
"@isLink" : "0",
"@hf" : "0",
"i" : "REPORT_COPY",
"n" : "Регламентный отчет(Копия)",
"k" : "176178",
"c" : "2562",
"p" : "62",
"h" : "0",
"hasPrv" : "0",
"ic" : "0"
}
}
}
}
}
}
Указанная ниже функция CreateCopyObj создает копию объекта. Идентификатор копируемого объекта, а также родительского объекта, в котором будет создана копия, передаются посредством входных параметров objId и parentId. В примере используется функция FindObjectById, код которой приведен в примере «Получение описания объекта по его идентификатору». Результат выполнения операции является результатом выполнения функции.
public static SaveObjectAsResult CreateCopyObj(MbId mb, string objId, string parentId)
{
var somClient = new SomPortTypeClient(); //Прокси-объект для выполнения операций
var tObj = FindObjectById(mb, objId);
var tParent = FindObjectById(mb, parentId);
//Параметры выполнения операции
var tSave = new SaveObjectAs()
{
tArg = new SaveObjectAsArg()
{
destination = new ObjectCopyInfo()
{
//Действие - создание копии
operation = ObjectCopyOperation.CreateNew,
create = new ObjectCreateBaseInfo()
{
id = tObj.i + "_Copy",
name = tObj.n + "(Копия)",
parent = tParent
},
withData = true
},
getObjects = new GetObjectsOpArg()
{
parent = new OdId() { id = mb.id + "!" + tParent.k }
}
},
tObject = new OdId()
{
id = mb.id + "!" + tObj.k
}
};
//Создание копии
var result = somClient.SaveObjectAs(tSave);
return result;
}
См. также: