:!: А про обновления что то слышали? Обновите свои сайты и не будет проблем, обновления не зря выпускают. Эти уязвимости закрыты еще в мае при обновлении.
Андрей Николаев написал: Андрей , я предполагаю что ошибка из-за внешних запросов. Избавить бы от ненужной логики в init (ее там много)
Там половина закомментировано уже, оставшиеся условия нужны и работают каждый день исправно, могут 10 дней проработать и только вот сбой происходит не понятно по каким причинам, в логах ошибок тоже нет. Сбрасывается автоматический и на ручной режим переключается синхронизация и всё. Заходишь, ставишь опять 1 или 2 минуты интервал импорта, пересохраняешь и всё работает вновь. Может проработать 3-5-10 дней и опять сброс. Интервал увеличивал, не помогает.
Может на cron как то есть возможность обработчик импорта прицепить?
В любом случае большое спасибо за ответ, будем далее разбираться..., может удастся поймать этого барабашку. ))
Здравствуйте, раз в 5-10 дней слетает синхронизация Б24 (коробка) с Битрикс малый бизнес.
Служба поддержки пишет что проблема в обработчике событий файла init OnBeforeCrmDealAddHandler, закомментировал строки, все равно слетает периодически. Отключить init возможности нет, так как проект работает и в нем необходимые доработки есть.
Возможно кто свежим, опытным взглядом подскажет что не правильно в init прописано?
Скрытый текст
<? use \Bitrix\Iblock; use Bitrix\Main\Loader; Loader::includeModule("iblock"); Loader::includeModule("crm");
// при создании сделки, если заказ уже оплачен, то меняется статус на NEW AddEventHandler("crm", "OnBeforeCrmDealAdd", "ResetStatusPaid"); function ResetStatusPaid( &$arFields ) { if(array_key_exists('STAGE_ID', $arFields) && $arFields['STAGE_ID']=="WON") { $arFields['STAGE_ID']='NEW'; if(array_key_exists('STAGE_SEMANTIC_ID', $arFields)) unset($arFields['STAGE_SEMANTIC_ID']); if(array_key_exists('CLOSED', $arFields)) unset($arFields['CLOSED']); if(array_key_exists('CLOSEDATE', $arFields)) unset($arFields['CLOSEDATE']); } // file_put_contents($_SERVER["DOCUMENT_ROOT"]."/Deallog.html",PR($arFields,true,true)." OnBeforeCrmDealAdd "."\n",FILE_APPEND); }
[QUOTE]Борис Хмелёв написал: В облаке - никакт. В коробке - через init.php
Вставляй в init.php[CODE] AddEventHandler("crm", "OnBeforeCrmDealUpdate", "OnBeforeCrmDealUpdate");function OnBeforeCrmDealUpdate(&$arFields) { global $USER; $curUser = $USER->GetID();
//получаем текущую сделку до изменения //в массиве arFields у нас будут данные по этой сделке, для обновления
$curDeal = \CCrmDeal::GetList(['DATE_CREATE' => 'DESC'],["ID"=>$arFields['ID'], 'CHECK_PERMISSIONS' => 'N'],[],false)->fetch(); if($curUser == 9) // 9 = ID пользователя которому не нужно давать менять стадию { //если текущая стадия сделки равна, допустим "Новая сделка", та самая по которой нам нужно для пользователя откатывать назад, иначе ничего не делаем if($curDeal['STAGE_ID'] == 'NEW') { $arFields['STAGE_ID'] = $curDeal['STAGE_ID']; //откатываем сделку назад } } } [/CODE]И будет тебе счастье.[/QUOTE] Доброго времени Борис, подскажите пожалуйста, как в init прописать обработчик по событию добавление счета: OnBeforeCrmInvoiceAdd, при котором для всех пользователей нельзя создавать Счета в стадии сделки = NEW, а в других стадиях можно? Желательно с предупреждением "Переведите сделку на другую стадию". Спасибо.
[QUOTE]Stanislav Lupinskiy написал: Единственное, что приходит в голову, это запретить менджерам в правах (crm - настройки - права доступа) возможность добавления счета и добавлять его автоматически на нужной стадии. Правда, с автоматическим созданием счета не все так просто.[/QUOTE] Ответ исчерпывающий, сразу все стало понятно. Запретить менеджерам счет выписывать и заходить в Битрикс 24! ;)
[QUOTE]Кейсистемс написал: Правами же легко настраивается [/QUOTE] Еще бы написали чьими правами и как? Если вы имеете в виду права в Битрикс 24, то непонятно как вы умудрились там сделать такую настройку...? Может поделитесь?
Ну никак там не видно условия.., создавать счет на определенной стадии сделки.