Как выгрузить все разделы, если фильтр не работает?

Ссылка скопирована
1 ответ

В общем игнорирует фильтр, есть ли другие способы, или как можно переделать данный?

public static function sections()     {         $data = [];         $method = 'crm.productsection.list';         $b24_result = self::callFull(             $method,             $data,         );         var_dump($b24_result);         die;         return $b24_result;     }     private static function callFull($method, $data) // работает для юзеров, не работает для департаментов, разделов     {         $res = [];         $lastId = 0;         $finish = false;         $data['order']['ID'] = 'ASC';         $data['start'] = -1;         $i = 0;         while (!$finish && $i <= 2) {             var_dump($lastId);             $i++;             $data['filter'][">ID"] = $lastId;             $result = CRest::call(                 $method,                 $data             );             if (count($result['result']) > 0) {                 $lastId = end($result['result'])['ID'];                 $res = array_merge($res, $result['result']);             } else {                 $finish = true;             }             usleep(200000);         }         return $res;     }

public static function sections() { $data = []; $method = 'crm.productsection.list'; $b24_result = self::callFull( $method, $data, ); var_dump($b24_result); die; return $b24_result; } private static function callFull($method, $data) // работает для юзеров, не работает для департаментов, разделов { $res = []; $lastId = 0; $finish = false; $data['order']['ID'] = 'ASC'; $data['start'] = -1; $i = 0; while (!$finish && $i <= 2) { var_dump($lastId); $i++; $data['filter'][">ID"] = $lastId; $result = CRest::call( $method, $data ); if (count($result['result']) > 0) { $lastId = end($result['result'])['ID']; $res = array_merge($res, $result['result']); } else { $finish = true; } usleep(200000); } return $res; }

ps Решил вопрос через параметр 'start' (работает в качестве NAV_PARAMS)

private static function callFull($method, $data) // работает для юзеров, не работает для департаментов, разделов     {         $res = [];         $finish = false;         $pages = 0;         $data['order']['ID'] = 'ASC';         //$data['start'] = -1;         $i = 0;         $n = 0;         while (!$finish && $i <= 2) {             if ($i == 0) {                 $result = CRest::call(                     $method,                     $data                 );                 unset($data);                 $pages = ceil($result['total'] / 50);                 $res[] = $result['result'];             } else {                 $data[$i] = [                     'method' => $method,                     'params' => [                         'order' => [                             'ID' => 'ASC'                         ],                         'start' => $i * 50                     ],                  ];                 if ($n == 50) {                     $res = array_merge($res, CRest::callBatch($data, 50)['result']['result']);                     unset($data);                     $n = 0;                 }             }             $i++;             if ($i <= $pages) {             } else {                 $finish = true;             }             usleep(200000);         }         $res = array_merge($res, CRest::callBatch($data, 50)['result']['result']);         $result = [];         foreach ($res as $val) {             $result = array_merge($result, $val);         }         return $res;     }

private static function callFull($method, $data) // работает для юзеров, не работает для департаментов, разделов { $res = []; $finish = false; $pages = 0; $data['order']['ID'] = 'ASC'; //$data['start'] = -1; $i = 0; $n = 0; while (!$finish && $i <= 2) { if ($i == 0) { $result = CRest::call( $method, $data ); unset($data); $pages = ceil($result['total'] / 50); $res[] = $result['result']; } else { $data[$i] = [ 'method' => $method, 'params' => [ 'order' => [ 'ID' => 'ASC' ], 'start' => $i * 50 ], ]; if ($n == 50) { $res = array_merge($res, CRest::callBatch($data, 50)['result']['result']); unset($data); $n = 0; } } $i++; if ($i <= $pages) { } else { $finish = true; } usleep(200000); } $res = array_merge($res, CRest::callBatch($data, 50)['result']['result']); $result = []; foreach ($res as $val) { $result = array_merge($result, $val); } return $res; }

Дополнительно:

Для начало объясни зачем это?

var_dump($b24_result);         die;         return $b24_result;

var_dump($b24_result); die; return $b24_result;

  • ProjectSoft, просто, чтобы дальше не пошло.
  • ProjectSoft, Не работает сам фильтр с оператором... Пробовал разные операторы... Ещё попробовал метод через постраничную выгрузку "NAV_PARAMS", так же не сработало. Для лидов и пользователей данный метод хорошо работает, но для департменов и разделов отказывается.
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Юрий Linux Ответ

    Для выгрузки всех разделов, даже если фильтр не работает, можно воспользоваться другими способами доступа к данным. В зависимости от того, какая у вас система управления контентом или какой сервис вы используете, есть несколько общих способов для решения данной проблемы.

    1. **SQL запрос**: Если у вас есть доступ к базе данных, вы можете написать SQL запрос, который выберет все разделы из соответствующей таблицы. Например, для WordPress вы можете использовать следующий запрос:

    SELECT * FROM wp_terms WHERE taxonomy = 'category';

    SELECT * FROM wp_terms WHERE taxonomy = 'category';

    2. **API запрос**: Если у вашего сервиса есть API, вы можете воспользоваться им для получения всех разделов. Например, для GitHub API запрос может выглядеть следующим образом:

    https://api.github.com/repos/:owner/:repo/contents

    https://api.github.com/repos/:owner/:repo/contents

    3. **Парсинг страницы**: Если у вас нет прямого доступа к данным через базу данных или API, можно воспользоваться парсингом страницы. Для этого нужно использовать библиотеки для работы с HTML, такие как BeautifulSoup для Python или Simple HTML DOM Parser для PHP.

    4. **Экспорт данных**: Если у вас есть возможность экспортировать данные, это также может быть хорошим способом получить все разделы. Например, вы можете экспортировать все разделы в CSV файл и затем работать с этим файлом.

    5. **Кэширование данных**: Если фильтр не работает из-за проблем с кэшем, можно попробовать очистить кэш или отключить его временно, чтобы убедиться, что проблема не связана с кэшированием.

    Надеюсь, что один из этих способов поможет вам решить проблему с выгрузкой всех разделов, даже если фильтр не работает.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно