пока писал пост в клиентском разделе, внезапно кончился ключ коммерческий
в общем, чекфиелдс не подходит по причине того, что элемент может изменяться, в таком случае счётчик в элементе будет меньше текущего.
проверки нужно вытаскивать в обработчики событий BeforeAdd/Update, а непосредственный инкремент в AfterAdd/Update.
инкремент что-то вроде:
а остальное не буду писать, я расстроен
в общем, чекфиелдс не подходит по причине того, что элемент может изменяться, в таком случае счётчик в элементе будет меньше текущего.
проверки нужно вытаскивать в обработчики событий BeforeAdd/Update, а непосредственный инкремент в AfterAdd/Update.
инкремент что-то вроде:
| Код |
|---|
AddEventHandler("iblock", "OnAfterIBlockElementAdd", Array("MyHandlers", "OnAfterIBlockElementAddHandler"));
class MyHandlers
{
// создаем обработчик события "OnAfterIBlockElementAdd"
function OnAfterIBlockElementAddHandler(&$arFields)
{
if($arFields["RESULT"]) // элемент добавлен
{
$arFilter = array(
"IBLOCK_ID" => $arFields["IBLOCK_ID"],
"USER_TYPE" => "Sequence",
);
$rsProps = CIBlockProperty::GetList(array("id"=>"ASC"),$arFilter); // дёргаем список нужных свойств
while ($prop = $rsProps->Fetch())
{
$prop_val = $arFields["PROPERTY_VALUES"][$prop["ID"]];
$prop_val = current($prop_val);
if (is_array($prop_val))
{
$seq = new CIBlockSequence($prop["IBLOCK_ID"], $prop["ID"]);
$seq->SetNext(intval($prop_val["VALUE"]));
}
}
}
}
}
|
а остальное не буду писать, я расстроен

спасибо на лайк не намажешь