Если в атрибуте есть несколько файлов, и один из них например Аутентичный, то удалить его можно найдя по индексу
using System;
using Intermech;
using Intermech.Interfaces;
namespace Test
{
public class Script
{
public ICSharpScriptContext ScriptContext { get; set; }
public void Execute(IUserSession session, string[] scriptArgs)
{
var objVersionID = 91256501;
var fileType = FileTypes.ftAuthentical;
var objAttrFile = session.GetObjectAttributeByGuid(objVersionID, new Guid(SystemGUIDs.attributeFile));
bool valueIsFound = false;
for (var index = 0; index < objAttrFile.ValuesCount; index++)
{
objAttrFile.Index = index;
var iBlobReader = objAttrFile as IBlobReader;
if (iBlobReader == null)
continue;
var bi = iBlobReader.OpenBlob(-1);
iBlobReader.CloseBlob();
if (bi.FileType == fileType)
{
valueIsFound = true;
break;
}
}
if (valueIsFound)
{
objAttrFile.DeleteValue();
}
}
}
}
Не забудьте, что атрибут зачастую можно редактировать только у объекта, взятого на изменение и с определенным шагом ЖЦ.