Используйте списочный метод
GetList().
$arOrder = ["ID" => "DESC"]; // сортировка
$arFilter = ["UF_DEAL_ID" => $dealId]; // фильтрация по ID сделки
$arSelect = ["ID", "UF_DEAL_ID"]; // какие поля выбрать
$invoices = CCrmInvoice::GetList($arOrder, $arFilter, false, false, $arSelect);
while($invoice = $invoices->Fetch()) {
// ваш код
}
Проблема может возникнуть, если у сделки несколько счетов (собственно, поэтому цикл и используется), поэтому потребуются дополнительные параметры фильтрации.
Также можно использовать rest-метод
crm.invoice.list. Но для этого нужно будет дополнительно генерировать входящий вебхук и использовать
HttpClient для вызова метода
в таком случае код будет примерно такой:
use Bitrix\Main\Web\HttpClient;
use Bitrix\Main\Web\Json
$client = new HttpClient;
$webhook = "https://webhook_url/crm.invoice.list";
$params = [
"filter" => $arFilter,
"order" => $arOrder
];
$request = $client->post($webhook, Json::encode($params));
$result = Json::decode($request);
foreach($result["result"] as $res) {
// ваш код
}