Многие наверное обратили внимание на то что в компоненте bizproc.wizards присутствует галочка "Только один процесс" но по моему мнению она работает не корректно т.к. если мы её поставим у нас отобразится последний бизнес процесс который мы создали. а это нам ни как не годится. В связи с этим я предлагаю сообществу и разработчикам битрикса небольшое решение.
И так решение:
Добавляем константу в файл
/bitrix/components/bitrix/bizproc.wizards/lang/ru/.parameters.php
В файле
/bitrix/components/bitrix/bizproc.wizards/.parameters.php
Находим настройки параметра "SKIP_BLOCK" и заменяем их на следующие
После такого куска кода
добавляем
И в конце файла перед "?>" добавляем
И последний шаг в самой компоненте находим следующий кусок кода:
И после него добавляем следующую строчку:
Готово теперь вы можете в настройках компоненты бизнес процессов выбирать какой именно бизнес процесс отобразить.
Всем спасибо за внимание и удачи в профессиональной деятельности!
И так решение:
Добавляем константу в файл
/bitrix/components/bitrix/bizproc.wizards/lang/ru/.parameters.php
$MESS ['BPWC_WP_IBLOCK'] = "Бизнес процесс"; |
В файле
/bitrix/components/bitrix/bizproc.wizards/.parameters.php
Находим настройки параметра "SKIP_BLOCK" и заменяем их на следующие
"SKIP_BLOCK" => array( "NAME" => GetMessage("BPWC_WP_SKIP_BLOCK"), "TYPE" => "CHECKBOX", "MULTIPLE" => "N", "VALUE" => "Y", "DEFAULT" => "N", "REFRESH" => "Y", "PARENT" => "ADDITIONAL_SETTINGS_2", ), |
После такого куска кода
$arIBlockType = array(); $db = CIBlockType::GetList(array("sort" => "asc"), array("ACTIVE" => "Y")); while ($ar = $db->Fetch()) { if ($ar1 = CIBlockType::GetByIDLang($ar["ID"], LANGUAGE_ID)) $arIBlockType[$ar["ID"]] = "[".$ar["ID"]."] ".$ar1["NAME"]; } |
добавляем
$arIBlock=array(); $rsIBlock = CIBlock::GetList(Array("sort" => "asc"), Array("TYPE" => $arCurrentValues["IBLOCK_TYPE"], "ACTIVE"=>"Y")); while($arr=$rsIBlock->Fetch()) { $arIBlock[$arr["ID"]] = "[".$arr["ID"]."] ".$arr["NAME"]; } |
И в конце файла перед "?>" добавляем
if($arCurrentValues["SKIP_BLOCK"]=="Y") { $arComponentParameters["PARAMETERS"]["IBLOCK_ID"] = array( "PARENT" => "ADDITIONAL_SETTINGS_2", "NAME" => GetMessage("BPWC_WP_IBLOCK"), "TYPE" => "LIST", "VALUES" => $arIBlock, "REFRESH" => "Y", ); } |
И последний шаг в самой компоненте находим следующий кусок кода:
if ($arParams["SKIP_BLOCK"] == "Y" && $componentPage == "index") { $componentPage = "list"; $dbBlockList = CIBlock::GetList( array("SORT" => "ASC", "NAME" => "ASC"), array("ACTIVE" => "Y", "SITE_ID" => SITE_ID, "TYPE" => $arParams["IBLOCK_TYPE"]) ); while ($arBlock = $dbBlockList->Fetch()) $arResult["VARIABLES"]["block_id"] = $arBlock["ID"]; } |
И после него добавляем следующую строчку:
if ((bool)$arParams["IBLOCK_ID"])$arResult["VARIABLES"]["block_id"] = $arParams["IBLOCK_ID"]; |
Готово теперь вы можете в настройках компоненты бизнес процессов выбирать какой именно бизнес процесс отобразить.
Всем спасибо за внимание и удачи в профессиональной деятельности!