О нас
Разработчикам
Заметки
Переводчик
Транслитератор
Сравнить текст
Генератор пароля
Ip и информация
Декодировать JSON
Локация
О нас
Разработчикам
Заметки
Переводчик
Транслитератор
Сравнить текст
Генератор пароля
Ip и информация
Декодировать JSON
Локация
Bitrix db
us.content
<?php /* 'ACTIVE'=>'Y', 'ACTIVE_DATE' => 'Y', 'GLOBAL_ACTIVE'=>'Y' - Активные IBLOCK_TYPE - Название для группы инфо-блоков, например content IBLOCK_ID - ID инфо-блока, например у слайдера id = 4 Если в логах возникает ошибка "Mysql server has gone away", то в файле bitrix/php_interface/after_connect.php добавить: $DB->Query("SET wait_timeout=28800"); */ // Получить данные самого инфоблока, например картинку $iblockPicture = CIBlock::GetArrayByID($IBLOCK_ID, 'PICTURE'); CModule::IncludeModule('iblock'); /* * Получить список элементов * Может понадобиться подключить CModule::IncludeModule('iblock') * https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php */ $resOb = CIBlockElement::GetList( ['SORT' => 'ASC'], // Сортировать по дате(DATE_CREATE) ['DATE_ACTIVE' => 'DESC'], по цене ['catalog_PRICE_1' => 'DESC'], рамдомно ['RAND' => 'DESC'] [ //'IBLOCK_TYPE' => 'multilevel_menu', // Тип инфоблока 'IBLOCK_ID' => 5, //'SECTION_ID' => 594, // Получить по id раздела //'SECTION_CODE' => 'orange', // По коду раздела //'INCLUDE_SUBSECTIONS' => 'Y', // Получить элементы из вложенных разделов //'SECTION_GLOBAL_ACTIVE' => 'Y', // Получить элементы если разделы включены //'ID' => 242, // По id товара //'ACTIVE' => 'Y', // Активные элементы //'=AVAILABLE' => 'Y', // В наличии //'CATALOG_AVAILABLE' => 'N', // Получить элементы, которых доступное кол-во 0 или минусовое //'!PROPERTY_PHOTO_WORKS' => false, //'PROPERTY_LINK_CONSTRUCTION' => $arResult['PROPERTIES']['LINK_CONSTRUCTION']['VALUE'], //'PROPERTY_LIST_VALUE' => 'text', // Если свойство список, то дописываем _VALUE //['ID' => CIBlockElement::SubQuery('ID', ['IBLOCK_ID' => 5, 'ID' => 242])], //array("ID" => CIBlockElement::SubQuery("ID", array("IBLOCK_ID" => 5, "PROPERTY_PKE" => 243))), /*[ // Логическое выражение или 'LOGIC' => 'OR', ['PROPERTY_ONE' => 1], ['PROPERTY_TWO' => 2], ],*/ ], false, false, //['nTopCount' => 12], // Ограничить выборку, т.е. limit ['ID', 'NAME', 'PREVIEW_PICTURE', 'DETAIL_PAGE_URL'] // 'PROPERTY_PHOTO' - получить свойство, 'CATALOG_CATALOG_GROUP_ID_1' - получить цену (или CATALOG_PRICE_1), 'CATALOG_QUANTITY' - получить доступное кол-во ); dump($portfolioOb->SelectedRowsCount()); // Кол-во элементов while ($itemOb = $resOb->GetNextElement()) { // Если свойства не нужны можно так $res->GetNext(), чтобы без объекта fields $props = $itemOb->GetProperties(); $item = $itemOb->fields; $prop = $itemOb->GetProperty('PROP_NAME'); // Получить одно свойство // $item['PROPERTY_NAMES_ENUM_ID'] // Получить значения из свойства типа список, где NAMES код свойства } // Простой способ получить все элементы $resOb = CIBlockElement::GetList( [], [ 'IBLOCK_ID' => IBLOCK_ID_CATALOG, 'ACTIVE' => 'Y', ], false, false, [] ); while ($item = $resOb->GetNext()) { dump($item); } // Получить последний ID инфоблока $lastIdForm = CIBlockElement::GetList( [], ['IBLOCK' => $iblockId], false, ['nPageSize' => 1], ['ID'] )->fetch(); // Получить торговые предложения $productOffers = CCatalogSKU::getOffersList( $productsId, // массив ID товаров false, // указываете ID инфоблока только в том случае, когда ВЕСЬ массив товаров из одного инфоблока и он известен ['ACTIVE' => 'Y'], // дополнительный фильтр предложений. по умолчанию пуст ['NAME'], // массив полей предложений. даже если пуст - вернет ID и IBLOCK_ID ['CODE' => ['HEIGHT']] // свойства предложений. имеет 2 ключа: ID - массив ID свойств предложений либо. CODE - массив символьных кодов свойств предложений, если указаны оба ключа, приоритет имеет ID ); // Получить id товара по id торгового предложения $productID = CCatalogSku::GetProductInfo($productItem->getField('PRODUCT_ID'))['ID']; // Получить товар $product = CCatalogProduct::GetByID($product['ID']); $product = CIBlockElement::GetByID($productId)->GetNext(); $p = CIBlockElement::GetByID($product['ID'])->GetNextElement(); if ($p) { $props = $p->GetProperties(); // все св-ва //$prop = ->GetProperty('PROD_CODE')['VALUE'] ?? null; // одно свойство $product = $p->fields; // товар } // Получить свойство элемента $prop = CIBlockElement::GetProperty($IBLOCK_ID, $ELEMENT_ID, [], ['CODE' => $propCode])->GetNext(); // Сохранить изменить одно свойство CIBlockElement::SetPropertyValueCode($id, 'PROP_CODE', 'value'); // Сохранить изменить свойства CIBlockElement::SetPropertyValuesEx($id, false, [ 'PROP_CODE1' => 'value1', 'PROP_CODE2' => 'value2', ]); // Получить цены для товара $price = CPrice::GetByID($product['ID']); $price = CPrice::GetBasePrice($product['ID'])['PRICE'] ?? 0; // Изменить базовую цену CPrice::SetBasePrice($product['ID'], 777, 'RUB'); // Получить цены для товара со скидками $priceArr = CCatalogProduct::GetOptimalPrice($offerProductID); $price = $priceArr['RESULT_PRICE']['BASE_PRICE']; $priceDiscount = $priceArr['RESULT_PRICE']['DISCOUNT_PRICE']; // Получить картинку из справочника (highload-блок) if (CModule::IncludeModule('highloadblock')) { $HLBlock = Bitrix\Highloadblock\HighloadBlockTable::getById(1)->fetch(); $obEntity = Bitrix\Highloadblock\HighloadBlockTable::compileEntity($HLBlock); $strEntityClass = $obEntity->getDataClass(); $data = $strEntityClass::getList([ 'select' => ['ID', 'UF_NAME', 'UF_XML_ID', 'UF_DESCRIPTION', 'UF_FILE'], 'filter' => ['UF_XML_ID' => $arResult['PROPERTIES']['COLOR_IMAGE']['VALUE']], 'order' => ['ID' => 'ASC'], 'limit' => '50', ]); /*while ($arItem = $rsData->Fetch()) { $arItems[] = $arItem; // Если множество }*/ $HLItems = $data->Fetch(); $HLItems['UF_IMG'] = CFile::GetPath($HLItems['UF_FILE']); } dump($HLItems); // Получить все разделы элемента, можно передать массив id $sectionsOb = CIBlockElement::GetElementGroups( $productId, true, ['ID'] ); while ($section = $sectionsOb->GetNext()) { $sectionsId[] = $section['ID']; } // Получить данные раздела $section = CIBlockSection::GetByID($sectionId)->GetNext(); // Получить список разделов // $bs = new CIBlockSection; // Изменить св-ва раздела $sectionOb = CIBlockSection::GetList( [], [ 'IBLOCK_ID' => 5, 'ID' => 460, 'INCLUDE_SUBSECTIONS' => 'Y', // получить все вложенные разделы 'GLOBAL_ACTIVE' => 'Y' ], false, ['ID', 'NAME', 'CODE', 'PICTURE'] ); while ($section = $sectionOb->GetNext()) { $sections[] = $section; //$bs->Update($section['ID'], ['UF_IS_FLAT' => '1']); // Изменить св-ва раздела } dump($sections); // Создать элемент $sections = [110, 112, 111]; $item = [ 'IBLOCK_ID' => IBLOCK_ID_CATALOG, 'NAME' => 'Test', 'CODE' => 'test', 'ACTIVE' => 'N', 'MODIFIED_BY' => $GLOBALS['USER']->GetID(), 'IBLOCK_SECTION' => $sections ?: false, ]; $el = new CIBlockElement(); $itemId = $el->add($item); dump($el->LAST_ERROR); // Посмотреть ошибки // Получить данные свойства типа список $res = CIBlockPropertyEnum::GetList([], [ 'IBLOCK_ID' => 5, 'CODE' => 'STATUS', ]); while ($item = $res->Fetch()) { //dump($item); } // Получить данные свойства $res = CIBlockProperty::GetList([], [ 'IBLOCK_ID' => IBLOCK_ID_CATALOG, 'CODE' => 'ARTICLE', ] ); while ($item = $res->Fetch()) { //dump($item); } // Получить данные самого инфоблока CIBlock::GetByID($iblockId)->GetNext(); // Получить данные в корзине if (CModule::IncludeModule('sale')) { $cartItemsOb = \Bitrix\Sale\Basket::getList([ 'select' => ['ID', 'PRODUCT_ID', 'NAME', 'QUANTITY', 'PRICE'], 'filter' => [ '=FUSER_ID' => \Bitrix\Sale\Fuser::getId(), '=ORDER_ID' => null, '=LID' => SITE_ID, '=CAN_BUY' => 'Y', ] ]); while ($item = $cartItemsOb->fetch()) { $cartItems[] = $item; } } // Добавление в корзину (Через форму отправлять product_id и quantity) if (CModule::IncludeModule('catalog')) { if ($_POST['quantity']) { Add2BasketByProductID( $_POST['product_id'], $_POST['quantity'], false ); LocalRedirect('/cart/'); } } // Изменить элемент программно $id = 3852; $fields = ['PREVIEW_TEXT' => 'Lorem ipsum dolor sit.']; $updateElement = new CIBlockElement(); $updateElement->update($id, $fields); // Изменить кол-во программно $id = 777; Cmodule::IncludeModule('catalog'); CCatalogProduct::Update($id, ['QUANTITY' => 7]); // Получить кол-во $qty = CCatalogProduct::GetByID(720727)['QUANTITY'] ?? 0; // Очистить корзину if (CModule::IncludeModule('sale')) { $cartItemsOb = \Bitrix\Sale\Basket::getList([ 'select' => ['ID', 'PRODUCT_ID', 'NAME', 'QUANTITY', 'PRICE'], 'filter' => [ '=FUSER_ID' => \Bitrix\Sale\Fuser::getId(), '=ORDER_ID' => null, '=LID' => \Bitrix\Main\Context::getCurrent()->getSite(), '=CAN_BUY' => 'Y', ] ]); while ($item = $cartItemsOb->fetch()) { CSaleBasket::Delete($item['ID']); } // CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID()); // Устаревший способ } // ID товара в корзине $cartItems = CSaleBasket::GetList( [ 'NAME' => 'ASC', 'ID' => 'ASC' ], [ 'FUSER_ID' => CSaleBasket::GetBasketUserID(), 'LID' => SITE_ID, 'PRODUCT_ID' => $productID, 'ORDER_ID' => 'NULL', 'DELAY' => 'N' //Исключая отложенные ], false, false, ['PRODUCT_ID'] ); $arCartItems = $cartItems->Fetch() ?: []; /*while ($arCartItems = $cartItems->Fetch()) { $itInCart = $arCartItems['PRODUCT_ID']; }*/ dump($itInCart); // Получаем цепочку разделов навигации в компоненте $chain = CIBlockSection::GetNavChain($arResult['IBLOCK_ID'], $arResult['ID'], ['ID', 'NAME', 'CODE']); $breadcrumb[0]['id'] = null; $breadcrumb[0]['name'] = 'Каталог'; $breadcrumb[0]['link'] = $parent; $i = 1; while ($arItem = $chain->Fetch()) { $breadcrumb[$i]['id'] = $arItem['ID']; $breadcrumb[$i]['name'] = $arItem['NAME']; $breadcrumb[$i]['link'] = $parent . $arItem['CODE'] . '/'; $i++; } // Кол-во товаров в разделе с сортировкой по свойству, которое есть $countElements = CIBlockSection::GetSectionElementsCount( $id, [ 'CNT_ACTIVE' => 'Y', 'PROPERTY' => ['!PHOTO_WORKS' => false], ] ); // Получаем данные дополнительного поля $uf = CUserFieldEnum::GetList( [], // Сортировка [ 'USER_FIELD_NAME' => 'UF_SECTION_DETAIL', // Фильтр ] ); while ($ufRes = $uf->GetNext()) { $sectionDetail[$ufRes['ID']] = $ufRes['XML_ID']; } // Получить данные катинок $resImg = CFile::GetList( [], ['@ID' => [1, 2, 3]] // Id картинок ); while ($img = $resImg->GetNext()) { $images[] = $img; } // GetList D7 $itemsOb = \Bitrix\Iblock\ElementTable::getList([ 'order' => ['SORT' => 'ASC'], // Сортировка 'select' => ['ID', 'NAME', 'IBLOCK_ID', 'SORT', 'TAGS'], // Поля. Свойства можно получать на старом ядре CIBlockElement::getProperty 'filter' => [ // Фильтр только по полям элемента, свойства (PROPERTY) использовать нельзя 'IBLOCK_ID' => 5, //'ID' => 22, ], 'group' => [], // Группировка по полю, order должен быть пустой 'limit' => false, // Ограничение выбираемого кол-ва 'offset' => 0, // Число, указывающее номер первого столбца в результате 'count_total' => false, // Возможность получить кол-во элементов через метод getCount() 'runtime' => [], // Массив полей сущности, создающихся динамически 'data_doubling' => false, // Разрешает получение нескольких одинаковых записей 'cache' => [ // Кеш запроса 'ttl' => 3600, 'cache_joins' => true ], ]); while ($item = $itemsOb->fetch()) { dump($item); } // Коротка $itemsOb = \Bitrix\Iblock\ElementTable::getList([ 'order' => [], 'select' => ['ID', 'NAME'], 'filter' => [ 'IBLOCK_ID' => 5, 'IBLOCK_SECTION_ID' => [446, 450], 'ACTIVE' => 'Y', ], ]); while ($item = $itemsOb->fetch()) { $items[] = $item; } dump($items ?? null); $res->fetch(); // или $res->fetchRaw() получение одной записи, можно перебрать в цикле while ($arItem = $res->fetch()) $res->fetchAll(); // получение всех записей $res->getCount(); // кол-во найденных записей без учета limit, доступно если при запросе было указано count_total = 1 $res->getSelectedRowsCount(); // кол-во полученных записей с учетом limit // https://blog.budagov.ru/bitrix-d7-dlya-infoblokov/ /** * * @return int * Возвращает id пользователя. * Если пользователь c номером телефона существует, то обновим его или создадим нового. * * @param string $tel - телефон пользователя. * @param string $name - имя пользователя, необязательный параметр. * @param string $email - email пользователя, необязательный параметр. */ function userAddOrUpdate($tel, $name = null, $email = null) { // Удаляем всё лишнее из телефона $tel = str_replace(['(', ')', '‑', '—', ' ', '+', '‑', '-', '—', '_', ' ', '<br>', "\n"], '', $tel); // Поля пользователя $userFields = [ 'NAME' => $name ?: $tel, 'LOGIN' => $tel, 'EMAIL' => $email ?: "{$tel}_no_email@email.ru", 'PERSONAL_PHONE' => $tel, // PHONE_NUMBER 'PASSWORD' => 'uR5CeoAU', 'CONFIRM_PASSWORD' => 'uR5CeoAU', 'LID' => 'ru', 'ACTIVE' => 'Y', 'GROUP_ID' => [3, 4, 5], ]; // Проверим, существует ли пользователь с определённым логином $userId = CUser::GetList( '', '', ['LOGIN' => $tel] )->fetch()['ID'] ?? null; // Объект пользователя $user = new CUser; if ($userId) { // Обновим $user->Update($userId, $userFields); } else { // Создадим $userId = $user->Add($userFields); } return $userId; } // Получаем пользователя $userId = userAddOrUpdate('17777777777', 'Name'); // Создаём новый заказ без товара $orderFields = [ 'USER_DESCRIPTION' => 'Запрос из формы', 'USER_ID' => $userId, 'LID' => SITE_ID, 'PERSON_TYPE_ID' => 1, 'PAYED' => 'N', 'CANCELED' => 'N', 'STATUS_ID' => 'N', //'PRICE' => 1000.00, 'CURRENCY' => 'RUB', // CSaleLang::GetLangCurrency(SITE_ID) 'PAY_SYSTEM_ID' => 2, //'PRICE_DELIVERY' => 100.00, 'DELIVERY_ID' => 2, 'TAX_VALUE' => 0.0, ]; $orderId = CSaleOrder::Add($orderFields); var_dump($orderId); // Получить все доставки $deliveriesAll = \Bitrix\Sale\Delivery\Services\Table::getList( [ 'select' => ['ID'], ] )->fetchAll(); $deliveriesAllIds = []; foreach ($deliveriesAll as $delivery) { $deliveriesAllIds[] = $delivery['ID']; } // Получить купон из закзаза $couponList = \Bitrix\Sale\Internals\OrderCouponsTable::getList([ 'select' => ['COUPON'], 'filter' => ['=ORDER_ID' => 2841], ]); while ($coupon = $couponList->fetch()) { echo $coupon['COUPON']; } // Получить заказ и товары из него $order = \Bitrix\Sale\Order::load($orderId); $products = $order->getBasket(); // Дерево разделов tree $sectionLink = []; $sections = []; $sectionLink[0] = &$sections; $sectionOb = CIBlockSection::GetList( [ 'DEPTH_LEVEL' => 'ASC', 'SORT' => 'ASC', ], [ 'IBLOCK_ID' => IBLOCK_ID_CATALOG, 'GLOBAL_ACTIVE' => 'Y', ], false, ['ID', 'NAME', 'CODE', 'IBLOCK_SECTION_ID', 'DEPTH_LEVEL', 'SECTION_PAGE_URL'] ); while ($section = $sectionOb->GetNext()) { $sectionLink[(int)$section['IBLOCK_SECTION_ID']]['child'][$section['ID']] = $section; $sectionLink[$section['ID']] = &$sectionLink[(int)$section['IBLOCK_SECTION_ID']]['child'][$section['ID']]; } $sections = $sections['child'] ?? []; dump($sections);
Список