При использовании стандартного обмена заказами между 1С Битрикс Управление сайтом и Битрикс 24 можно столкнуться со следующей проблемой:
если у вас несколько сайтов и разные Битрикс 24, то штатными средствами выгружаются заказы со всех сайтов в каждый битрикс.
Для того, чтобы выгружать заказы только с одного сайта в Битрикс 24 можно пойти самым простым путем - немного изменить стандартный модуль обмена.
Для этого заходим по пути \bitrix\modules\sale\general\, открываем файл export.php, находим следующий код:
$filter = array( 'select' => $arSelect, 'filter' => $arFilter, 'order' => $arOrder, 'limit' => $count["nTopCount"] ); if (!empty($arOptions['RUNTIME']) && is_array($arOptions['RUNTIME'])) { $filter['runtime'] = $arOptions['RUNTIME']; } $entity = static::getParentEntityTable(); $dbOrderList = $entity::getList($filter); while($arOrder = $dbOrderList->Fetch())
Перед ним вставляем небольшой код:
/* BEGIN CUSTOM INJECTION */ if( ($_GET['type']=='crm' || $_POST['type']=='crm' || $_REQUEST['type']=='crm') && ($_GET['mode']=='query' || $_POST['mode']=='query' || $_REQUEST['mode']=='query') ) { $arFilter['LID'] = 's1'; } /* END CUSTOM INJECTION */ |
Мы просто добавляем в фильтр параметр, отвечающий за идентификатор нужного сайта. Код в примере выведет только заказы первого сайта (s1).
Напоминаем, что данная вставка может исчезнуть при обновлении БУС, поэтому всегда фиксируйте в отдельном месте все ваши доработки стандартного функционала.