Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Вывод цены у товара в Интернет-Магазине

00 голосов
9
Здравствуйте, возникла проблема, нужно написать свой компонент для интернет магазина, где будут выводиться товары, но возникла проблема, на сайте у товаров нет поле цены, есть только поле код цены, как по этому коду получить саму цену? Когда смотришь товары в админке, то цена выводится следующим образом:
Рисунок
спросил 25 Апр, 13 от SlM (200 баллов)

9 Ответы

00 голосов
Классы CCatalogProduct и CPrice к Вашим услугам. Да и CIBlockElement::GetList позволяет получать значение цены определенного типа.
ответил 25 Апр, 13 от Pomnep (13,960 баллов)
00 голосов
Евгений Жуков,
спасибо, а можно подробней, как получить с помощью CIBlockElement::GetList цену товара по коду?
ответил 25 Апр, 13 от SlM (200 баллов)
00 голосов
Не по коду, а по ID типа цены
http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php
Цитата
CATALOG_<CATALOG_FIELD>_<PRICE_TYPE> - по полю CATALOG_FIELD из цены типа PRICE_TYPE (ID типа цены), где CATALOG_FIELD может быть: PRICE - цена, CURRENCY - валюта.
ответил 21 Июнь, 13 от NitroGeN (2,840 баллов)
00 голосов
то есть я правильно понял, что мне нужно при выборке элемента в массиве arSelect указать поле: CATALOG_<CATALOG_FIELD>_<PRICE_TYPE>? Немного не понятно, что писать вместо CATALOG_FIELD?
я делал вот так:
Код
$arSelect = array(
   "ID",
   "NAME",
   "PREVIEW_TEXT",
   "PREVIEW_PICTURE",
   "PROPERTY_PRICE",
   "CATALOG_1_PRICE"
);

1 если я правильно понял id типа цены:
Рисунок
но на выходе не было цены.
ответил 25 Сен, 13 от SlM (200 баллов)
00 голосов
И не будет. Вместо CATALOG_1_PRICE поставьте CATALOG_PRICE_1, CATALOG_CURRENCY_1 (если 1 - код типа базовой цены). И, конечно, инфоблок должен являться торговым каталогом.
ответил 25 Дек, 13 от Pomnep (13,960 баллов)
00 голосов
Евгений Жуков,
спасибо за советы
ответил 11 Апр, 14 от SlM (200 баллов)
00 голосов
Здравствуйте!

У меня стоит задача выводить на странице раздела каталога товаров только те элементы, которые имеют розничную цену.
Код
<?$arOrder = Array("catalog_PRICE_3" => "ASC");
$arFilter = Array("IBLOCK_ID" => 14,">catalog_PRICE_3" => 0);
$arSelectFields = Array();

$res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelectFields);

while($ob = $res->GetNextElement())
{ 
   $arFields = $ob->GetFields();  
   print_r($arFields);
   $arProps = $ob->GetProperties();
   print_r($arProps);
}
?>
 
Подскажите, пожалуйста, где разместить этот код (section.php, catalog.section/.default/result_modifier.php)? Можно ли в массиве $arFilter использовать условие catalog_PRICE_3 > 0? Как правильно задать условие наличие у товара цены с catalog_group=3?
ответил 04 Авг, 14 от Fregat (160 баллов)
00 голосов
Все оказалось гораздо проще:

Код
<?$myArrFilter = array(">catalog_PRICE_3" => 0);?>

<?$APPLICATION->IncludeComponent(
   "bitrix:catalog",
   "catalog",
   Array(
      "IBLOCK_TYPE" => "catalog",
      "IBLOCK_ID" => "14",
      "BASKET_URL" => "/personal/cart/",
      "ACTION_VARIABLE" => "action",
      "PRODUCT_ID_VARIABLE" => "id",
      "SECTION_ID_VARIABLE" => "SECTION_ID",
      "USE_FILTER" => "Y",
      "FILTER_NAME" => "myArrFilter",
      "PAGE_ELEMENT_COUNT" => "10",
      "LINE_ELEMENT_COUNT" => "1",
      "ELEMENT_SORT_FIELD" => "catalog_PRICE_3",
      "ELEMENT_SORT_ORDER" => "ASC")      
);?>
 
ответил 07 Дек, 14 от Fregat (160 баллов)
00 голосов
Поднимаю старую тему, но что то не срабатывает



$arSelectFields = array(
    "*",
    "ID",
    "CATALOG_QUANTITY",
    "CATALOG_PRICE_2"
)
$res = CIBlockElement::GetList(array ...... $arSelectFields)

,но затем

<?=$arElement["CATALOG_PRICE_2"]?> ничего не выводит
ответил 31 Март, 15 от nonameXXX (260 баллов)

Похожие вопросы

0 голосов
4 ответов
0 голосов
3 ответов
0 голосов
5 ответов
0 голосов
10 ответов
спросил 22 Янв, 13 от Tahalkora (120 баллов)