Обновили модуль интегарции для КА до 4.2.0.1 и после этого не работает заполнение реквизитов через Свой алгоритм . Обращение к пользовательским полям я поправил , но пользовательские поля используются только в двух алгоритмах из шести.
Вот так выгружаются сделки , из реквизитов через свою формулу заполнился только склад, если посмотреть его алгоритм , то можно заметить, что в отличие от других алгоритмов, в нем нет условных операторов. Может синтаксис условных операторов поменялся?
Нужна срочная помощь.
UPDATE: Поставили последнюю версию 4.2.0.4 с правками ошибок - не помогло.
Разное поведение компонента при его запуске из браузера и при GET-запросе
Решаю задачу по предоставлению данных о товарах стороннему приложению по GET-запросу. Реализовываю некое АПИ. И столкнулся с интересным поведением компонента bitrix:catalog.section - разная выдача товаров при запросе из браузера и запросе из Postman: 1. Вот код, который запускается из браузера - . Результат его выполнения - - 2 товара выдал компонент и 2 товара нашлось через GetList 2. Аналогичный код выполняется при запросе из Postman - . Результат выполнения - - компонент игнорирует фильтр. Прошу помочь разобраться в причине такой разной работы компонента
Не с первого раза загружаются данные на страницу товара
На странице товара проявляется следующая проблема - не с первого раза выводится цена по договору (блок "Ваша цена" ). Если открыть товар, который ранее какое-то время не открывался, то цена по договору не выводится , если же просто перезагрузить страницу, то выводится . Иногда нужно перезагрузить страницу несколько раз. Видео - .
Эта цена выводится для конкретного пользователя, если для него в HL-блоке заведен договор с льготными условиями. При этом условия договора могут распространяться только для части товаров. В итоге, для вывода цены по договору у пользователя должен быть договор и действие договора должно распространяться на текущий товар. Так как в компоненте каталога настроено кэширование , то вывод цены по договору реализован в файле component_epilog.php компонента catalog.element , так как по логики фреймворка эта часть шаблона выполняется всегда и предназначена как раз таки для данных, которые зависят от посетителя страницы. Подгрузка цены по договору реализована в отдельном скрипте contract-price.php, который подключается в файле component_epilog.php . Логика скрипта contract-price.php такая - для текущего пользователя ищется договор и цена по договору для текущего товара. Если цена по договору определена, то она выводится на страницу с помощью JS-скрипта .
Предполагаю, что решение проблемы кроется в настройках кэша.
Провел ряд тестов: 1. Если для двух пользователей существует цена по договору для определенного товара, то после прогрузки цены для одного пользователя, она с первого раза выводится для другого. Предположу, что при прогрузке блока "Ваша цена" одним пользователем, он попадает в кэш и тогда другому этот блок выводится готовым из кэша. 2. На сайте настроены поддомены для городов, например, и . И если прогрузить цену по договору для одного города, то на другом она не выведется с первого раза, тоже придется обновлять страницу. Видео - . 3. Добавил отладочный код в скрипт contract-price.php, который при выполнении записывает в файл цену договора . Таким образом убедился, что когда цена по договору не выводится, то и файл не создается, т. е. скрипт не исполняется. Хотя должен всегда исполняться, так как он вызывается в component_epilog.php, который должен выполняться при каждом вызове компонента независимо от настроек кэша. 4. Есть тестовая копия сайта для разработки. Там эта проблема не проявляется, хотя все файлы и настройки кэша идентичны.
Прошу помочь разобраться с этой проблемой.
Не понятно, каким образом создается результат веб-формы
Вопрос решен - нашел обработчик события на создание элемента инфоблока, в котором реализовано добавление результата веб-формы через метод \CFormResult::Add.
Не понятно, каким образом создается результат веб-формы
Столкнулся с задачей: при нажатии на кнопку "Купить в 1 клик" на странице товара создаётся запись в инфоблоке "one_click_orders" (IBLOCK_ID = 20) . После этого я вижу, что также создаётся результат в веб-форме "Купить в 1 клик" (ID веб-формы 4) . Не могу понять, каким образом создаётся этот результат веб-формы.
В обработчике кнопки "Купить в 1 клик" (/ajax/buy_1_click_new.php) вызывается компонент `bitrix:iblock.element.add.form` , который добавляет элемент в инфоблок и управляет самой формой заказа:
Но никаких манипуляций с веб-формами там нет. Также проверил, что обработчиков события добавления элемента в инфоблок "one_click_orders" нет, и бизнес-процессов на создание элемента инфоблока тоже нет.
Прошу помочь разобраться, каким образом создается запись в результатах веб-формы. Нужно это для того, чтобы передать в результат веб-формы скрытое поле "Яндекс ClientID", а я его сейчас могу только до инфоблока довести.
Есть страница с веб-формой . При попытке отправить форму вижу в консоли следующие ошибки . Если открывать подробности ошибок из консоли, то это ничего не дает.
Почитал на форуме все темы связанные с ошибкой "BX is not defined". Основное решение - это подключение библиотеки командой:
Код
CJSCore::Init(array("ajax"));
Пробую подключить эту библиотеку в файле , но это не помогает:
Loader - класс для загрузки необходимых файлов, классов и модулей. Это единственный класс, который включается непосредственно. Используется для подключения всех модулей, кроме main и fileman.
Например, есть задача прочитать данные смарт-процесса в корпоративном портале. Наиболее оптимальный код, который получилось собрать, чтобы получить список элементов смарт-процесса:
Код
use Bitrix\Main\Loader;
Loader::includeModule('crm');
use Bitrix\Crm\Service;
$entityTypeId = 150;
$factory = Service\Container::getInstance()->getFactory($entityTypeId);
$rsData = $factory->getItems(['filter' => ['ID' => 41]]);
foreach ($rsData as $rsItem) {
$arItem = $rsItem->getData();
print_r($arItem);
}
Вопрос по третьей строке: Как подключить класс Service через класс Loader?
Если не подключать класс Service явно, предполагая, что он подключится вместе с модулем crm, то этого не происходит, код не исполняется:
Цитата
[Error] Class "Service\Container" not found (0) /home/bitrix/www/local/debug.php:9 ----------