Добрый день. Быть может кто сможет поделиться примеров файлов выгрузки из 1С что бы там были скидки. Т.е. что бы используя последнюю версию битрикса(малый бизнес) можно было бы через этот скрипт загрузить данные на сайт и что бы скидка попала в пакет предложений. Данный "изврат" необходим что бы понимать как изменить выгружаемые 1c данные для выгрузки скидки на сайт. По тех.причинам использовать эти модули невозможно. Есть лишь вариант подогнать файлы под нужный стандарт.
В данный момент из 1с скидки выгружаются следующим образом:
Скидки (в том виде что вы показали в примере) сейчас не импортируются битриксом. Выгрузка скидок была добавлена некоторое время назад в виде экспериментального функционала для ряда партнеров. Но полноценный обмен скидками не представлялся на рынок.
В версиях БУС 12-12.5 скидки были существенно доработаны, появились очень гибкие инструменты конструирования условий применения скидки и мы сейчас заново прорабатываем эту тему и надеемся что к осени представим какое то более комплексное решение по обмену скидками между 1С и сайтом.
В данный момент скидку можно назначить группе товаров или определенному товару. Т.е. можно используя API CCatalogDiscount::Add в момент выгрузки товаров из 1с изменив файл \bitrix\modules\iblock\classes\general\cml2.php самостоятельно реализовать необходимый функционал по работе со скидками?
Интересный подход но при удалении позиции товара на которую ссылалась скидка удаляется лишь связь между скидкой и товаром. Для удаления скидки вместе с товаром необходимо дополнительная обработка в момент события OnBeforeIBlockElementDelete .
Битрикс изначально поддерживает работу со скидками но при условии что в импорте вместе со скидкой будет выгружен параметр:
Т.е. по умолчанию если у скидки будет этот параметр обозначен как 1 то при обработке будет добавлена 2 цена на товар с условием что она активна при покупке более 1 позиции. Можно переделать данный механизм и учитывать сразу цену со скидкой но в этом случае мы теряем 2 важных момента это старая цена и значение скидки а на сайте необходимо отобразить эти данные.
Я реализовал следующим образом. При импорте создаю дополнительное свойство у товара Старая цена и скидка. И добавляю значения взятые из файл импорта. И вывожу на сайте. Но подумываю переделать как у Вас с небольшими доработками.
Mobelis пишет: Интересный подход но при удалении позиции товара на которую ссылалась скидка удаляется лишь связь между скидкой и товаром. Для удаления скидки вместе с товаром необходимо дополнительная обработка в момент события OnBeforeIBlockElementDelete .
Если скидку для товаров создавать стандартными средствами, и если потом товары, на которые распространялась скидка будут удалены, то эта скидка тоже останется в системе. Я бы не стала вешать обработчик на событие OnBeforeIBlockElementDelete - это слишком ресурсоемко (процент товаров, у которых есть скидки - мал, а обработчик будет отрабатывать для абсолютно каждого удаляемого товара и проверять есть у него скидка и надо ли ее удалять). По мне более эффективный вариант - либо расширить функционал класса импорта и удалять скидки при импорте в том же блоке, где удаляются/деактивируются товары, либо вешать какой-то скрипт на крон, к-й раз в неделю - а чаще точно не надо чистит хвосты.
Mobelis пишет: Я реализовал следующим образом. При импорте создаю дополнительное свойство у товара Старая цена и скидка. И добавляю значения взятые из файл импорта. И вывожу на сайте. Но подумываю переделать как у Вас с небольшими доработками.
Как по мне, не важно какой алгоритм выбран. Главное тут - не навешивать это на события - очень много лишних ресурсов будет сжираться при импорте. В моем же методе с наследованием класса - запросов к базе добавляется самый минимум, самый минимум из всех возможных вариантов.