или вы используете компонент в шаблоне другого компонента
|
Никак, потому как до сих пор в большинстве случаев это является более оптимальным решением. Но если вы принципиально хотите использовать новое ядро, то никто вам не мешает использовать что-то типа \Bitrix\Iblock\Elements\ElementСatalogTable::getList или подобное, просто вы должны знать связи между таблицами и для решения ваших задач эти связи использовать
|
|
|
|
|
|
На уровне sale.order.ajax я сомневаюсь что есть хоть какой-то вариант решения вашей задачи, потому что применится или нет, решается на уровне правил скидок.
Задача "купон-скидка на первый заказ пользователя" насколько мне известно решается только 2 способами: 1. через добавление/удаление в группу для которой применяется скидка 2. написание своего условия для правил корзины Но минус обоих решений - для проверки требуется авторизация, чтобы получить заказы(если они есть), так как заказ всегда привязан к какому-то пользователю |
|
|
|
|
|
Тоже сталкивался с этой проблемой. Но основа кроется в настройках сервера. Не в самом битриксе, тут техподдержка не поможет, увы, типа это к битриксу не относится. Если на сервере установлено по умолчанию, то это максимум 24 минуты.
А есть еще кеш, который отрабатывает без запросов к БД, что тоже как простой походу считается(во всяком случае у меня подозрение такое). Нам обновляли сервер когда, то мы просили сразу внести правки, чтобы не менее суток стояло, а дальше уже можно и в админке сколько нужно выставить. теперь для админов у нас в админке 180 минут, для группы менеджеров 25200. Работает. |
|
|
|
|
|
Добавил проверку такую же как в Manager::getById чтобы не вызывалось, правда минус такой что информации о доставке в письме в этом случае может не быть, но это лучше чем ловить исключение и крики клиентов "Аааа, оно сломалось"
|
|||
|
|
|
|
Я по похожему принципу Подарочные сертификаты делал.
Ну а в целом - как вариант, если нет особых условий для применения. Потому что если на сайте постоянно используются по несколько скидок, то такой способ будет очень неудобен. Простой пример: скидка применяется если не применилась другая скидка(т.е. скидки ограничены на текущем уровне применимости) и получается вам нужно получить все скидки, вычислить и в случае когда не нужно отменить действия каких-то из них. И еще нужно учитывать что в 1С передается цена со скидкой, а у вас скидка идет как часть оплаты и соотвественно в 1С эта информация не идет. В 1С вообще только одна оплата передается, нужно допиливать еще передачу что есть вторая оплата и в 1С на основании этого допиливать скидку чтобы пробить чек. В общем не все так просто с вашим решением. Но как и сказал если что-то простое на сайте, то вариант рабочий. |
|
|
|
|
|
Раз у вас свой обработчик, то внесите в него блок заполнения свойств, тем более комментарии вы же как-то заполняете. Примерно такой:
|
|||
|
|
|
|
У нас есть периодическая ошибка по которой непонятно что делать.
На событии OnOrderAdd формируется массив для отдельной отправки письма и на шаге
deliveryId(0) Перед этим шагом сохраняю в файл значение DELIVERY_ID и вижу в нем цифру, но при этом выводится ошибка. Делаю повторно создание заказа с теми же товарами, с той же доставкой - нет ошибки. в Manager::getById есть проверка
|
|||||
|
|
|
|
По существу подсказать не могу, давно было, да и не долго с этим разбирался, но когда-то сталкивался с похожей реализацией, там ставили редис и через него делали фильтр и соответсвенно структуру каталога. Т.е. инфоблок товаров как был так и был, но структура в нем была тоже плоская. А отдельно шел справочник, настройки где формировали, что хотим увидеть такую-то структуру разделов и условия вывода товаров в таком разделе, так же отдельный справочник на вывод фильтра.
Первоначальная настройка конечно была долгая, но каталог летал. Ну и если что-то нужно было допиливать, приходилось делать отдельные запросы в редис По времени у того прогера который это делал заняло около 4 месяцев все это настроить и допилить дополнительные правки в компонентах. |
|
|
|
|
|
И тот и другой вариант плох. Да и вообще если вы пришли к задаче такой как у вас где нужно или 10000 правил или внутри 100000 товаров, значит вы не правильно сформулировали задачу. В документации даже приведен пример что если нужно перечислить много товаров, то это делается другим путем - заводится свойство у товаров и в скидке не перечисляются все товары, а указывается что данное свойство должно равняться/не равняться/... и тогда вам не придется 10000 товаров в условие впихивать.
Ну и т.д. вплоть до того что создать нужное свое кастомное условие скидок. |
|
|
|
|
То что битрикс ломаный, опасно, но тут вопрос кто, как и для каких целей его ломал. Самый распространенный способ это грубо говоря заморозка срока, никаких вирусов, и тут опасность в том что любое обновление сделает его нерабочим. Запросить архив чтобы он не был взломанным у вас не выйдет. Чтобы это исправить ставите чистую установку с новой лицензией и также отдельно (можно локально, можно на отдельном домене) разворачиваете что вам дали и переносите шаблоны, информацию из БД через внутренние инструменты. Так вы избавитесь от всякого возможного мусора и получите чистый продукт, но это долгая задача, так как что там накручено это тот еще может быть квест. по поводу многосайтовости почитайте а если вкратце, то смысл такой что у одного ядра должна быть одна лицензия, а все дополнительные сайты должны подключать это ядро в виде ссылок на него и подключить его можно только в пределах одного хоста. Из-за того что одно ядро = одна лицензия, нельзя создавать 2 домена и на каждый ставить отдельно ядро с тем же ключом(исключение если отметить что это версия для разработки).
|
|||||||
|
|
|
|
Такая ситуация встречается если у вас обмен с 1С есть или какой-то кастомный автоматический обработчик на его основе, такая ситуация может происходить когда происходят запуски следующего обмена при не законченном предыдущем.
Т.е. у вас 3 инфоблока, значит минимум 3 выгрузки, запускается первый формируется таблица для обновления, идет само обновление и тут приходит новый файл и новый вызов, но прошлый ещё не завершен. Вот и происходит заполнение таблицы данными из нового файла и эти данные отправляются в другой инфоблок так как еще не закончил свое действие прошлый обработчик. Поэтому даже в документации где-то было написано что нельзя чтобы пересекались обмены если у вас несколько инфоблоков, время нужно выставлять так чтобы точно знать что предыдущий обмен завершен. |
|
|
|
|