Евгений Жуков написал: И да, все такие конструкции крайне нежелательно использовать в цикле.
Вы имеете ввиду мой предыдущий код? Если да, то не использовать никак не реально, вот например всплывайка "sale.basket.basket.line" , там нужно выводить картинку и путь к товару у товара или ТП. Актуальная задача, там как раз используется цикл while, внутри которого мой код . С точки зрения тормозов (если вы про это) понятно, что нельзя использовать код в цикле, поэтому я прошу LEFT_JOIN-Можно по сути один запрос сделать. Возможно, появится такая возможность "LEFT_JOIN" в D7. Либо добавить в таблицу "b_sale_basket" столбец "IBLOCK_ID", как вариант и "TYPE", и с помощью провайдера обновлять данные столбцы.
Спасибо большое за разъяснение, более точнее информация тут, по инфоблокам 2.0 Там написано, что нельзя даже использовать фильтрацию по нескольким айди инфоблоков, чтобы получить свойства. Но, получается, для того, чтобы получить картинку товара и путь к товара для ТП, придется делать 3 запроса.
А "LEFT_JOIN" все бы исключил (по сути бы прикрепились две таблицы свойств товара и тп). Даже тогда не понимаю смысл инфоблоков 2.0 . Может лучше будет в D7, там может, наверное, будет сделать LEFT_JOIN. Если да, тогда ждем.
Тогда приношу извинения, я действительно думала, что это ошибка.
Добрый день. Свойства в GetList подключаются путем INNER JOIN , а не LEFT_JOIN . Это ошибка, если, да, то когда это будет исправлено? если убрать "'PROPERTY_CML2_LINK'", то выведет что нужно. Пожалуйста, ответьте, в каком релизе ждать данного исправления? так как заранее неизвестно, какой тип товара - ТП или товар? В данном примере ID- айди товара. Если бы ID был ТП, то приходится делать три запроса Getlist для ТП, чтобы по-нему получить картинки товара и путь к товару.
Есть шаблон catalg.section, а внутри запрос Getlist к корзине, который не должен кешироваться, как сделать? При удалении корзины, эти данные(полученные запросом Getlist к корзине) не меняются....(при включенном кеше)
Не обновляется цена и количество в компонентах корзины? В компоненте sale.basket.basket: Включена опция "Использовать механизм отложенной актуализации данных товаров с провайдером":
если количество=0, то цена не обновляется, и причем даже в корзине=10, дает купить если количество>0, то цена обновляется. если количество < чем есть в корзине, дает купить, что неверно Цена не обновляется в малой корзине, если я зайду на страницу Корзина, то в малой корзине цена обновится. А с количеством остается та же проблема(но не критично).
Вопрос, как это исправить, или это баг? Что такое класс СatalogProvider он изменяет цены в корзине и количество? Даже свою кастомную цену может поставить?
$eventManager->addEventHandler("catalog","Bitrix\Catalog\GroupAccess::OnBeforeAdd","OnBeforeGroup");
function OnBeforeGroup($event){}
не работает, дебаг не заходит внутрь функции при изменении Типа цены (а именно доступа у групп польз-лей).
Цитата
Александр Медведев написал: Объяснили ведь же почему в админке так не срабатывает
Извините, я не понимаю, почему не срабатывает? А при обмене из 1с должен сработать? А при "Bitrix\Catalog\Model\Product::OnBeforeUpdate" срабатывает при изменении товара в админке. Тоже таблеты.
use Bitrix\Highloadblock as HL;
$hlblock = HL\HighloadBlockTable::getById(5)->fetch();
$entity = HL\HighloadBlockTable::compileEntity( $hlblock ); //генерация класса
$entityClass = $entity->getDataClass();
class MyDomainObjectTable extends #entityClass# {
…//наша бизнес логика проекта, посмотрите содержимое $entityClass и впишите его в #entityClass#
}
Я проверяю дебагом, встроенным в пхпшторм, когда я меняю тип свойства(имеющий тот же гуид) в настройках инф-ка, ничего не происходит, даже внутрь функции дебаг не заходит, по точкам останова. Если делать по старому ядру, то дебаг заходит внутрь функции, и все работает.
$eventManager->addEventHandler( 'iblock', 'Bitrix\Iblock\Property::OnBeforeUpdate',
static function (\Bitrix\Main\Entity\Event $event) {
$data = $event->getParameter("fields");
if ($data["XML_ID"]=='a39493dd'){
$data["PROPERTY_TYPE"]="E";
$data["IBLOCK_ID"]=24;
}
});
Этот код по сути не выполняется. Странно то, у Bitrix\Iblock\Property есть таблица b_iblock_property, а сам класс унаследован от ORM\Data\DataManager и след-но, события при изменении свойства должны срабатывать, а этого не происходит.
1.Как в УТ11 настроить тип выгружаемого на сайт свойства = привязка к элементу инфоблока для сайта? Каков пошаговый алгоритм, позволяющий сделать это? Выгружают свойство типа список. Нужен xml код
Проблема выгрузка производителей в отдельный инфоблок, и прикрепление товаров к данному инфоблоку. Для того, чтобы производители выгружались в отдельный инфоблок решили: производителей создали как элемент номенклатуры.
2. Как из 1с выгружать в Коэффициент единицы измерения? Что нужно настроить в 1с?
Спасибо всем за информацию, жалко лайки Вам не могу поставить.
Цитата
Евгений Жуков написал: Потому что api, которое их вызывало, стало "оберткой" вокруг методов d7 и помечено как deprecated (не рекомендовано к использованию в дальнейшем).
Большое спасибо за подсказку. Очень сильно помогли, я не видела в доках, что данные события устарели. Ошибку найти не могла третий день. Жалко "лайк" не могу поставить Вам. А почему такие события называются устревшими (События актуальны и все пользуются ими). Хотите сказать в далеком будущем их не будет?