Не могу получить Код статуса элемента в документообороте WF_STATUS_ID.
После использования функции GetFields(), поля - WF_STATUS_ID не существует.
После использования функции GetFields(), поля - WF_STATUS_ID не существует.
07.05.2012 02:15:44
Не могу получить Код статуса элемента в документообороте WF_STATUS_ID.
После использования функции GetFields(), поля - WF_STATUS_ID не существует. |
|
|
|
07.05.2012 13:00:35
В файле компонента \bitrix\components\bitrix\catalog.section\component.php в 403 стороке.
while($obElement = $rsElements->GetNextElement()) { $arItem = $obElement->GetFields(); ... } Так вот почему там нет WF_STATUS_ID? Здесь И кстати проблему решил в файле в шаблона components\bitrix\catalog.section\list\template.php прописал: $rsWFStatus = CWorkflowStatus::GetList($by="c_sort", $order="asc", Array("ACTIVE" => "Y"), $is_filtered); $arResult["WF_STATUS"] = array(); while ($arStatus = $rsWFStatus->GetNext()) { $arResult["WF_STATUS"][$arStatus["ID"]] = $arStatus["TITLE"]; } ... $WF_STATUS_ID = CIBlockElement::WF_GetCurrentStatus($arElement["ID"]); echo $arResult["WF_STATUS"][$WF_STATUS_ID]; И опять же что за функция WF_GetCurrentStatus? не помню где нашёл, описание в API вроде бы нет. |
|
|
|
07.05.2012 14:07:14
C файлом шаблона всё нормально, я его скопировал в свой шаблон.
Проверил стандартным выводом: <?php echo "<pre>"; print_r($arItem); echo "</pre>"; ?> C изменение стандартных компонентов под себя тоже знаком. |
|
|
|
07.05.2012 14:40:32
По-идеи GetFields возвращает описание полей элементов инфоблоков, там кажется не должно быть WF_STATUS_ID.
WF_STATUS_ID есть в CIBlockElement::GetList. Если бы в 396 строчке файла компонента \bitrix\components\bitrix\catalog.section\component.php небыло параметра $arSelect (массив выводимых полей), то по-идеи должны были бы вернуться все поля, включая WF_STATUS_ID. Что показывает <?php echo "<pre>"; print_r($arItem); echo "</pre>"; ?> ???? |
|
|
|
07.05.2012 14:57:42
Ошибся! Че-то в голову влез CIBlock::GetFields. Это ведь вроде _CIBElement::GetFields(). В этом случае должно было бы вернуть WF_STATUS_ID.
А что говорит print_r($arItem)? |
|
|
|
07.05.2012 15:01:23
Array
( [ID] => 96 [~ID] => 96 [NAME] => Задание 1 [~NAME] => Задание 1 [CODE] => [~CODE] => [DATE_CREATE] => 06.05.2012 20:19:26 [~DATE_CREATE] => 06.05.2012 20:19:26 [ACTIVE_FROM] => 06.05.2012 20:19:26 [~ACTIVE_FROM] => 06.05.2012 20:19:26 [CREATED_BY] => 1 [~CREATED_BY] => 1 [IBLOCK_ID] => 8 [~IBLOCK_ID] => 8 [IBLOCK_SECTION_ID] => [~IBLOCK_SECTION_ID] => [DETAIL_PAGE_URL] => /people/taskdetail.php?ID=96 [~DETAIL_PAGE_URL] => /people/taskdetail.php?ID=96 [DETAIL_TEXT] => Текст Задание 1 [~DETAIL_TEXT] => Текст Задание 1 [DETAIL_TEXT_TYPE] => text [~DETAIL_TEXT_TYPE] => text [DETAIL_PICTURE] => [~DETAIL_PICTURE] => [PREVIEW_TEXT] => [~PREVIEW_TEXT] => [PREVIEW_TEXT_TYPE] => text [~PREVIEW_TEXT_TYPE] => text [PREVIEW_PICTURE] => [~PREVIEW_PICTURE] => [LANG_DIR] => / [~LANG_DIR] => / [SORT] => 500 [~SORT] => 500 [EXTERNAL_ID] => 96 [~EXTERNAL_ID] => 96 [IBLOCK_TYPE_ID] => info [~IBLOCK_TYPE_ID] => info [IBLOCK_CODE] => task [~IBLOCK_CODE] => task [IBLOCK_EXTERNAL_ID] => [~IBLOCK_EXTERNAL_ID] => [LID] => s1 [~LID] => s1 ) Я вроде бы понял почему его нет. Потому что в 306 строке задаётся выборка полей $arSelect. Но если я ставлю туда WF_STATUS_ID, то всегда выдаёт 1(единицу). Может поле не так должно называться. |
|
|
|
07.05.2012 15:12:48
Странно ... в компоненте в выборке WF_STATUS_ID всегда 1(единица), а в шаблоне функция WF_GetCurrentStatus берёт правильный статус.
|
|
|
|
07.05.2012 15:44:20
А статус что, должен быть не 1? Что берет WF_GetCurrentStatus?
|
|
|
|
07.05.2012 16:05:44
WF_GetCurrentStatus выводит правильные статусы элементов, когда я их меняю через админку:
1-Опубликован 2-Черновик 3-Готов А при выборке в компоненте WF_STATUS_ID всегда 1(единица) - получается, что всегда "Опубликован". Хотя он на самом деле, к примеру, 2-Черновик |
|
|
|
07.05.2012 16:24:20
Когда я менял статус документа из "Опубликован" на "Готов", то у меня у данного документа было два статуса "Готов" и "Опубликован". Может у вас так же?!
Попробуйте создать новый документ со статусом "Черновик" и посмотрите его в выборке. Или посмотрите на статус уже созданного в меню "Контент" админки. Может и у вас два статуса у данного документа. |
|
|
|
07.05.2012 16:43:57
Как я уже не пробовал менять статусы. У меня там уже много элементов с разными статусами(есть и с двумя), только при выборке почему-то всегда 1
|
|
|
|
07.05.2012 16:53:59
А где вы дописали в выборку поле WF_STATUS_ID?
|
|
|
|
07.05.2012 17:02:07
в 306-324 строчках файла компонента \bitrix\components\bitrix\catalog.section\component.php
$arSelect = array( "ID", "NAME", "CODE", "DATE_CREATE", "ACTIVE_FROM", "CREATED_BY", "IBLOCK_ID", "IBLOCK_SECTION_ID", "DETAIL_PAGE_URL", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "DETAIL_PICTURE", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE", "PREVIEW_PICTURE", "WF_STATUS_ID", //EDIT "PROPERTY_*", ); |
||||
|
|
|||