Задать вопрос
sanekmihailow
@sanekmihailow

Как выдернуть пользовательское поле из счета в сделку?

Нужно в бизнес-процессе сделок, через php-код получить значение пользовательского поля из связанного со сделкой счета. Затем записать это значение в поле сделки? Собственно как мне получить id счета, и как потом выдернуть значение? Нужно это потому что существует частичная оплата, и через значение полученной оплаты нужно делать расчет зп.
  • Вопрос задан
  • 533 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
Ramapriya
@Ramapriya
Используйте списочный метод 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) {
    // ваш код
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы