Skip to content

Commit 462b49c

Browse files
author
andrey-tech
committed
Update README.md, traits Catalog and User
1 parent 3bf4837 commit 462b49c

3 files changed

Lines changed: 218 additions & 16 deletions

File tree

README.md

Lines changed: 191 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@
1717
- [Дополнительные параметры](#%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)
1818
- [Методы работы с сущностями Битрикс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)
1919
- [Методы работы со сделками](#%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%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)
20+
- [Методы для работы с каталогами](#%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)
21+
- [Методы для работы с пользователями](#%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)
22+
- [Методы работы с задачами](#%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)
23+
- [Методы для работы с делами](#%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)
24+
- [Методы для работы с диском](#%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)
2125
- [Вспомогательные классы](#%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)
2226
- [Класс `\App\HTTP`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-apphttp)
2327
- [Класс `\App\DebugLogger`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appdebuglogger)
@@ -42,13 +46,13 @@
4246
- Контакты
4347
- Компании
4448
- [Сделки](#%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)
45-
- Каталог
49+
- [Каталог](#%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)
4650
- Товары
4751
- Разделы товаров
48-
- Задачи
52+
- [Задачи](#%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)
4953
- [Дела](#%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)
50-
- Пользователи
51-
- Диск
54+
- [Пользователи](#%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)
55+
- [Диск](#%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)
5256

5357
<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>
5458
### Базовые методы класса
@@ -224,13 +228,138 @@ try {
224228
// Пакетно удаляем сделки
225229
$bx24->deleteDeals($dealIds);
226230

227-
} catch (\App\Bitrix24\Bitrix24APIException $e) {
231+
} catch (\App\Bitrix24\Bitrix24APIException | \App\AppException $e) {
232+
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
233+
}
234+
```
235+
<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%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B0%D0%BC%D0%B8"></a>
236+
### Методы для работы с каталогами
237+
238+
Методы для работы с товарными каталогами находятся в трейте `\App\Bitrix24\Catalog`.
239+
240+
- `getCatalogList(array $filter = [], array $select = [], array $order = []) :\Generator`
241+
Загружает все каталоги с возможностью фильтрации, сортировки и выборки полей.
242+
+ `$filter` - параметры фильтрации;
243+
+ `$order` - параметры сортировки;
244+
+ `$select` - параметры выборки полей.
245+
- `fetchCatalogList(array $filter = [], array $select = [], array $order = []) :\Generator`
246+
Загружает все каталоги с возможностью фильтрации, сортировки и выборки полей.
247+
Реализует [быстрый метод](https://dev.1c-bitrix.ru/rest_help/rest_sum/start.php) загрузки при работе с большими объемами данных.
248+
+ `$filter` - параметры фильтрации;
249+
+ `$order` - параметры сортировки;
250+
+ `$select` - параметры выборки полей.
251+
252+
```php
253+
use \App\Bitrix24\Bitrix24API;
254+
255+
try {
256+
257+
$webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/';
258+
$bx24 = new Bitrix24API($webhookURL);
259+
260+
// Загружаем все товарные каталоги используя быстрый метод при работе с большими объемами данных
261+
$generator = $bx24->fetchCatalogList();
262+
foreach ($generator as $catalogs) {
263+
foreach($catalogs as $catalog) {
264+
print_r($catalog);
265+
}
266+
}
267+
268+
} catch (\App\Bitrix24\Bitrix24APIException | \App\AppException $e) {
269+
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
270+
}
271+
```
272+
273+
<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>
274+
### Методы для работы с пользователями
275+
276+
Методы для работы с пользователями находятся в трейте `\App\Bitrix24\User`.
277+
278+
- `getUser($userId) ?:array` Возвращает параметры пользователя по ID.
279+
+ `$userId` - ID пользователя.
280+
- `getUsers(array $filter = [], string $order = 'ASC', string $sort = '', bool $adminMode = false) :\Generator`
281+
Загружает всех пользователей с возможностью фильтрации, сортировки и выборки полей.
282+
+ `$filter` - параметры фильтрации;
283+
+ `$order` - направление сортировки (ASC|DESC);
284+
+ `$sort` - поле, по которому сортируются результаты;
285+
+ `$select` - параметры выборки полей;
286+
+ `$adminMode` - включает режим администратора для получения данных о любых пользователях.
287+
- `getUserFields() :array` Возвращает описание полей пользователя.
288+
289+
```php
290+
use \App\Bitrix24\Bitrix24API;
291+
292+
try {
293+
294+
$webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/';
295+
$bx24 = new Bitrix24API($webhookURL);
296+
297+
// Получаем параметры пользователя по ID
298+
$user = $bx24->getUser(34782);
299+
print_r($user);
300+
301+
// Получаем всех пользователей типа сотрудник с сортировкой по имени
302+
$generator = $bx24->getUsers(
303+
[ 'USER_TYPE' => 'employee' ],
304+
$order = 'ASC',
305+
$sort = 'NAME'
306+
);
307+
foreach ($generator as $users) {
308+
foreach($users as $user) {
309+
print_r($user);
310+
}
311+
}
312+
313+
} catch (\App\Bitrix24\Bitrix24APIException | \App\AppException $e) {
314+
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
315+
}
316+
```
317+
318+
<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%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B0%D0%BC%D0%B8"></a>
319+
### Методы работы с задачами
320+
321+
Методы для работы с задачами находятся в трейте `\App\Bitrix24\Task`.
322+
323+
- `getTask($taskId, array $select = []) :?array` Возращает параметры задачи по ID.
324+
+ `$taskId` - ID задачи;
325+
+ `$select` - параметры выборки полей.
326+
- `addTask(array $fields = []) :int` Добавляет новую задачу.
327+
+ `$fields` - набор полей задачи.
328+
- `addTasks(array $tasks = []) :array` Пакетно добавляет задачи.
329+
+ `$tasks` - массив наборов полей задачи.
330+
- `getTaskFields() :array` Возвращает описание полей задачи.
331+
332+
```php
333+
use \App\Bitrix24\Bitrix24API;
334+
335+
try {
336+
337+
$webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/';
338+
$bx24 = new Bitrix24API($webhookURL);
339+
340+
// Получаем задачу по ID
341+
$task = $bx24->getTask(4325);
342+
print_r($task);
343+
344+
// Создаем новую задачу
345+
$taskId = $bx24->addTask([
346+
'TITLE' => 'Новая задача №123', // Название задачи
347+
'DESCRIPTION' => 'Описание задачи', // Описание задачи
348+
'RESPONSIBLE_ID' => 43242, // ID ответственного пользователя
349+
'UF_CRM_TASK' => [ 'D_' . 38492 ], // Привязка задачи к сделке
350+
'START_DATE_PLAN' => '09.08.2005', // Плановая дата начала.
351+
'END_DATE_PLAN' => '09.09.2005', // Плановая дата завершения
352+
'DEADLINE' => '2005-09-09T18:31:42+03:30' // Крайний срок
353+
]);
354+
print_r($taskId);
355+
356+
} catch (\App\Bitrix24\Bitrix24APIException | \App\AppException $e) {
228357
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
229358
}
230359
```
231360

232361
<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%B4%D0%B5%D0%BB%D0%B0%D0%BC%D0%B8"></a>
233-
# Методы для работы с делами
362+
### Методы для работы с делами
234363

235364
Методы для работы с делами (активностями) находятся в трейте `\App\Bitrix24\Activity`.
236365

@@ -280,7 +409,61 @@ try {
280409
$activity = $bx24->getActivity($activityId);
281410
print_r($activity);
282411

283-
} catch (\App\Bitrix24\Bitrix24APIException $e) {
412+
} catch (\App\Bitrix24\Bitrix24APIException | \App\AppException $e) {
413+
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
414+
}
415+
```
416+
417+
<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%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%BC"></a>
418+
### Методы для работы с диском
419+
420+
Методы для работы с Диском находятся в трейте `\App\Bitrix24\Disk`.
421+
422+
- `getDiskStorageList(array $filter = []) :\Generator`
423+
Загружает список доступных хранилищ c возможностью фильтрации.
424+
+ `$filter` - параметры фильтрации.
425+
- `getDiskStorageChildren($storageId, array $filter = []) :array`
426+
Возвращает список файлов и папок, которые находятся непосредственно в корне хранилища c возможностью фильтрации.
427+
+ `$storageId` - ID хранилища.
428+
+ `$filter` - параметры фильтрации.
429+
- `uploadfileDiskFolder($folderId, string $fileContent, array $data, bool $isBase64FileData = true) :array`
430+
Загружает новый файл в указанную папку на Диск.
431+
+ `$folderId` - ID папки;
432+
+ `$fileContent` - RAW данные файла;
433+
+ `$data` - набор параметров, описывающих файл (обязательное поле NAME - имя нового файла);
434+
+ `$isBase64FileData` - RAW данные файла закодированны BASE64.
435+
436+
```php
437+
use \App\Bitrix24\Bitrix24API;
438+
439+
try {
440+
441+
$webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/';
442+
$bx24 = new Bitrix24API($webhookURL);
443+
444+
// Загружаем список доступных хранилищ
445+
$generator = $bitrix->getDiskStorageList();
446+
foreach ($generator as $storages) {
447+
foreach ($storages as $storage) {
448+
print_r($storage);
449+
}
450+
}
451+
452+
// Загружаем список файлов и папок, которые находятся непосредственно в корне хранилища
453+
$files = $bitrix->getDiskStorageChildren($storageId = 2);
454+
foreach ($files as $file) {
455+
print_r($file);
456+
}
457+
458+
// Загружаем файл в указанную папку на Диск
459+
$bx24->uploadfileDiskFolder(
460+
$filderId = 4709,
461+
$rawFile = file_get_contents('./schet.pdf'),
462+
[ 'NAME' => 'schet.pdf' ],
463+
$isBase64FileData = false
464+
);
465+
466+
} catch (\App\Bitrix24\Bitrix24APIException | \App\AppException $e) {
284467
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
285468
}
286469
```
@@ -371,8 +554,6 @@ $bx24->logger->isActive = true;
371554

372555
```
373556

374-
375-
376557
<a id="%D0%90%D0%B2%D1%82%D0%BE%D1%80"></a>
377558
## Автор
378559

src/App/Bitrix24/Catalog.php

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
* @see https://github.com/andrey-tech/bitrix24-api-php
99
* @license MIT
1010
*
11-
* @version 1.0.0
11+
* @version 1.1.0
1212
*
1313
* v1.0.0 (15.10.2019) Начальная версия
14+
* v1.1.0 (11.06.2020) Добавлен метод fetchCatalogList()
1415
*
1516
*/
1617
declare(strict_types = 1);
@@ -37,4 +38,24 @@ public function getCatalogList(array $filter = [], array $select = [], array $or
3738

3839
return $this->getList('crm.catalog.list', $params);
3940
}
41+
42+
/**
43+
* Возвращает все товарные каталоги используя быстрый метод
44+
* @see https://dev.1c-bitrix.ru/rest_help/rest_sum/start.php
45+
* @param array $filter Параметры фильтрации
46+
* @param array $order Параметры сортировки
47+
* @param array $select Параметры выборки
48+
* @return object \Generator
49+
* @see https://dev.1c-bitrix.ru/rest_help/crm/catalog/crm_catalog_list.php
50+
*/
51+
public function fetchCatalogList(array $filter = [], array $select = [], array $order = []) :\Generator
52+
{
53+
$params = [
54+
'order' => $order,
55+
'filter' => $filter,
56+
'select' => $select
57+
];
58+
59+
return $this->fetchList('crm.catalog.list', $params);
60+
}
4061
}

src/App/Bitrix24/User.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88
* @see https://github.com/andrey-tech/bitrix24-api-php
99
* @license MIT
1010
*
11-
* @version 1.1.0
11+
* @version 1.2.0
1212
*
1313
* v1.0.0 (25.10.2019) Начальная версия
1414
* v1.0.1 (11.11.2019) Добавлены параметры к методам getUsers()
1515
* v1.1.0 (15.11.2019) Добавлен метод getUserFields()
16+
* v1.2.0 (11.06.2020) Исправлен метод getUsers()
1617
*
1718
*/
1819
declare(strict_types = 1);
@@ -49,14 +50,14 @@ public function getUser($userId)
4950
* @param string $order Направление сортировки
5051
* @param string $sort Поле, по которому сортируются результаты
5152
* @param bool $adminMode Ключ работы в режиме администратора
52-
* @return array
53+
* @return \Generator
5354
*/
5455
public function getUsers(
5556
array $filter = [],
5657
string $order = 'ASC',
5758
string $sort = '',
5859
bool $adminMode = false
59-
) :array {
60+
) :\Generator {
6061

6162
$params = [
6263
'FILTER' => $filter,
@@ -65,7 +66,6 @@ public function getUsers(
6566
'ADMIN_MODE' => $adminMode
6667
];
6768

68-
$result = $this->request('user.get', $params);
69-
return $result;
69+
return $this->getList('user.get', $params);
7070
}
7171
}

0 commit comments

Comments
 (0)