Skip to content

Commit fc94578

Browse files
author
andrey-tech
committed
Update README.md
1 parent cc33d64 commit fc94578

3 files changed

Lines changed: 294 additions & 8 deletions

File tree

README.md

Lines changed: 286 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,20 @@
77

88
**Документация находится в процессе разработки.**
99

10+
# Содержание
11+
1012
<!-- MarkdownTOC levels="1,2,3,4,5,6" autoanchor="true" autolink="true" -->
1113

1214
- [Требования](#%D0%A2%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
15+
- [Класс `\App\Bitrix24\Bitrix24API`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appbitrix24bitrix24api)
16+
- [Описание общих методов класса](#%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BE%D0%B1%D1%89%D0%B8%D1%85-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%B2-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0)
17+
- [Дополнительные параметры](#%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)
18+
- [Методы работы с сущностями Битрикс24](#%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%81%D1%83%D1%89%D0%BD%D0%BE%D1%81%D1%82%D1%8F%D0%BC%D0%B8-%D0%91%D0%B8%D1%82%D1%80%D0%B8%D0%BA%D1%8124)
19+
- [Методы работы со сделками](#%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%BE-%D1%81%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0%D0%BC%D0%B8)
20+
- [Описание методов](#%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%B2)
21+
- [Обработка ошибок](#%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA)
22+
- [Примеры](#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B)
23+
- [Работа со сделками](#%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81%D0%BE-%D1%81%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0%D0%BC%D0%B8)
1324
- [Автор](#%D0%90%D0%B2%D1%82%D0%BE%D1%80)
1425
- [Лицензия](#%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F)
1526

@@ -21,9 +32,284 @@
2132
- PHP >= 7.0.
2233
- Произвольный автозагрузчик классов, реализующий стандарт [PSR-4](https://www.php-fig.org/psr/psr-4/).
2334

35+
<a id="%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appbitrix24bitrix24api"></a>
36+
## Класс `\App\Bitrix24\Bitrix24API`
37+
38+
Список общих методов класса:
39+
40+
- `__construct(string $webhookURL)`
41+
- `request(string $function, array $params = []) :?array`
42+
- `getList(string $function, array $params = []) :\Generator`
43+
- `fetchList(string $function, array $params = []) :\Generator`
44+
- `batchRequest(array $commands, $halt = true) :array`
45+
- `buildCommands(string $function, array $items) :array`
46+
- `buildCommand(string $function, array $params) :string`
47+
- `getLastResponse() :?array`
48+
49+
<a id="%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BE%D0%B1%D1%89%D0%B8%D1%85-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%B2-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0"></a>
50+
### Описание общих методов класса
51+
52+
- `__construct(string $webhookURL)`
53+
Конструктор класса `Bitrix24API`.
54+
- `$webhookURL` - URL входящего вебхука Битрикс24.
55+
56+
- `request(string $function, array $params = []) :?array`
57+
Отправляет запрос в API и возвращает ответ сервера.
58+
- `$function` - имя метода (функции) запроса;
59+
- `$params` - параметры запроса.
60+
61+
- `getList(string $function, array $params = []) :\Generator`
62+
Загружает все сущности заданного типа.
63+
Возвращает объект типа `\Generator` для последующей выборки параметров загруженных сушностей.
64+
- `$function` - имя метода (функции) запроса;
65+
- `$params` - параметры запроса.
66+
67+
- `fetchList(string $function, array $params = []) :\Generator`
68+
Загружает все сущности заданного типа.
69+
Возвращает объект типа `\Generator` для последующей выборки параметров загруженных сушностей.
70+
Реализует [быстрый метод](https://dev.1c-bitrix.ru/rest_help/rest_sum/start.php) загрузки при
71+
работе с большими объемами данных.
72+
- `$function` - имя метода (функции) запроса;
73+
- `$params` - параметры запроса.
74+
75+
- `batchRequest(array $commands, $halt = true) :array`
76+
Отправляет пакет запросов в API. Возвращает ответ сервера.
77+
- `$commands` - пакет команд;
78+
- `$halt` - определяет прерывать ли последовательность запросов в случае ошибки.
79+
80+
- `buildCommands(string $function, array $items) :array`
81+
Возвращает массив одинаковых команд для метода `batchRequest()`.
82+
- `$function` - имя метода (функции) запроса;
83+
- `$items` - массив полей запросов.
84+
85+
- `buildCommand(string $function, array $params) :string`
86+
Возвращает строку одной команды пакета запросов для метода `buildCommands()`.
87+
- `$function` - имя метода (функции) запроса;
88+
- `$params` - массив параметров команды.
89+
90+
- `getLastResponse() :?array`
91+
Возвращает последний ответ сервера.
92+
93+
<a id="%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"></a>
94+
### Дополнительные параметры
95+
96+
Дополнительные параметры доступны через публичные свойства класса `Bitrix24API`.
97+
98+
Свойство | По умолчанию | Описание
99+
----------------------- | ------------------ | --------
100+
`$batchSize` | 50 | Устанавливает количество команд в одном пакете запросов (batch)
101+
`$logger` | null | Хранит объект класса, выполняющего логирование запросов и ответов API. Например, `\App\DebugLogger`
102+
`$http` | `object \App\HTTP` | Хранит объект класса `\App\HTTP`, отправляющего запросы к API
103+
104+
<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%81%D1%83%D1%89%D0%BD%D0%BE%D1%81%D1%82%D1%8F%D0%BC%D0%B8-%D0%91%D0%B8%D1%82%D1%80%D0%B8%D0%BA%D1%8124"></a>
105+
## Методы работы с сущностями Битрикс24
106+
107+
Работа с сущностями Битрикс24 строится с помощью методов класса `Bitrix24API`.
108+
109+
<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%D0%BE-%D1%81%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0%D0%BC%D0%B8"></a>
110+
### Методы работы со сделками
111+
112+
Список доступных методов:
113+
114+
- `getDeal($dealId, array $with = []) :array`
115+
- `addDeal(array $fields = [], array $params = []) :int`
116+
- `updateDeal($dealId, array $fields = [], array $params = []) :int`
117+
- `deleteDeal($dealId) :int`
118+
- `getDealList(array $filter = [], array $select = [], array $order = []) :\Generator`
119+
- `fetchDealList(array $filter = [], array $select = [], array $order = []) :\Generator`
120+
- `addDeals(array $deals = [], array $params = []) :array`
121+
- `updateDeals(array $deals = [], array $params = []) :array`
122+
- `deleteDeals(array $dealIds = []) :array`
123+
- `setDealFile($dealId, $userFieldId, string $fileName, string $fileContent, bool $isBase64FileData = true) :int`
124+
- `setDealFiles($dealId, $userFieldId, array $files = [], bool $isBase64FileData = true) :int`
125+
- `getDealContactItems($dealId) :array`
126+
- `setDealContactItems($dealId, array $contacts) :array`
127+
- `getDealProductRows($dealId) :array`
128+
- `setDealProductRows($dealId, array $products) :array`
129+
- `getDealProductRowFields() :array`
130+
- `getDealFields() :array`
131+
132+
<a id="%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%B2"></a>
133+
#### Описание методов
134+
135+
- `getDeal($dealId, array $with = []) :array`
136+
Возвращает параметры сделки по ID.
137+
- `$dealId` - ID сделки;
138+
- `$with` - имена связанных сущностей, возвращаемых вместе со сделкой:
139+
- `CONTACTS` - контакты;
140+
- `PRODUCTS` - товарные позиции.
141+
142+
- `addDeal(array $fields = [], array $params = []) :int`
143+
Добавляет новую сделку. Возвращает ID сделки.
144+
- `$fields` - набор полей сделки;
145+
- `$params` - набор параметров сделки.
146+
147+
- `updateDeal($dealId, array $fields = [], array $params = []) :int`
148+
Обновляет существующую сделку. Возвращает ID сделки.
149+
- `$dealId` - ID сделки;
150+
- `$fields` - набор полей сделки;
151+
- `$params` - набор параметров сделки.
152+
153+
- `deleteDeal($dealId) :int`
154+
Удаляет существующую сделку. Возвращает ID сделки.
155+
- `$dealId` - ID сделки.
156+
157+
- `getDealList(array $filter = [], array $select = [], array $order = []) :\Generator`
158+
Загружает все сделки с возможностью фильтрации, сортировки и выборки полей.
159+
Возвращает объект типа `\Generator` для последующей выборки параметров загруженных сделок.
160+
- `$filter` - параметры фильтрации;
161+
- `$order` - параметры сортировки;
162+
- `$select` - параметры выборки полей.
163+
164+
- `fetchDealList(array $filter = [], array $select = [], array $order = []) :\Generator`
165+
Загружает все сделки с возможностью фильтрации, сортировки и выборки полей.
166+
Возвращает объект типа `\Generator` для последующей выборки параметров загруженных сделок.
167+
Реализует [быстрый метод](https://dev.1c-bitrix.ru/rest_help/rest_sum/start.php) загрузки при
168+
работе с большими объемами данных.
169+
- `$filter` - параметры фильтрации;
170+
- `$order` - параметры сортировки;
171+
- `$select` - параметры выборки.
172+
173+
- `addDeals(array $deals = [], array $params = []) :array`
174+
Пакетно добавляет новые сделки со связанными товарными позициями. Возвращает массив ID сделок.
175+
- `$deals` - массив наборов полей сделок со связанными товараными позициями `PRODUCTS`;
176+
- `$params` - набор параметров сделки.
177+
178+
- `updateDeals(array $deals = [], array $params = []) :array`
179+
Пакетно обновляет существующие сделки со связанными товарными позициями. Возвращает массив ID сделок.
180+
- `$deals` - массив наборов полей сделок со связанными товарными позициями `PRODUCTS`;
181+
- `$params` - набор параметров сделки.
182+
183+
- `deleteDeals(array $dealIds = []) :array`
184+
Пакетно удаляет сделки. Возвращает массив ID сделок.
185+
- `$dealIds` - набор ID сделок.
186+
187+
- `setDealFile($dealId, $userFieldId, string $fileName, string $fileContent, bool $isBase64FileData = true) :int`
188+
Устанавливает файл в НЕ множественное пользовательское поле типа файл (файл нельзя удалить).
189+
Возвращает ID сделки.
190+
- `$dealId` - ID cделки;
191+
- `$userFieldId` ID НЕ множественного пользовательского поля в сделке ('UF_CRM_XXXXXXXXXX');
192+
- `$fileName` - имя файла;
193+
- `$fileContent` - RAW данные файла;
194+
- `$isBase64FileData` - RAW данные файла закодированны BASE64.
195+
196+
- `setDealFiles($dealId, $userFieldId, array $files = [], bool $isBase64FileData = true) :int`
197+
Устанавливает файлы во множественное пользовательское поле типа файл (файлы можно удалить).
198+
Возвращает ID сделки.
199+
- `$dealId` - ID cделки;
200+
- `$userFieldId` ID НЕ множественного пользовательского поля в сделке ('UF_CRM_XXXXXXXXXX');
201+
- `$files` - массив параметров файлов ([ [ < Имя файла >, < RAW данные файла > ], ... ]) (пустой массив для удаления всех файлов);
202+
- `$isBase64FileData` - RAW данные файла закодированны BASE64.
203+
204+
- `getDealContactItems($dealId) :array`
205+
Возвращает массив параметров контактов, связанных со сделкой по ID сделки.
206+
- `$dealId` - ID cделки.
207+
208+
- `setDealContactItems($dealId, array $contacts) :array`
209+
Устанавливает контакты, связанные со сделкой по ID сделки. Возвращает ответ сервера.
210+
- `$dealId` - ID cделки;
211+
- `$contacts` - массив параметров контактов.
212+
213+
- `setDealProductRows($dealId, array $products) :array`
214+
Устанавливает товарые позиции, связанные со сделкой по ID сделки. Возвращает ответ сервера.
215+
- `$dealId` - ID cделки;
216+
- `$products` - массив параметров товарных позиций.
217+
218+
- `getDealProductRows($dealId) :array`
219+
Возвращает массив параметров товарных позиций, связанных со сделкой по ID сделки.
220+
- `$dealId` - ID cделки.
221+
222+
- `getDealProductRowFields() :array`
223+
Возвращает описание полей товарных позиций.
224+
225+
- `getDealFields() :array`
226+
Возвращает описание полей cделки, в том числе пользовательских.
227+
228+
<a id="%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA"></a>
229+
### Обработка ошибок
230+
231+
При возникновении ошибок при запросах к API выбрасывается исключение типа `Bitrix24APIException`.
232+
233+
<a id="%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B"></a>
234+
## Примеры
235+
236+
<a id="%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81%D0%BE-%D1%81%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0%D0%BC%D0%B8"></a>
237+
### Работа со сделками
238+
239+
```php
240+
use \App\Bitrix24\Bitrix24API;
241+
242+
try {
243+
244+
$webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/';
245+
$bx24 = new Bitrix24API($webhookURL);
246+
247+
// Добавляем новую сделку
248+
$dealId = $bx24->addDeal([
249+
'TITLE' => 'Новая сделка №1',
250+
'COMPANY_ID' => 6,
251+
'CONTACT_ID' => 312
252+
]);
253+
print_r($dealId);
254+
255+
// Устанавливаем набор связанных контактов
256+
$bx24->setDealContactItems($dealId, [
257+
[ 'CONTACT_ID' => 313 ],
258+
[ 'CONTACT_ID' => 454 ]
259+
]);
260+
261+
// Устанавливаем набор связанных товарных позиций
262+
$bx24->setDealProductRows($dealId, [
263+
[ 'PRODUCT_ID' => 1689, 'PRICE' => 1500.00, 'QUANTITY': 2 ],
264+
[ 'PRODUCT_ID' => 1860, 'PRICE' => 500.00, 'QUANTITY': 15 ]
265+
]);
266+
267+
// Обновляем существующую сделку
268+
$bx24->updateDeal($dealId, [
269+
'TITLE' => 'Новая сделка №12'
270+
]);
271+
272+
// Загружаем сделку по ID вместе со связанными товарами и контактами одним запросом
273+
$deal = $bx24->getDeal($dealId, [ 'PRODUCTS', 'CONTACTS' ]);
274+
print_r($deal);
275+
276+
// Удаляем существующую сделку
277+
$bx24->deleteDeal($dealId);
278+
279+
// Загружаем все сделки используя быстрый метод при работе с большими объемами данных
280+
$generator = $bx24->fetchDealList();
281+
foreach ($generator as $deals) {
282+
foreach($deals as $deal) {
283+
print($deal);
284+
}
285+
}
24286

287+
// Пакетно добавляем сделки вместе с товарными позициями
288+
$ids = $bitrix->addDeals([
289+
[
290+
'TITLE' => 'Новая сделка №1121',
291+
'COMPANY_ID' => 6,
292+
'CONTACT_ID' => 312,
293+
'PRODUCTS' => [
294+
[ "PRODUCT_ID" => 27, "PRICE" => 100.00, "QUANTITY" => 11 ],
295+
]
25296

297+
],
298+
[
299+
'TITLE' => 'Новая сделка №1122',
300+
'COMPANY_ID' => 6,
301+
'PRODUCTS' => [
302+
[ "PRODUCT_ID" => 28, "PRICE" => 200.00, "QUANTITY" => 22 ],
303+
[ "PRODUCT_ID" => 27, "PRICE" => 200.00, "QUANTITY" => 11 ],
304+
]
305+
]
306+
]);
307+
print_r($ids);
26308

309+
} catch (\App\Bitrix24\Bitrix24APIException $e) {
310+
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
311+
}
312+
```
27313

28314
<a id="%D0%90%D0%B2%D1%82%D0%BE%D1%80"></a>
29315
## Автор

src/App/Bitrix24/Bitrix24API.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class Bitrix24API
4646
public $logger;
4747

4848
/**
49-
* Количество запросов в одном пакете запросов (batch)
49+
* Количество команд в одном пакете запросов (batch)
5050
* @var integer
5151
*/
5252
public $batchSize = 50;
@@ -219,7 +219,7 @@ public function fetchList(string $function, array $params = []) :\Generator
219219

220220
/**
221221
* Отправляет пакет запросов в API системы Битрикс24
222-
* @param array $commands Массив команд в пакете запросов
222+
* @param array $commands Пакет команд
223223
* @param bool $halt Определяет прерывать ли последовательность запросов в случае ошибки (0|1, true|false)
224224
* @return array
225225
* @see https://dev.1c-bitrix.ru/rest_help/general/batch.php
@@ -262,7 +262,7 @@ public function buildCommands(string $function, array $items) :array
262262
}
263263

264264
/**
265-
* Формирует строку одной команды
265+
* Формирует строку одной команды для пакета запросов
266266
* @param string $function Имя метода (функции) запроса
267267
* @param array $params Массив параметров команды
268268
* @return string

0 commit comments

Comments
 (0)