[QUOTE]
Иван Малышин написал:
Виктор Семенцов , суть экзамена, чтобы бы в процессе подготовки обрели нужные компетенции. Готовый ответ ответ на задание - противоречит этой сути.
Вы хотите компетенцию реальную получить, или "бумажку"? Вам же нужно будет при разработке ваших проектов правильно определять что в кеш поместить и как это делать.
Определяется все очень просто, я настаиваю что вам очень важно и полезно самому разобраться
Я рассказывал что к чему [URL=https://academy.1c-bitrix.ru/education/?COURSE_ID=66&LESSON_ID=9077&LESSON_PATH=5863.9077]https://academy.1c-bitrix.ru/education/?COURSE_ID=66&LESSON_ID=9077&LESSON_PATH=5863.9077[/URL][/QUOTE]
Немного напрягает, что нигде, ни в курсах, ни в документации не нашёл примеров с вызовом пустого массива SetResultCacheKeys(array()); или SetResultCacheKeys(false); или просто SetResultCacheKeys(); Очевидный же пример, убрать кеширование arResult совсем Может это обучающий момент, но блин, пришлось в ядро лезть смотреть что метод делает.. Ещё больше напрягает, что когда спрашиваешь людей уже сдавших экзамен, они не могут ответить на вопрос что туда писать (двоих спрашивал), начинаешь сомневаться, а то ли вообще делаешь, может быть есть специальный метод, который обнуляет arResultCacheKeys, но везде про SetResultCacheKeys и как плохо в него добавлять DETAIL_TEXT
К слову над методом SetResultCacheKeys($arResultCacheKeys); странная интструкция @param array[int]string $arResultCacheKeys , смотрим документацию [URL=https://docs.phpdoc.org/references/phpdoc/types.html#arrays]https://docs.phpdoc.org/references/phpdoc/types.html#arrays[/URL] [URL=https://docs.phpdoc.org/guides/types.html#arrays]https://docs.phpdoc.org/guides/types.html#arrays[/URL] хм... ну в принципе по коду видно что должен быть массив, иначе при array_merge в arResultCacheKeys всегда будет false..
копаем дальше, в методе showComponentTemplate видим:[CODE]if(is_array($this->arResultCacheKeys))
{
$arNewResult = array();
foreach($this->arResultCacheKeys as $key)
if(array_key_exists($key, $this->arResult))
$arNewResult[$key] = $this->arResult[$key];
$this->arResult = $arNewResult;
}[/CODE]ага, значит покатит или пустой массив или массив с левыми ключами. Или всё таки есть специальный метод, который обнуляет arResultCacheKeys?