Работа со скидками битрикс api

Как вывести все товары со скидкой в 1С-битрикс (catalog.section)

На одном проекте потребовалось вывести на определенной странице все товары со скидкой, проставленной в Правилах работой с корзиной.

К сожалению, в данный момент для этого нет готового решения. Т.е. нельзя например в фильтре компонента или GetList-а задать определенный параметр и таким образом получить все нужные товары.

Погуляв по форумам в поисках готового решения не нашел ничего подходящего для меня, пришлось делать всё ручками с нуля 🙂

Сразу скажу, что не претендую на звание лучшего решения данного вопроса, но для моей задачи этого вполне хватило. Если будут какие-либо предложения по улучшению логики работы, буду только рад.

Как будем реализовывать: создаем скрипт, который будет проходится по всем товарам, смотреть есть ли у них скидка и если есть, проставлять специальное свойство. По этому свойству уже мы сможем фильтровать нужные нам товары. Скрипт ставим на крон с нужной периодичностью или запускаем руками при необходимости.

Заводим для нашего основного инфоблока свойство типа Список (можно и простую строку, у меня просто оно уже было). Ставим там одно единственное возможное значение (у меня это «yes»). У меня свойство имеет код SPECIALOFFER.

Работа со скидками битрикс api

Далее в какой-нибудь служебной папочке добавляем скрипт следующего содержания, где меняем входные параметры на свои, а именно: код инфоблока, значение свойства, сам код свойства (если у вас он другой)

Всё, теперь нам только остается добавить фильтрацию по нашему свойству где это необходимо.

Источник

CCatalogDiscount

Методы класса

МетодОписаниеС версииДо версии
AddМетод добавляет новую скидку в соответствии с данными из массива arFields.4.0.4
DeleteМетод удаляет скидку с кодом ID.4.0.4
SetCouponМетод добавляет код купона coupon в массив доступных для получения скидки купонов текущего покупателя. Система вычисляет минимальную для данного покупателя цену товара с учётом всех его скидок и купонов.4.0.412.0.0
GetCouponsМетод возвращает массив доступных для получения скидки купонов текущего покупателя. Система вычисляет минимальную для данного покупателя цену товара с учётом всех его скидок и купонов.4.0.412.0.0
ClearCouponМетод очищает возвращает массив доступных для получения скидки купонов текущего покупателя. Система вычисляет минимальную для данного покупателя цену товара с учётом всех его скидок и купонов.4.0.412.0.0
GetDiscountByPriceМетод вычисляет скидку на цену с кодом productPriceID товара для пользователя, принадлежащего группам пользователей arUserGroups.4.0.4
GetDiscountByProductМетод вычисляет скидку на товар с кодом productID для пользователя, принадлежащего группам пользователей arUserGroups.4.0.5
GetByIDМетод выбирает параметры скидки по ее коду ID.4.0.4
GetListМетод возвращает результат выборки записей скидок в соответствии со своими параметрами.4.0.4
GetDiscountGroupsListМетод возвращает результат выборки записей с информацией о привязке скидок к группам пользователей в соответствии со своими параметрами.4.0.4
GetDiscountCatsListМетод возвращает результат выборки записей с информацией о привязке скидок к типам цен в соответствии со своими параметрами.4.0.4
GetDiscountProductsListМетод возвращает результат выборки записей с информацией о привязке скидок к товарам в соответствии со своими параметрами.4.0.412.0.0
GetDiscountSectionsListМетод возвращает результат выборки записей с информацией о привязке скидок к группам товаров в соответствии со своими параметрами.4.0.412.0.0
UpdateМетод изменяет параметры скидки с кодом ID в соответствии с данными из массива arFields.4.0.4

С версии 12.0.0 в связи с изменением логики работы модуля считаются устаревшими следующие методы:

До выхода версии 12.0.0 все вышеперечисленные методы являлись служебными и позволяли получить явно заданные привязки скидки к инфоблоку, разделу, элементу. То есть данные, которые можно было увидеть в форме редактирования скидки.

Использование этих методов для получения ID элементов, на которые могла подействовать скидка, было и является некорректным. Например, для скидки, у которой задано ограничение на раздел, вызов GetDiscountProductsList вернет пустой массив.

С выходом 12.0 эти методы оставлены лишь для сохранения совместимости. Они могут вернуть привязки лишь к тем инфоблокам, разделам, элементам, которые явно заданы в ограничениях. Т.е. если скидка действует на название элемента, все перечисленные методы вернут пустые массивы.

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Источник

Discount

Пространство имен \Bitrix\Sale\Discount содержит подпространства, классы и методы для расчета всех скидок (каталога и магазина) и округления цен для корзины или заказа.

Пространство именОписание
Formatter

Класс предназначен для генерации описаний как самих правил корзины, так и их результатов.
Gift

Содержит классы для работы с подарками.

Методы

МетодОписаниеС версииДо версии
buildFromBasket

Метод устанавливает пользовательский контекст для вычисления скидок.17.0.11
calculate

Метод для полного расчета всех скидок.15.5.0
clearBasketItemData

Метод удаляет внутренний кеш данных по позиции корзины. Вызывается при удалении позиции из корзины.15.5.0
getApplyMode

Метод возвращает режим взаимодействия правил корзины со скидками остальных модулей для заказа.15.5.0
getApplyModeList

Метод возвращает перечень режимов взаимодействия правил корзины со скидками остальных модулей.15.5.0
getApplyResult

Метод возвращает все результаты расчета, включая итоговые и базовые (исходные) цены корзины и доставки, перечень примененных скидок, правил корзины и купонов, флаги применения (вкл/выкл).15.5.0
getOrder

Метод возвращает объект заказа.15.5.0
getShipmentsIds

Метод возвращает список идентификаторов отгрузок для существующего заказа.15.5.0
getUseMode

Метод возвращает текущий режим расчета всех скидок и правил для заказа/корзины.15.5.0
isClone

Метод возвращает true, если обращение идет к клонированному объекту скидок.16.0.26
isOrderExists

Метод возвращает флаг существования заказа (true/false), поскольку расчет может вестись для корзины без заказа.16.0.2
isOrderNew

Метод возвращает флаг того, что заказ является новым, т.е. у заказа еще нет идентификатора.16.0.2
isOrderRefresh

Метод возвращает флаг полного пересчета заказа.16.0.25
load

Метод возвращает инициализированный объект скидок для переданного объекта заказа.15.5.017.0.11
loadByBasket

Метод возвращает инициализированный объект скидок для переданного объекта корзины товаров, не привязанной к заказу.16.0.1017.0.11
loadByFuser

Метод возвращает инициализированный объект скидок для комбинации $fuser и $site.16.0.10
save

Метод сохраняет результаты применения к заказу скидок и правил округлений.15.5.0
setApplyResult

Метод позволяет указать, какие из выбранных скидок и правил исключить из расчета.15.5.0
setCalculateShipments

Метод устанавливает отгрузку для проведения расчетов.15.5.0
setOrder

Метод необходим, если для объекта корзины производились вычисления скидок, после чего она была привязана к заказу.16.0.10
setOrderRefresh

Метод устанавливает флаг пересчета заказа в административной форме редактирования.16.0.25
setUseMode

Метод устанавливает режим расчета всех скидок и правил для заказа/корзины.15.5.0

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Источник

GetList

Описание и параметры

Метод возвращает результат выборки записей скидок в соответствии со своими параметрами. Нестатический метод.

Параметры вызова

ПараметрОписание
arOrderМассив, в соответствии с которым сортируются результирующие записи. Массив имеет вид: В качестве «название_поляN» может стоять любое поле скидки, а в качестве «направление_сортировкиX» могут быть значения «ASC» (по возрастанию) и «DESC» (по убыванию).

Если массив сортировки имеет несколько элементов, то результирующий набор сортируется последовательно по каждому элементу (т.е. сначала сортируется по первому элементу, потом результат сортируется по второму и т.д.).

Пример фильтра: Этот фильтр означает «выбрать все записи, в которых значение в поле DISCOUNT_ID (код скидки) равно 15».

Если массив пустой, то метод вернет число записей, удовлетворяющих фильтру.

Возвращаемые значения

Возвращается объект класса CDBResult, содержащий набор ассоциативных массивов с ключами:

Если в качестве параметра arGroupBy передается пустой массив, то метод вернет число записей, удовлетворяющих фильтру.

Примеры использования

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Источник

CCatalogDiscountCoupon

Методы класса

МетодОписаниеС версии
Addдобавляет купон для выбранной скидки.5.1.0
CheckFieldsпроверяет информацию о купоне перед добавлением или обновлением.5.1.0
ClearCouponочищает массив купонов, введенных текущим покупателем.12.0.0
Deleteудаляет купон.5.1.0
DeleteByDiscountIDудаляет все купоны для выбранной скидки.5.1.0
GetByIDвозвращает информацию о купоне по его коду (ID).5.1.0
GetListвыбирает купоны, соответствующие условиям.5.1.0
IsExistCouponпроверяет существование купона.14.0.0
GetCouponsвозвращает массив доступных для получения скидки купонов текущего покупателя.12.0.0
GetCoupontTypesвозвращает массив имеющихся на сайте типов купонов.12.5.1
SetCouponдобавляет код купона coupon в массив доступных для получения скидки купонов текущего покупателя.12.0.0
Updateобновляет информацию о купоне.5.1.0

Константы класса

КонстантаЗначениеОписаниеС версии
TYPE_ONE_TIMEYКупон на одну позицию заказа.12.5.0
TYPE_ONE_ORDEROКупон на один заказ.12.5.0
TYPE_NO_LIMITNМногоразовый купон.12.5.0

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *