Возможно Вы берёте корзину и присваиваете её одному из заказов? Соответственно ту же самую корзину уже не можете присвоить другому заказу. Так? Корзину так получаете: $basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(CSaleBasket::GetBasketUserID()), \Bitrix\Main\Context::getCurrent()->getSite()); ?
Делал в корзине одного из интернет магазинов создание учётки пользователя методами API. А именно если пользователь не авторизован но понабраз всего в корзину и сделал заказ будет создан аккаунт по введённому e-mail адресу, вот часть кода:
// Если пользователь не был найден генерируем нового if (!$userIdTpm) { $passwordToReg = randString(10, array("abcdefghijklnmopqrstuvwxyz","ABCDEFGHIJKLNMOPQRSTUVWXYZ","0123456789","!@#\$%^&*()"));// Генерирует пароль
$arFields = Array( "EMAIL"=>$emailToCheckUser, "LOGIN"=>$emailToCheckUser, "ACTIVE"=>"Y",//Делаем пользователя активным "PASSWORD"=>$passwordToReg, "CONFIRM_PASSWORD"=>$passwordToReg, ); $userIdTpm = $USER->Add($arFields);// Добавляем пользователя в битрикс и получаем его Id if ($userIdTpm) { $sendPass = true;// Отправить уведомление на почту // данные для отправки на почту $sendPassPassword = $passwordToReg; $sendPasslogin = $emailToCheckUser; $sendPassEmail = $emailToCheckUser; }
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Скачайте файл server_bitrix_test по ссылке http://dev.1c-bitrix.ru/download/scripts/bitrix_server_test.php Предполагаю он покажет что у Вас не стоят PHP библиотеки MySQL, а именно mysqli. На CentOs 7 устанавливается в командной строке выполнением команды yum install php-mysql Если у Вас CentOs 8 то командой yum install php-mysqlnd кроме того писал статью о установке bitrix на CentOs 8 можете почитать по ссылке: http://blog.ivru.net/?id=125
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Создание инфоблока Bitrix средствами API странная работа параметра SECTION_PROPERTY это баг или что?, Создание инфоблока Bitrix средствами API странная работа параметра SECTION_PROPERTY это баг или что?
Поскольку у Bitrix нет штатного механизма миграций инфоблоков между сайтами, решил разобраться начиная с API типов и так далее, чтобы возможно написать свой мигратор, в том числе для случаев когда между инфоблоками установлены связи. Разбираясь с API создания информационных блоков планировал добиться передачи таких параметров, чтобы в результате создавался инфоблок аналогичный тому что создаётся из админки, то-есть если ничего не менять с параметрами по-умолчанию. Код который я использовал доступен по ссылке http://blog.ivru.net/?id=141 (данную документацию по мере возможности возможно буду дописывать, а так же что то менять), листинги кода дублировать в топик не буду, при необходимости посмотрите по ссылке.
Если коротко, создаём экземпляр объекта: $ib = new CIBlock;
Далее создаём массив $arFields с параметрами (опять же по ссылке какой именно передавал видно, копировать не буду) Так вот если в этом массиве не указывать параметр SECTION_PROPERTY, то если таким образом создать инфоблок $ID = $ib->Add($arFields); а затем посмотреть информацию по $res = CIBlock::GetByID($ID); $ar_res = $res->GetNext(); var_dump($ar_res); То SECTION_PROPERTY будет установлен в NULL, а если зайти в админке в созданный инфоблок и просто нажать сохранить то SECTION_PROPERTY будет установлен в N.
А если при создании инфоблока методами API в $arFields указать SECTION_PROPERTY как пустую строку("") или false или 0 (причем не важно строковой или числовой) или N, то сразу после создания SECTION_PROPERTY будет установлен в Y, а после пересохранения из админки в N.
Почему такое поведение? Как сделать чтобы после вызова $ID = $ib->Add($arFields); значение SECTION_PROPERTY сразу было установлено в "N"
Тестировалось всё это на редакции Старт. Ядру месяца 2(достаточно свежее).
И ещё по теме: SECTION_PROPERTY - признак наличия привязки свойств к разделам. Можно подробнее о смысле этого параметра? В каких случаях он должен быть N а в каких Y и для чего?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Возможно с этим я Вам не помогу, поскольку такого ещё не делал. Я зашёл в вкладку SEO в элементе инфоблока. Я что то не увидел там возможности множественного вывода мета тегов. Можно скрин того как это у Вас выглядит?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Из текста не понял что вам именно нужно. Если речь про следующее, допустим $str = "слово1, слово2, слово3, слово4, слово 5"; То $mass = explode(",","",$str); $slovo5 = trim($mass[4]));
var_dump($slovo5); // вернёт вам "слово 5" Это надо?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Здравствуйте! Такая ситуация что хлебные крошки должны быть выведены посередине шаблона news:list верстку менять нельзя - она согласована. Ситуация следующая. Под админом всё работает нормально, но под гостем возможна ситуация что верхняя часть news:list шаблона от начала и до хлебных крошек вырезается(я так понимаю что в результате работы кеша), а та что ниже выводится нормально. Пробовал сделать метку в шаблоне, а затем вывести в нужно место хлебные крошки используя component_epilog.php и буферизацию вывода, но столкнулся с ситуацией что вывод хлебных крошек останавливает буферизацию, и они не попадают в переменную которой я отлавливаю буферизацию. Пробовал запустить буферизацию аш до подключения фреймворка битрикс - результат такой же - хлебные крошки не попадают в буферизацию. Внутри шаблона не получается использовать метру для отложенной функции - так тоже не срабатывает. В обсуждениях в Интернет мне написали что нужно переписать component.php таким образом чтобы хлебные крошки возвращались в переменную по return а не выводились в браузер. << Весть вопрос по топику тут:раскажите пожалуйста подробнее как вывести хлебные крошки в переменную а не возвращать результат сразу в браузер при вызове компонента.
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
На комплексном компоненте news(Новости)при детальном просмотре отображается элемент не найден(элементы инфоблока находятся в множественных секциях). Как правильно настроить ЧПУ?, News комплексный каталог. Как правильно настроить ЧПУ если элементы инфоблока лежат в секциях с уровнем вложенности 1 и может быть выбрано несколько секций.
Не понял что именно я сделал но сейчас работает. В настройках ничего не менял. Есть лишь предположение, что хотя бы 1 раз нужно вызвать элемент из корня инфоблока, а уже затем присваивать ему разделы. То есть присвоил элементу родителя. Зашёл на детальную - отображается. Присвоил назад категории - обновил кеш - работает. Может не из за этого.
Вопрос закрыт.
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
На комплексном компоненте news(Новости)при детальном просмотре отображается элемент не найден(элементы инфоблока находятся в множественных секциях). Как правильно настроить ЧПУ?, News комплексный каталог. Как правильно настроить ЧПУ если элементы инфоблока лежат в секциях с уровнем вложенности 1 и может быть выбрано несколько секций.
Комплексный каталог Новости(news). Включаем ЧПУ. При детальном просмотре отображается "Элемент не найден". Ничего не меняю. Просто перекидываю в визуальной области элемент на страницу и нажимаю галочку включить ЧПУ. На стандартном шаблоне. Ранее так делал - работало. В данном случаи разница лишь в том что элементы инфоблока находятся не в корневой секции, а в разных секциях(папках/разделах/дирректориях). Уровень вложенности всегда первый. То-есть все элементы лежат в какой то секции. Причем у некоторых элементов выбрано несколько секций. Как правильно настроить ЧПУ чтобы заработало?
Сейчас Каталог ЧПУ (относительно корня сайта) указано /portfolio/ Страница детального просмотра: #ELEMENT_ID#/ Прочие поля ЧПУ пустые. Как правильно указать?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Евгений Жуков написал: Ключ ID в вашем результате - это разве не оно? IBLOCK_SECTION_ID - это ID раздела-владельца. null означает, что ваши разделы - верхнего уровня.
Ох ёлки))) Благодарю)) Меня просто заглючило))) Почему то перепутал с элементом инфоблока )) Всё верно ID это и есть секция.
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Как в шаблоне news list получить массив секций(разделов) к которым относится инфоблок(элемент инфоблока принадлежит к нескольким секциям/разделам)?, Требуется чтобы в шаблоне news list выводился список секций инфоблока а не один Id секции.
Как в шаблоне news list получить массив секций(разделов) к которым относится инфоблок(элемент инфоблока принадлежит к нескольким секциям/разделам)?, Требуется чтобы в шаблоне news list выводился список секций инфоблока а не один Id секции.
В продолжение ещё не совсем некротопика GetElementGroups по Id элемента инфоблока вернул мне 2 таких массива(ну поскольку 2-м секциям элемент присвоен):
В них частности есть: в первом: ["NAME"]=> string(35) "Интернет-маркетинг" и во втором ["NAME"]=> string(20) "Разработка" при этом в обоих ["IBLOCK_SECTION_ID"]=> NULL Для именно моей задачи мне в частности так же нужен Id секции(раздела инфоблока). Можно ли его этим методом получить или без отдельного запроса по секциям никак?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Как в шаблоне news list получить массив секций(разделов) к которым относится инфоблок(элемент инфоблока принадлежит к нескольким секциям/разделам)?, Требуется чтобы в шаблоне news list выводился список секций инфоблока а не один Id секции.
Как в шаблоне news list получить массив секций(разделов) к которым относится инфоблок(элемент инфоблока принадлежит к нескольким секциям/разделам)?, Требуется чтобы в шаблоне news list выводился список секций инфоблока а не один Id секции.
Умный фильтр(smart.filter)bitrix в Интернет магазине. catalog.section зависает при фильтрации по 2-м свойствам. Почему?, Требовалось, чтобы умный фильтр предлагал одновременный выбор по нескольким значениям одного свойства, поэтоу нескольку переписали его через фильтрацию в catalog.section, при этом появилась проблема зависания.
Следующая ситуация. Нужно было, чтобы умный фильтр мог предлагать отметить чекбоксами несколько пунктов по каждому фильтруемому свойству(сейчас фильтруется по свойствам торговых предложений), сделали следующее: переписали шаблон так чтобы свойствам по которым идёт фильтрация отправлялись массивом. Ну например есть свойство SIZE - размер и TYPE - тип, ну например размеры 100*100, 100*150, а тип 1 наволочка, 2 навлолочки и ТП. Таким образом фильтр по ajax отправляет запрос вида controler?SIZE[]=100*100&SIZE[]=100*150&TYPE[]=2 навлолочки этот запрос уходит на php скрипт в котором пришедшие по GET данные разбираются и передаются в catalog.section как массив имя которого указывается в FILTER NAME. Так вот если передавать данные только с одного свойства(не важно будет выбрано 1,2,3 или более значений) - всё нормально, но если передавать сразу с SIZE и TYPE хапрос зависал, и весь сайт переставал отвечать 1-3 минуты, выдавая на страницах ошибку 500. То что Вы видите на скрине - это уже работа другого хостинга. Так вот, решили поменять хостинг, запрос по одному свойству отрабатывается за 0.5 секунды в среднем, но первые запросы по 2-м или более свойствам одновременно подвешивали запрос на 12 секунд(максимально), а так 4-8 секунд, затем начинали работать быстрее. Я понимаю, если бы это был большой интернет магазин, у нас же 500 товаров, поэтому с чего бы поиск в catalog.section по 2-м свойствам вместо одного вдруг начинает отрабатываться дольше до 10 раз и более? Вопросы по теме: 1) может быть кто сталкивался, есть варианты что делаем не так? Но на деле проверяли массив var_dump(тот который передаётся в качестве фильтра на catalog.section) ну всё очень просто и стандартно, самый обычный массив для фильтрации, почему такой эффект? 2) почему второй хостинг вообще отрабатывает пусть и за 12 секунд и не виснет, а первый зависает на 1-3 минуты? Какие параметры посмотреть в php, apache, mysql может быть каких то ресурсов не хватает или количества допустимых операций за сессию?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Как на страницу конкретного заказа в bitrix добавить ссылку на страницу генерации ссылки на оплату для клиента?, Требуется предоставить возможность менеджеру из админки в разделе конкретного заказа генерировать для клиента ссылку на оплату по заказу.
Андрей Николаев написал: 2) Сделали свою вкладку в заказе , где менеджер подтверждает возможность оплаты. Там в обработчике - установка параметра и смена типа оплаты у заказа с отправкой письма
Благодарю за информацию, то что нужно! (до этого хотел сделать через модуль, а именно в момент генерации ссылки на модуль разбирать Url и если это url конкретного заказа в ссылку на модуль подставлять его Id, а уже по из на странице модуля в textarea выводить ссылку).
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Как на страницу конкретного заказа в bitrix добавить ссылку на страницу генерации ссылки на оплату для клиента?, Требуется предоставить возможность менеджеру из админки в разделе конкретного заказа генерировать для клиента ссылку на оплату по заказу.
Ситуация. Интернет магазин на bitrix, заказ и оплата написаны полностью на API, стандартные модули bitrix не использовались. Клиент говорит, когда проверит заказ хочет сам отсылать клиенту ссылку на оплату банковской картой на e-mail клиенту.
В генерации такой ссылки участвует Id заказа, поэтому оптимально было бы предложить клиенту возможность генерации по нажатию ссылки на странице конкретного заказа в админке. Пишу о перенаправлении, а на страницу сайта(на которой будет генерироваться ссылка на оплату), а не о сразу генерации ссылки на оплату в админке, поскольку предполагаю что клиенту удобнее будет скопировать URL ссылки из TEXTAREA поля, а если разместить ссылку сразу, то не предупреждённый менеджер может вместо копирования по ней перейти, чем создать лишний запрос банку экваеру, так ещё и может не то что надо скопировать из браузера. Для решения поставленного вопроса, допустимо создавать какие либо поля на этапе формирования заказа, то есть присвоением какой либо информации объектам $basket и $order(поскольку id заказа будет известен после формирования заказа, после чего можно сразу же в этом же файле информацию обновить). Предложите пожалуйста варианты решения!
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Как в bitrix на D7 получить свойство торгового предложения артикул(CML2_ARTICLE) прямо из объекта корзины $basket привязанной к заказу?, Требуется получить из объекта D7 $basket свойство торгового предложения, а именно артикул CML2_ARTICLE
Здравствуйте! Требуется на ajax по api получать данные из заказа bitrix. Сейчас появилась возможность дополнить артикулом, сейчас есть такой код:
$order = \Bitrix\Sale\Order::load($arHistory["ID"]);// получаем заказ по Id foreach ($order->getBasket()->getBasketItems() as $basketItem) {// Перебираем товары и ТП в корзине // здесь получаю всякую инфу, например $name = $basketItem->getField('NAME'); // как прямо из $basketItem->получить-свойство-торгового-предложения("CML2_ARTICLE"); ? }
Вот скрин, как это свойство выглядит в типах инфоблока
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Bitrix. Как на D7 установить статус заказу(в момент формирования заказа)?, Интересует как через объект $order-> установить статут новому создаваемому заказу.
Не верные статусы в вопросе стандартные написал. Случайно посчитал что DN это статус заказа. А оказалось это статус доставки. Таким образом, я в статусах создал новый статус заказа - "ожидает обработки менеджером", поскольку нужного статуса заказа по-умолчанию не было. На скрине ниже статусы которые были по-умолчанию и новый статус который я создал (Статус A):
Таким образом в конечном счёте строчка кода выглядит так: $order->setField("STATUS_ID", "A");
Изначально я создал заказ с статусом DN - это привело к тому что не получается даже под админом зайти в заказ. Стал разбираться и выяснилось что DN это не статус заказа.
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Bitrix. Как на D7 установить статус заказу(в момент формирования заказа)?, Интересует как через объект $order-> установить статут новому создаваемому заказу.
Bitrix. Как на D7 установить статус заказу(в момент формирования заказа)?, Интересует как через объект $order-> установить статут новому создаваемому заказу.
$order->setBasket($basket);// Применяем корзину к заказу
// ... ещё действия по присвоению разной информации корзине // ... и где то же тут предполагается установить заказу статус DN "Ожидает обработки"(как это сделать черерз $order-> ?), поскольку если этого не сделать устанавливается статус N "Принят, ожидается оплата"
$order->doFinalAction(true); $result = $order->save(); _________________________ Примечание: я понимаю что можно присвоить статус через методы класса, интересует как сделать прямо через объект $order?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Class 'Bitrix\Sale\Basket' not found (если подключать плолог, а если подключать header.php работает), Ошибка Class 'Bitrix\Sale\Basket' если подключать пролог require $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php';, но если подключать шапку(require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");) то всё в порядке.
Сергей, на всякий случай проверил - Bitrix\Sale дополнительно подключить через use всё равно не достаточно, нужно именно выполнить ...::includeModule("...");
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить