no_one_safe: Да. К сожалению не нашел где вызывается комплексно в папке компонента. Но нашел еще файл .parameters.php там есть код связанный с sku возможно он как-то связан
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
use Bitrix\Main\Loader;
use Bitrix\Main\ModuleManager;
if (!Loader::includeModule('iblock'))
return;
$boolCatalog = Loader::includeModule('catalog');
Спасибо за подробный ответ, но столкнулся с проблемой что я не нашел в коде вызова компонента каталог для того чтобы создавать кеш для каждого торгового предложения. При редактировании компонента вот код который есть
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
/** var array $arParams */
/** var array $arResult */
/** @global CMain $APPLICATION */
/** @global CUser $USER */
/** @global CDatabase $DB */
/** var CBitrixComponentTemplate $this */
/** var string $templateName */
/** var string $templateFile */
/** var string $templateFolder */
/** var string $componentPath */
/** var CBitrixComponent $component */
use Bitrix\Main\Loader;
use Bitrix\Main\ModuleManager;
Не плохое решение, но не для меня. Я вывожу на принт через специальные запросы на мобильные принтер посредством iPad. Получиться как по мне все очень сложно...
Александр: Александр, подскажите пожалуйста как в Xcode можно проверить скорость выполнения? Мне просто для себя интересно сравнить два метода по скорости.
Александр: а как добавить case в условие чтобы если он уже нашел делить то выходил из цикла а не все возможные проверял? Или это не нужно?Так тогда логичнее с 1 начинать т.к. один является простым числом верно же?
Александр: Можно описать пожалуйста для чего конкретно мы это делаем? Все простые числа заканчиваются на 1-3-7-9 это я заметил. Если сделать d=3 и каждый жат прибавлять +2 получается 3-5-7-9-1-3-5-7-9 и тд., но все же 5 является не простым числом, его пропускать не получится? По поводу p=1 и p=+2 зачем это? Ведь нам нужно cases добавить в условие
Но у сканера же тоже должен быть API насколько я понимаю чтобы знать в каком видео он запрос посылает и тд, или я ошибаюсь? А если это будет не сканер а терминал со сканером который будет иметь доступ в интернет, это упростит работу или нет? Например напрямую с терминала отправлять данные на сервер.
Нужно искать программиста который пропишет это все в самом сайте или нужно писать дополнительную программу которая будет являться посредником между сайтом и сканером?
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
use Bitrix\Main\Loader;
use Bitrix\Main\ModuleManager;
if (!Loader::includeModule('iblock'))
return;
$boolCatalog = Loader::includeModule('catalog');
$arSKU = false;
$boolSKU = false;
if ($boolCatalog && (isset($arCurrentValues['IBLOCK_ID']) && (int)$arCurrentValues['IBLOCK_ID']) > 0)
{
$arSKU = CCatalogSKU::GetInfoByProductIBlock($arCurrentValues['IBLOCK_ID']);
$boolSKU = !empty($arSKU) && is_array($arSKU);
}
$arTemplateParameters = array(
);
if (isset($arCurrentValues['IBLOCK_ID']) && (int)$arCurrentValues['IBLOCK_ID'] > 0)
{
$arAllPropList = array();
$arFilePropList = array(
'-' => GetMessage('CP_BC_TPL_PROP_EMPTY')
);
$arListPropList = array(
'-' => GetMessage('CP_BC_TPL_PROP_EMPTY')
);
$arHighloadPropList = array(
'-' => GetMessage('CP_BC_TPL_PROP_EMPTY')
);
$rsProps = CIBlockProperty::GetList(
array('SORT' => 'ASC', 'ID' => 'ASC'),
array('IBLOCK_ID' => $arCurrentValues['IBLOCK_ID'], 'ACTIVE' => 'Y')
);
while ($arProp = $rsProps->Fetch())
{
$strPropName = '['.$arProp['ID'].']'.('' != $arProp['CODE'] ? '['.$arProp['CODE'].']' : '').' '.$arProp['NAME'];
if ('' == $arProp['CODE'])
$arProp['CODE'] = $arProp['ID'];
$arAllPropList[$arProp['CODE']] = $strPropName;
if ('F' == $arProp['PROPERTY_TYPE'])
$arFilePropList[$arProp['CODE']] = $strPropName;
if ('L' == $arProp['PROPERTY_TYPE'])
$arListPropList[$arProp['CODE']] = $strPropName;
if ('S' == $arProp['PROPERTY_TYPE'] && 'directory' == $arProp['USER_TYPE'] && CIBlockPriceTools::checkPropDirectory($arProp))
$arHighloadPropList[$arProp['CODE']] = $strPropName;
}
if ($boolSKU)
{
$arDisplayModeList = array(
'N' => GetMessage('CP_BC_TPL_DML_SIMPLE'),
'Y' => GetMessage('CP_BC_TPL_DML_EXT')
);
$arAllOfferPropList = array();
$arFileOfferPropList = array(
'-' => GetMessage('CP_BC_TPL_PROP_EMPTY')
);
$arTreeOfferPropList = array(
'-' => GetMessage('CP_BC_TPL_PROP_EMPTY')
);
$rsProps = CIBlockProperty::GetList(
array('SORT' => 'ASC', 'ID' => 'ASC'),
array('IBLOCK_ID' => $arSKU['IBLOCK_ID'], 'ACTIVE' => 'Y')
);
while ($arProp = $rsProps->Fetch())
{
if ($arProp['ID'] == $arSKU['SKU_PROPERTY_ID'])
continue;
$arProp['USER_TYPE'] = (string)$arProp['USER_TYPE'];
$strPropName = '['.$arProp['ID'].']'.('' != $arProp['CODE'] ? '['.$arProp['CODE'].']' : '').' '.$arProp['NAME'];
if ('' == $arProp['CODE'])
$arProp['CODE'] = $arProp['ID'];
$arAllOfferPropList[$arProp['CODE']] = $strPropName;
if ('F' == $arProp['PROPERTY_TYPE'])
$arFileOfferPropList[$arProp['CODE']] = $strPropName;
if ('N' != $arProp['MULTIPLE'])
continue;
if (
'L' == $arProp['PROPERTY_TYPE']
|| 'E' == $arProp['PROPERTY_TYPE']
|| ('S' == $arProp['PROPERTY_TYPE'] && 'directory' == $arProp['USER_TYPE'] && CIBlockPriceTools::checkPropDirectory($arProp))
)
$arTreeOfferPropList[$arProp['CODE']] = $strPropName;
}
$arTemplateParameters['OFFER_ADD_PICT_PROP'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BC_TPL_OFFER_ADD_PICT_PROP'),
'TYPE' => 'LIST',
'MULTIPLE' => 'N',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'N',
'DEFAULT' => '-',
'VALUES' => $arFileOfferPropList
);
$arTemplateParameters['OFFER_TREE_PROPS'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BC_TPL_OFFER_TREE_PROPS'),
'TYPE' => 'LIST',
'MULTIPLE' => 'Y',
'ADDITIONAL_VALUES' => 'N',
'REFRESH' => 'N',
'DEFAULT' => '-',
'VALUES' => $arTreeOfferPropList
);
}
}
if ($boolCatalog)
{
$arTemplateParameters['USE_COMMON_SETTINGS_BASKET_POPUP'] = array(
'PARENT' => 'BASKET',
'NAME' => GetMessage('CP_BC_TPL_USE_COMMON_SETTINGS_BASKET_POPUP'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
'REFRESH' => 'Y'
);
$useCommonSettingsBasketPopup = (
isset($arCurrentValues['USE_COMMON_SETTINGS_BASKET_POPUP'])
&& $arCurrentValues['USE_COMMON_SETTINGS_BASKET_POPUP'] == 'Y'
);
$addToBasketActions = array(
'BUY' => GetMessage('ADD_TO_BASKET_ACTION_BUY'),
'ADD' => GetMessage('ADD_TO_BASKET_ACTION_ADD')
);
$arTemplateParameters['COMMON_ADD_TO_BASKET_ACTION'] = array(
'PARENT' => 'BASKET',
'NAME' => GetMessage('CP_BC_TPL_COMMON_ADD_TO_BASKET_ACTION'),
'TYPE' => 'LIST',
'VALUES' => $addToBasketActions,
'DEFAULT' => 'ADD',
'REFRESH' => 'N',
'HIDDEN' => ($useCommonSettingsBasketPopup ? 'N' : 'Y')
);
$arTemplateParameters['COMMON_SHOW_CLOSE_POPUP'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BC_TPL_COMMON_SHOW_CLOSE_POPUP'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
);
$arTemplateParameters['TOP_ADD_TO_BASKET_ACTION'] = array(
'PARENT' => 'BASKET',
'NAME' => GetMessage('CP_BC_TPL_TOP_ADD_TO_BASKET_ACTION'),
'TYPE' => 'LIST',
'VALUES' => $addToBasketActions,
'DEFAULT' => 'ADD',
'REFRESH' => 'N',
'HIDDEN' => (!$useCommonSettingsBasketPopup ? 'N' : 'Y')
);
$arTemplateParameters['SECTION_ADD_TO_BASKET_ACTION'] = array(
'PARENT' => 'BASKET',
'NAME' => GetMessage('CP_BC_TPL_SECTION_ADD_TO_BASKET_ACTION'),
'TYPE' => 'LIST',
'VALUES' => $addToBasketActions,
'DEFAULT' => 'ADD',
'REFRESH' => 'N',
'HIDDEN' => (!$useCommonSettingsBasketPopup ? 'N' : 'Y')
);
$arTemplateParameters['DETAIL_ADD_TO_BASKET_ACTION'] = array(
'PARENT' => 'BASKET',
'NAME' => GetMessage('CP_BC_TPL_DETAIL_ADD_TO_BASKET_ACTION'),
'TYPE' => 'LIST',
'VALUES' => $addToBasketActions,
'DEFAULT' => 'BUY',
'REFRESH' => 'N',
'MULTIPLE' => 'Y',
'HIDDEN' => (!$useCommonSettingsBasketPopup ? 'N' : 'Y')
);
/* $arTemplateParameters['PRODUCT_SUBSCRIPTION'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BC_TPL_PRODUCT_SUBSCRIPTION'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
); */
$arTemplateParameters['SHOW_DISCOUNT_PERCENT'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BC_TPL_SHOW_DISCOUNT_PERCENT'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
'REFRESH' => 'Y',
);
$arTemplateParameters['SHOW_OLD_PRICE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BC_TPL_SHOW_OLD_PRICE'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
);
$arTemplateParameters['DETAIL_SHOW_MAX_QUANTITY'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BC_TPL_DETAIL_SHOW_MAX_QUANTITY'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
);
if (isset($arCurrentValues['USE_PRODUCT_QUANTITY']) && $arCurrentValues['USE_PRODUCT_QUANTITY'] === 'Y')
{
$arTemplateParameters['DETAIL_SHOW_BASIS_PRICE'] = array(
"PARENT" => "BASKET",
"NAME" => GetMessage("CP_BC_TPL_DETAIL_SHOW_BASIS_PRICE"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "Y",
"REFRESH" => "N",
);
}
}
if (ModuleManager::isModuleInstalled("highloadblock"))
{
$arTemplateParameters['DETAIL_BRAND_USE'] = array(
'PARENT' => 'VISUAL',
'NAME' => GetMessage('CP_BC_TPL_DETAIL_BRAND_USE'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
'REFRESH' => 'Y'
);
if (isset($arCurrentValues['DETAIL_BRAND_USE']) && 'Y' == $arCurrentValues['DETAIL_BRAND_USE'])
{
$arTemplateParameters['DETAIL_BRAND_PROP_CODE'] = array(
'PARENT' => 'VISUAL',
"NAME" => GetMessage("CP_BC_TPL_DETAIL_PROP_CODE"),
"TYPE" => "LIST",
"VALUES" => $arHighloadPropList,
"MULTIPLE" => "Y",
"ADDITIONAL_VALUES" => "Y"
);
}
}
if (ModuleManager::isModuleInstalled("sale"))
{
$arTemplateParameters['USE_SALE_BESTSELLERS'] = array(
'NAME' => GetMessage('CP_BC_TPL_USE_SALE_BESTSELLERS'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'Y'
);
$arTemplateParameters['USE_BIG_DATA'] = array(
'PARENT' => 'BIG_DATA_SETTINGS',
'NAME' => GetMessage('CP_BC_TPL_USE_BIG_DATA'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'Y',
'REFRESH' => 'Y'
);
if (!isset($arCurrentValues['USE_BIG_DATA']) || $arCurrentValues['USE_BIG_DATA'] == 'Y')
{
$rcmTypeList = array(
'bestsell' => GetMessage('CP_BC_TPL_RCM_BESTSELLERS'),
'personal' => GetMessage('CP_BC_TPL_RCM_PERSONAL'),
'similar_sell' => GetMessage('CP_BC_TPL_RCM_SOLD_WITH'),
'similar_view' => GetMessage('CP_BC_TPL_RCM_VIEWED_WITH'),
'similar' => GetMessage('CP_BC_TPL_RCM_SIMILAR'),
'any_similar' => GetMessage('CP_BC_TPL_RCM_SIMILAR_ANY'),
'any_personal' => GetMessage('CP_BC_TPL_RCM_PERSONAL_WBEST'),
'any' => GetMessage('CP_BC_TPL_RCM_RAND')
);
$arTemplateParameters['BIG_DATA_RCM_TYPE'] = array(
'PARENT' => 'BIG_DATA_SETTINGS',
'NAME' => GetMessage('CP_BC_TPL_BIG_DATA_RCM_TYPE'),
'TYPE' => 'LIST',
'VALUES' => $rcmTypeList
);
unset($rcmTypeList);
}
}
if (isset($arCurrentValues['SHOW_TOP_ELEMENTS']) && 'Y' == $arCurrentValues['SHOW_TOP_ELEMENTS'])
{
$arTopViewModeList = array(
'BANNER' => GetMessage('CPT_BC_TPL_VIEW_MODE_BANNER'),
'SLIDER' => GetMessage('CPT_BC_TPL_VIEW_MODE_SLIDER'),
'SECTION' => GetMessage('CPT_BC_TPL_VIEW_MODE_SECTION')
);
$arTemplateParameters['TOP_VIEW_MODE'] = array(
'PARENT' => 'TOP_SETTINGS',
'NAME' => GetMessage('CPT_BC_TPL_TOP_VIEW_MODE'),
'TYPE' => 'LIST',
'VALUES' => $arTopViewModeList,
'MULTIPLE' => 'N',
'DEFAULT' => 'SECTION',
'REFRESH' => 'Y'
);
if (isset($arCurrentValues['TOP_VIEW_MODE']) && ('SLIDER' == $arCurrentValues['TOP_VIEW_MODE'] || 'BANNER' == $arCurrentValues['TOP_VIEW_MODE']))
{
$arTemplateParameters['TOP_ROTATE_TIMER'] = array(
'PARENT' => 'TOP_SETTINGS',
'NAME' => GetMessage('CPT_BC_TPL_TOP_ROTATE_TIMER'),
'TYPE' => 'STRING',
'DEFAULT' => '30'
);
}
}
$arTemplateParameters['SEF_MODE'] = array(
'brand' => array(
'NAME' => 'Бренд',
'DEFAULT' => '',
"VARIABLES" => array(),
),
"sections" => array(
"NAME" => 'Список разделов',
"DEFAULT" => "",
"VARIABLES" => array(
),
),
"section" => array(
"NAME" => 'Раздел',
"DEFAULT" => "#SECTION_ID#/",
"VARIABLES" => array(
"SECTION_ID",
"SECTION_CODE",
"SECTION_CODE_PATH",
),
),
"element" => array(
"NAME" => 'Детальная информация',
"DEFAULT" => "#SECTION_ID#/#ELEMENT_ID#/",
"VARIABLES" => array(
"ELEMENT_ID",
"ELEMENT_CODE",
"SECTION_ID",
"SECTION_CODE",
"SECTION_CODE_PATH",
),
),
"compare" => array(
"NAME" => 'Таблица сравнения',
"DEFAULT" => "compare.php?action=#ACTION_CODE#",
"VARIABLES" => array(
"action",
),
),
"smart_filter" => array(
"NAME" => 'Url раздела для умного фильтра',
"DEFAULT" => '',
"VARIABLES" => array(
"SECTION_ID",
"SECTION_CODE",
"SECTION_CODE_PATH",
"SMART_FILTER_PATH",
),
)
);
?>