... смарт-процессу
тоже самое, только$parent = new ItemIdentifier($smartType, $smartItemId);есть еще обратный метод$parents = Container::getInstance()->getRelationManager()->getParentElements($parent);простой обработчик ПОСЛЕ изменения смарт-процессаAddEventHandler("crm","onCrmDynamicItemUpdate","MyOnCrmDynamicItemUpdate");
function MyOnCrmDynamicItemUpdate($item, $entityId){
//AddMessage2Log($item->getId()); ...
25.03.2024 16:29:14
"Обработчик событий - это код, который вы пишете для реагирования на событие.
для дополнения стандартной логики события
для запуска дополнительных ...
19.03.2024 09:57:03
"У заказчика было несколько обработчиков на добавление и редактирование сделки
Для оптимизации объединила в 1.
Реализация купона (купон - это свойство в сделке типа ...
16.02.2024 09:58:19
"Аспро Макс
Сделаны лендинги по группам
В каталоге есть разделы пустые (чтобы в меню были) и идет редирект на лендинг
Обработчик, чтобы разделы после выгрузки из 1С не деактивировались"
init.php
AddEventHandler("iblock", "OnBeforeIBlockSectionUpdate", "MyOnBeforeIBlockSectionUpdate");
...
10.12.2023 18:02:38
... интернет-магазин + CRM
какой-то модуль из маркетплейса "Обработка заказов с СБЕРМЕГАМАРКЕТ" - и он не создавал клиента в Заказе-сделке
добавила обработчик OnAfterCrmDealAdd"
AddEventHandler("crm", "OnAfterCrmDealAdd", "AddSberMarketClient");
function AddSberMarketClient(&$arFields){
if(!empty($arFields["ORDER_ID"]) && ...
25.10.2023 13:01:56
... PROPERTY_626 318,320, 322 (относятся к еде) / сумму количества гостей (UF_CRM_1530623573843+UF_CRM_1530623600935)
Захотелось теперь это в поле сделки UF_CRM_AVERAGE_CHECK сохранять"
обработчик в init.php
function CalcAverafeCheckForDeal(&$arFields){
if(isset($arFields["PRODUCT_ROWS"])){
foreach($arFields["PRODUCT_ROWS"] as $arProduct){
$arProductIds[] ...
06.04.2023 14:15:48
"Перешли на новые переговорки (раньше они на инфоблоках были).
У клиента одна переговорка, в базе она как "calendar_745"
Задачи
Название События календаря "Занятость переговорных" не отображалось. Исправить
Сделать невозможным "нахлест" собраний и событий друг на друга (ошибка, есть тике у Битрикса)
Из События нужна ссылка на Собрание (если было создано оттуда), чтобы из Календаря можно было перейти в Собрание (никогда такого не было)
Не добавлять Событие этого...
09.02.2023 15:47:05
... множественных полей ) меньше 50% от суммы товаров со значением "Батут" свойства "тип товара" .
Причем, вперед нельзя, обратно можно.
"
обработчик в init.phpAddEventHandler("crm", "OnBeforeCrmDealUpdate", "CheckMinPO");
function CheckMinPO(&$arFields){
if(!empty($arFields["STAGE_ID"]) && !empty($arFields["MODIFY_BY_ID"])){ ...
09.12.2022 16:07:11
"Задача:
генерировать договор с данными доверенности менеджера (ответственный в сделке), хранится в свойстве пользователя
"
свойства в полях для шаблонов не видны,
я использовала 2 поля из пользователя, которые в моем случае нигде не используются и их подменяю нужными значениями, но они видны в полях для шаблонов\Bitrix\Main\EventManager::getInstance()->addEventHandler('documentgenerator', 'onBeforeProcessDocument', function(\Bitrix\Main\Event $event){
//{AssignedPersonalGender}...
07.12.2022 09:12:50
"Режим работы с заказами больше не поддерживается в Битрикс24. https://helpdesk.bitrix24.ru/open/13632830/
Одни сделки. Но в сделке нет данных из свойств заказа.
Обработчик, который подтягивает некоторые данные в сделку из заказа"
use Bitrix\Main;
use \Bitrix\Main\Loader;
use Bitrix\Sale,
Bitrix\Sale\Order;
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]....
04.12.2022 22:30:42
"Задача:
1. В поле лида положить время первого звонка менеджера
2. Присылать уведомление о пропущенном звонке всем сотрудникам того же департамента (для определенных департаментов), в котором находится ответственный за лид или контакт."
AddEventHandler("voximplant", "onCallEnd", "MyOnCallEnd");
function MyOnCallEnd($data){
if(!empty($data["CALL_ID"])&&!empty($data["CALL_TYPE"])&&($data["CALL_TYPE"]==1)...
17.11.2022 21:06:08
"Крайний срок не должен быть больше, чем значение поля типа дата (или дата/время).
Возможность поставить интервал "-1ч", "0" "+10мин" к значению поля, что даст большую вариантивность функционалу
Можно выбрать подразделение сотрудников для правила, поставить исключение, указать его роль в задаче"
https://nikaverro.ru/upload/medialibrary/25a/xm3mrp92xydcdlajnndqppikgmt4qas0.png
use Bitrix\Main\SystemException; //если надо генерировать ошибку
AddEventHandler("tasks"...
03.11.2022 04:05:52
... что кто-то артикул пишет не целиком, кто-то с пробелами, кто-то с тире, чтобы поиск норм подбирал товары.
Решение:
Добавить тегов в товар"
обработчик в init.phpAddEventHandler("iblock", "OnBeforeIBlockElementAdd", "MyOnBeforeIBlockElementAdd");
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "MyOnBeforeIBlockElementUpdate"); ...
28.10.2022 14:41:16
... is_array($arEvent['LOCATION'])&& !empty($_REQUEST['MEETING_ID_NIKA'])){ //вот это условие добавляем
$arFilter["!PROPERTY_MEETING_ID"] = $_REQUEST['MEETING_ID_NIKA'];
}
}
добавляем обработчик в init.php
он будет удалять дубли, заполнять свойство MEETING_ID
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", "MyOnBeforeIBlockElementAdd");
function MyOnBeforeIBlockElementAdd(&$arFields){
...
13.10.2022 20:46:42
... возвращается на статус Не обработан (начальный статус).
И тумблер на данную настройку"
Тумблер сделала через глобальную константу в БП типа да/нет
Обработчик в init.php
AddEventHandler("crm","OnBeforeCrmLeadUpdate","MyOnBeforeCrmLeadUpdate");
function MyOnBeforeCrmLeadUpdate(&$arFields){
$constantId = "Constant1664531666359";//глобальная ...
30.09.2022 13:58:23
"габариты из 1С выгружаются не в каталожные параметры товара, а в свойства SHIRINA_1, GLUBINA_1, VYSOTA_1.
обработчик заполняет параметры товара"
init.php
use Bitrix\Main,
Bitrix\Main\Loader,
Bitrix\Main\EventManager;
//autoload class
Loader::registerAutoLoadClasses(null, array(
"Prop2ParamTK" ...
15.07.2022 17:03:28
... изображения ("MORE_PHOTOS") выгружались в определенном порядке, а именно по алфавиту. "
Из 1С название выгружается в поле DESCRIPTION.
Сделала обработчик в init.php при добавлении и изменении элемента, который сортирует по данному полю.
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "SortMorePhotos");
...
12.02.2022 22:27:25
"Задача: если заказ не оплачен в течение 10 мин (примерно), то деактивировать его"
Агент, который запускается раз в 5 мин.function CancelUnpaidOrders(){
CModule::IncludeModule("iblock");
CModule::IncludeModule("sale");
$arFilter = Array(
"PAYED" => "N",
"CANCELED" => "N",
"
Вероника Малышева
19.01.2022 02:24:42
... аффилиату, что его заказ оплачен"
1. понадобятся 2 библиотеки, которые положила в папку /tools/
PHPMailer.tar.gz (/blog/PHPMailer.tar.gz)
phpqrcode.tar.gz (/blog/phpqrcode.tar.gz)
2. обработчики в init.php
const SITE_TICKET = "tc";
const TICKET_INFO_URL = "http://nikaverro.ru/ticket/info/";
const QRCODE_DIR_REL = "http://nikaverro.ru/upload/qrcode/";
const QRCODE_DIR_ABS = "/upload/qrcode/";
...
19.01.2022 02:12:59
... фильтра - множественное, показывается в умном фильтре
Цвет для детальной - немножественное, показывается в детальной странице
4. сделали обработчик, который заполняет свойства в инфоблоке автоматом
init.phpAddEventHandler( "iblock", "OnBeforeIBlockElementAdd", "MyOnBeforeIBlockElementAdd");
AddEventHandler( ...
11.12.2021 16:39:23
... авторизации из сессии перемещаем в свойство
в иконке выводим в атрибуте data-id id товара в шаблонах компонентов
на иконку "сердечко" вешаем обработчикBX.ready(function(){
$(document).on("click", '.icon-heart_active', function() {
let action;
if($(this).hasClass('infavor')){
$(this).removeClass('infavor');
...
30.10.2021 16:58:46
"Задача: отправлять при регистрации более полную информацию о пользователе"
размещаем в init.phpAddEventHandler("main", "OnBeforeEventAdd", "MyOnBeforeEventAdd");
function MyOnBeforeEventAdd(&$event, &$lid, &$arFields){
if(($event=="NEW_USER") && (empty($arFields["SECOND_NAME"]) || empty($arFields["PERSONAL_PHONE"]))){
$arFields["SECOND_NAME"] = "";
$arFields["PERSONAL_PHONE"]...
30.10.2021 15:25:56
"Фото в 1С не хранятся, из-за экономии места, задача обновлять с фтп, выводить товары только те, для которых есть с фото"
сделала на обработчиках в init.phpAddEventHandler( "iblock", "OnBeforeIBlockElementAdd", "MyOnBeforeIBlockElementAdd");
AddEventHandler( "iblock", "OnBeforeIBlockElementUpdate", "MyOnBeforeIBlockElementUpdate");"UploadMorePhotos ...
14.10.2021 16:48:53
... $mess["MESSAGE"]."-------------------------";
}обновить тикет $arFields = array(
"UF_1C_ORDER" => 1
);
CTicket::Set($arFields, $MESSAGE_ID, 1, "N",$mid,"N","N");
Обработчики
стадия с ID 9 - не в рамках договора
при переводе в нее автоматом создается ЛИД в отделе продаж с данными тикетаAddEventHandler("support",...
31.08.2021 23:16:04
... задачи не добавлять комментарий."
Совсем не добавлять можно, но это трогать ядро (а это зло), а вот после добавления сообщения к задаче есть обработчик, в нем и будем удалять данный коммент.
AddEventHandler("tasks","OnAfterCommentAdd","MyOnAfterCommentAdd");
function MyOnAfterCommentAdd($commentId, &$arFields){
if(
(($arFields["COMMENT_TEXT"]=="Загрузила ...
04.06.2021 14:03:03
... неправильно отбор товаров работает)
Решение: выгружать все товары без данного отбора, а по определенному свойству товары деактивировать обработчиком
2 обработчика (на добавление, изменение) размещаем в /bitrix/php_interface/init.php
10 - ID инфоблока
свойство, в котором укзано, грузить или нет ...
04.03.2021 11:22:20
"Проблема: спам-боты спамят через битрикс-форму, хотя на ней есть капча.
На сайте есть несколько форм, которые работают через разные модули Iblock и form.result.new.
Капчу от битрикса они обходят моментально, а еще она неудобная и некрасивая для пользователей. Да и любая капча неудобна для клиентов.
Решение: Добавьте поле какое-нибудь лишнее и назовите его телефон, например, а для пользователей спрячьте.
Спам машины будут это поле заполнять, а пользователи нет. Если поле это заполнено значит...
15.02.2021 18:49:57
Задача: генерировать символьный код из определенного свойства (id =15) при добавлении товара в инфоблок
$arFields["PROPERTY_VALUES"][15] - можно заменить на любое другое поле
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", "MyOnBeforeIBlockElementAdd");
function MyOnBeforeIBlockElementAdd(&$arFields){
if($arFields["IBLOCK_ID"]==10){
if(isset($arFields["PROPERTY_VALUES"][15]) && is_array($arFields["PROPERTY_VALUES"][15])){...
10.11.2020 08:34:14
У заказчика есть постоплата после доставки, а есть предоплата до поставки
Поэтому в зависимости от текущего статуса надо переводить в в 1 из 2х статусов:
Если предоплата, то в статус "Оплачен, формируется к отправке"
Если постоплата, то в статус "Выполнено"
Битрикс стандартными настройками умеет переводить только в 1 статус.
1. Отключить все изменения Битриксом:
В роботах-триггерах (если CRM)
В настройках модуля платежной системы "Статус заказа после оплаты"
В настройках...
10.11.2020 08:34:14
... (id типа цены на сайте 4)
для 3-9шт (id типа цены на сайте 2)
для 10 и более (id типа цены на сайте 3)
Задача:
для определенных продуктов (Свойство Обработчик заполнено и равно 3)
из нескольких типов цен заполнять цену с расширенным режимом (id типа цены на сайте 1) "
1. на сайте завести ...
20.10.2020 13:11:51
Часто бывает, когда хочется заполнять в 1С производителя в стандартном поле производитель
А на сайте иметь инфоблок с брендами AddEventHandler( "iblock", "OnAfterIBlockElementAdd", array( "nika_import", "FillTheBrands" ) );
AddEventHandler( "iblock", "OnAfterIBlockElementUpdate", array( "nika_import", "FillTheBrands" ) );
class nika_import {
static function FillTheBrands( $arFields ){
$arCatalogID=array(59); //каталоги...
13.10.2020 07:59:48
"Если у вас отличный инфоблок с товарами на сайте, прописаны коды, названия, и не хочется чтобы при обмене с 1С это сломалось
Особенно если это поисковиками проиндексировано
Зачастую это бывает, когда товары велись на стороне сайта, а потом стали выгружаться из 1С
структуру разделов можно настроить в дереве групп
но бывает лень, а остатки и цены надо, чтобы из 1с обновлялись"
чтобы у разделов НЕ обновились коды, имя, родительский раздел
AddEventHandler("iblock", "OnBeforeIBlockSectionUpdate"...
13.10.2020 07:59:48
Когда товар под заказ, и нужно уточнить наличие у поставщика, лучше разрешать оплату (эквайринг, счет), после подтверждения менеджером.
А еще удобнее клиенту отправлять сразу ссылку на оплату, или сгенерированный счет.
Инструкция
Сначала создадим нужные статусы
В настройках (настройки -> настройки модулей -> интернет-магазин -> настройки -> Статус, начиная с которого можно оплатить заказ (указать)
Сделать настройки в типах событий (добавить в нужном событии поле ORDER_PAYMENT
В почтовых...
03.05.2020 11:13:19
Сортировать по релевантности | Отсортировано по дате