Skip to content

Commit 7fc510a

Browse files
committed
Add support for entity Lead
1 parent 24040be commit 7fc510a

5 files changed

Lines changed: 361 additions & 51 deletions

File tree

README.md

Lines changed: 95 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@
2424
- [Методы для работы с каталогами](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B0%D0%BC%D0%B8)
2525
- [Методы для работы с товарами](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0%D0%BC%D0%B8)
2626
- [Методы работы с разделами товаров](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%B0%D0%BC%D0%B8-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2)
27+
- [Методы работы с товарными позициями](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BD%D1%8B%D0%BC%D0%B8-%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F%D0%BC%D0%B8)
2728
- [Методы для работы с пользователями](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F%D0%BC%D0%B8)
2829
- [Методы работы с задачами](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B0%D0%BC%D0%B8)
2930
- [Методы для работы с делами](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%B4%D0%B5%D0%BB%D0%B0%D0%BC%D0%B8)
3031
- [Методы для работы с диском](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%BC)
32+
- [Методы для работы с лидами](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%BB%D0%B8%D0%B4%D0%B0%D0%BC%D0%B8)
3133
- [Вспомогательные классы](#%D0%92%D1%81%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B)
3234
- [Класс `HTTP`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-http)
3335
- [Дополнительные параметры](#%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B-1)
@@ -48,7 +50,7 @@
4850
- PHP >= 7.0;
4951
- класс [`HTTP`](https://github.com/andrey-tech/http-client-php) >= 3.0 - НТТР(S) клиент с троттлингом запросов, поддержкой маркера BOM в теле сообщения формата JSON и выводом отладочной информации о запросах и ответах в STDOUT;
5052
- класс [`DebugLogger`](https://github.com/andrey-tech/debug-logger-php) >= 2.0 - логгер, сохраняющий отладочную информацию в файл вместе с данными об объеме используемой оперативной памяти и прошедшем времени;
51-
- произвольный автозагрузчик классов, реализующий стандарт [PSR-4](https://www.php-fig.org/psr/psr-4/).
53+
- произвольный автозагрузчик классов, реализующий стандарт [PSR-4](https://www.php-fig.org/psr/psr-4/), в случае если не используется Composer.
5254

5355

5456
<a id="%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0"></a>
@@ -80,10 +82,12 @@ $ composer require andrey-tech/bitrix24-api-php:"^1.6"
8082
- [Каталог](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B0%D0%BC%D0%B8)
8183
- [Товары](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0%D0%BC%D0%B8)
8284
- [Разделы товаров](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%B0%D0%BC%D0%B8-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2)
85+
- [Товарные позиции](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BD%D1%8B%D0%BC%D0%B8-%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F%D0%BC%D0%B8)
8386
- [Задачи](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B0%D0%BC%D0%B8)
8487
- [Дела](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%B4%D0%B5%D0%BB%D0%B0%D0%BC%D0%B8)
8588
- [Пользователи](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F%D0%BC%D0%B8)
8689
- [Диск](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%BC)
90+
- [Лиды](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%BB%D0%B8%D0%B4%D0%B0%D0%BC%D0%B8)
8791

8892
<a id="%D0%91%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0"></a>
8993
### Базовые методы класса
@@ -157,7 +161,6 @@ $ composer require andrey-tech/bitrix24-api-php:"^1.6"
157161
- `setDealContactItems($dealId, array $contacts) :array` Устанавливает контакты, связанные со сделкой.
158162
- `setDealProductRows($dealId, array $products) :array` Устанавливает товарные позиции, связанные со сделкой.
159163
- `getDealProductRows($dealId) :array` Возвращает массив параметров товарных позиций, связанных со сделкой.
160-
- `getDealProductRowFields() :array` Возвращает описание полей товарных позиций.
161164
- `getDealFields() :array` Возвращает описание полей сделки, в том числе пользовательских.
162165

163166
Параметры методов:
@@ -671,6 +674,14 @@ try {
671674
}
672675
```
673676

677+
<a id="%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BD%D1%8B%D0%BC%D0%B8-%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F%D0%BC%D0%B8"></a>
678+
### Методы работы с товарными позициями
679+
680+
Методы для работы с товарными позициями находятся в трейте `\App\Bitrix24\ProductRow`:
681+
682+
- `getProductRowFields() :array` Возвращает описание полей товарных позиций.
683+
684+
674685
<a id="%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F%D0%BC%D0%B8"></a>
675686
### Методы для работы с пользователями
676687

@@ -893,6 +904,88 @@ try {
893904
}
894905
```
895906

907+
<a id="%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%BB%D0%B8%D0%B4%D0%B0%D0%BC%D0%B8"></a>
908+
### Методы для работы с лидами
909+
910+
Методы для работы с лидами находятся в трейте `\App\Bitrix24\Lead`:
911+
912+
- `getLeadFields() :array` Возвращает описание полей лида, в том числе пользовательских.
913+
- `getLead($leadId, array $with = []) :array` Возвращает лид по его ID.
914+
- `addLead(array $fields = [], array $params = []) :int` Добавляет лид и возвращает его ID.
915+
- `updateLead($leadId, array $fields = [], array $params = []) :int` Обновляет лид и возвращает его ID.
916+
- `deleteLead($leadId) :int` Удаляет лид по его ID.
917+
- `getLeadList(array $filter = [], array $select = [], array $order = []): Generator`
918+
Загружает все лиды с возможностью фильтрации, сортировки и выборки полей.
919+
- `fetchLeadList(array $filter = [], array $select = [], array $order = []): Generator`
920+
Загружает все лиды с возможностью фильтрации, сортировки и выборки полей.
921+
Реализует [быстрый метод](https://dev.1c-bitrix.ru/rest_help/rest_sum/start.php) загрузки при работе с большими объемами данных.
922+
- `getLeadProductRows($leadId) :array` Возвращает массив параметров товарных позиций, связанных с лидом.
923+
- `setLeadProductRows($leadId, array $products) :array` Устанавливает товарные позиции, связанные с лидом.
924+
925+
Параметры методов:
926+
927+
+ `$leadId` - ID лида;
928+
+ `$with` - имена связанных сущностей, возвращаемых вместе с лидом:
929+
* `\App\Bitrix24\Bitrix24API::$WITH_PRODUCTS` - товарные позиции (возвращаются в виде массива в поле с именем, заданным публичным статическим свойством `Bitrix24API::$PRODUCTS`);
930+
- `$fields` - набор полей лида;
931+
- `$params` - набор параметров лида;
932+
- `$filter` - параметры фильтрации;
933+
- `$order` - параметры сортировки;
934+
- `$select` - параметры выборки полей;
935+
- `$products` - массив параметров товарных позиций.
936+
937+
```php
938+
use App\Bitrix24\Bitrix24API;
939+
use App\Bitrix24\Bitrix24APIException;
940+
941+
try {
942+
943+
$webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/';
944+
$bx24 = new Bitrix24API($webhookURL);
945+
946+
// Добавляем новый лид
947+
$leadId = $bx24->addLead([
948+
'TITLE' => 'Новый лид №1'
949+
]);
950+
print_r($leadId);
951+
952+
// Устанавливаем набор связанных товарных позиций
953+
$bx24->setLeadProductRows($leadId, [
954+
[ 'PRODUCT_ID' => 1689, 'PRICE' => 1500.00, 'QUANTITY' => 2 ],
955+
[ 'PRODUCT_ID' => 1860, 'PRICE' => 500.00, 'QUANTITY' => 15 ]
956+
]);
957+
958+
// Обновляем существующий лид
959+
$bx24->updateLead($leadId [
960+
'TITLE' => 'Новый лид №12'
961+
]);
962+
963+
// При необходимости, изменяем значение по умолчанию 'PRODUCTS' на '_PRODUCTS' для имени поля
964+
// со списком товарных позиций, возвращаемых вместе с лидом
965+
Bitrix24API::$WITH_PRODUCTS = '_PRODUCTS';
966+
967+
// Загружаем лид по ID вместе со связанными товарными позициями
968+
$lead = $bx24->getLead($leadId, [ Bitrix24API::$WITH_PRODUCTS ]);
969+
print_r($lead);
970+
971+
// Удаляем существующий лид
972+
$bx24->deleteLead($leadId);
973+
974+
// Загружаем все лиды используя быстрый метод при работе с большими объемами данных
975+
$generator = $bx24->fetchLeadList();
976+
foreach ($generator as $leads) {
977+
foreach($leads as $lead) {
978+
print_r($lead);
979+
}
980+
}
981+
982+
} catch (Bitrix24APIException $e) {
983+
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
984+
} catch (Exception $e) {
985+
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
986+
}
987+
```
988+
896989
<a id="%D0%92%D1%81%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B"></a>
897990
## Вспомогательные классы
898991

src/App/Bitrix24/Bitrix24API.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* @see https://github.com/andrey-tech/bitrix24-api-php
99
* @license MIT
1010
*
11-
* @version 1.3.3
11+
* @version 1.6.0
1212
*
1313
* v1.0.0 (13.10.2019) Начальный релиз
1414
* v1.1.0 (31.10.2019) Добавлен метод getLastResponse()
@@ -24,6 +24,7 @@
2424
* v1.3.2 (23.01.2021) Исправлены сообщения об ошибках
2525
* v1.4.0 (03.02.2021) Добавлены свойства класса, задающие имена полей связанных сущностей
2626
* v1.5.0 (06.02.2021) Изменения для классов: HTTP 3.0 и DebugLogger 2.0; добавлен метод setLogger()
27+
* v1.6.0 (20.02.2021) Добавлены трейты Lead, ProductRow
2728
*
2829
*/
2930

@@ -46,6 +47,8 @@ class Bitrix24API
4647
use Disk;
4748
use Activity;
4849
use Task;
50+
use Lead;
51+
use ProductRow;
4952

5053
/**
5154
* Имя поля для массива связанных сущностей типа контакт

0 commit comments

Comments
 (0)