Вкратце, логика такая. Будем, например, хранить право на изменение в $arResult['EDIT']=false;
Пусть имеется множественное свойство "USER", означающее право пользователя редактировать элемент, тогда запрос с фильтром по нему даст хотя бы один результат, что будет означать разрешение на редактирование:
[CODE]$rs=CIBlockElement::GetList(array(), array('IBLOCK_ID'=>$iblock_id,'ID'=>$id,'PROPERTY_USER'=>$USER->GetID()), false, array('nTopCount'=>1), array());
if($ar=$rs->GetNext()) $arResult['EDIT']=true;[/CODE]
Другое условие, если текущий юзер является автором текущего элемента ($arElement), проверяется просто [CODE]if($arElement['CREATED_BY']==$USER->GetID()) $arResult['EDIT']=true;[/CODE]
Третье условие - если у юзера есть стандартное право на изменение всего иблока (CIBlock::GetPermission).
Далее, используя $arResult['EDIT'] в шаблоне компонента можно добавлять (свою собственную) форму редактирования или ссылку на страницу редактирования, а в коде компонента и/или страницы редактирования по такому же условию при наличии данных с отправленной формы делать CIBlockElement::Update.
Если лень писать свою форму, можно модифицировать типовой компонент, добавив в том месте, где проверяется право редактирования, дополнительную проверку PROPERTY_USER и CREATED_BY.
Пусть имеется множественное свойство "USER", означающее право пользователя редактировать элемент, тогда запрос с фильтром по нему даст хотя бы один результат, что будет означать разрешение на редактирование:
[CODE]$rs=CIBlockElement::GetList(array(), array('IBLOCK_ID'=>$iblock_id,'ID'=>$id,'PROPERTY_USER'=>$USER->GetID()), false, array('nTopCount'=>1), array());
if($ar=$rs->GetNext()) $arResult['EDIT']=true;[/CODE]
Другое условие, если текущий юзер является автором текущего элемента ($arElement), проверяется просто [CODE]if($arElement['CREATED_BY']==$USER->GetID()) $arResult['EDIT']=true;[/CODE]
Третье условие - если у юзера есть стандартное право на изменение всего иблока (CIBlock::GetPermission).
Далее, используя $arResult['EDIT'] в шаблоне компонента можно добавлять (свою собственную) форму редактирования или ссылку на страницу редактирования, а в коде компонента и/или страницы редактирования по такому же условию при наличии данных с отправленной формы делать CIBlockElement::Update.
Если лень писать свою форму, можно модифицировать типовой компонент, добавив в том месте, где проверяется право редактирования, дополнительную проверку PROPERTY_USER и CREATED_BY.