$elementId=1; //ID элемента в который нужно добавить
$tmpFilePath=$_SERVER['DOCUMENT_ROOT']."/upload/picatest.jpg";
$arFile=array("VALUE" => \CFile::MakeFileArray($tmpFilePath),"DESCRIPTION"=>"");
\CIBlockElement::SetPropertyValueCode($elementId, 'MORE_PHOTO', $arFile);
таким обновлением он картинки не удаляет если были, а дописывает
если нужно несколько картинок к элементу
то собираем все в массив $arFile (пример без циклов и прочего)
$elementId=1; //ID элемента в который нужно добавить
$tmpFilePath=$_SERVER['DOCUMENT_ROOT']."/upload/picatest1.jpg";
$arFile[]=array("VALUE" => \CFile::MakeFileArray($tmpFilePath),"DESCRIPTION"=>"");
$tmpFilePath=$_SERVER['DOCUMENT_ROOT']."/upload/picatest2.jpg";
$arFile[]=array("VALUE" => \CFile::MakeFileArray($tmpFilePath),"DESCRIPTION"=>"");
$tmpFilePath=$_SERVER['DOCUMENT_ROOT']."/upload/picatest3.jpg";
$arFile[]=array("VALUE" => \CFile::MakeFileArray($tmpFilePath),"DESCRIPTION"=>"");
\CIBlockElement::SetPropertyValueCode($elementId, 'MORE_PHOTO', $arFile);