пока писал пост в клиентском разделе, внезапно кончился ключ коммерческий
в общем, чекфиелдс не подходит по причине того, что элемент может изменяться, в таком случае счётчик в элементе будет меньше текущего.
проверки нужно вытаскивать в обработчики событий 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"])); } } } } } |
а остальное не буду писать, я расстроен
спасибо на лайк не намажешь