Skip to content

Commit 4f4288f

Browse files
author
andrey-tech
committed
Update README.md, fix trait Contact
1 parent 97a4a74 commit 4f4288f

File tree

2 files changed

+185
-11
lines changed

2 files changed

+185
-11
lines changed

README.md

Lines changed: 180 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
Обертка на PHP7+ для работы с [REST API Битрикс24](https://dev.1c-bitrix.ru/rest_help/) с использованием механизма [входящих вебхуков](https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=99&LESSON_ID=8581),
66
троттлингом запросов к API и логированием в файл.
77

8-
**Документация находится в процессе разработки.**
9-
108
# Содержание
119

1210
<!-- MarkdownTOC levels="1,2,3,4,5,6" autoanchor="true" autolink="true" -->
@@ -45,7 +43,7 @@
4543

4644
Для работы с REST API Битрикс24 используется класс `\App\Bitrix24\Bitrix24API`.
4745
При возникновении ошибок выбрасывается исключение с объектом класса `\App\Bitrix24\Bitrix24APIException`.
48-
В настоящее время класс содержит методы для работы со следующими сущностями Битрикс24:
46+
В настоящее в классе реализованы методы для работы со следующими сущностями Битрикс24:
4947

5048
- [Сделки](#%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)
5149
- [Контакты](#%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%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%B0%D0%BC%D0%B8)
@@ -130,8 +128,8 @@
130128
+ `$dealId` - ID сделки;
131129
+ `$dealIds` - массив ID сделок;
132130
+ `$with` - имена связанных сущностей, возвращаемых вместе со сделкой;
133-
* `CONTACTS` - контакты;
134-
* `PRODUCTS` - товарные позиции;
131+
* `CONTACTS` - контакты (возвращаются в виде массива в одноименном поле);
132+
* `PRODUCTS` - товарные позиции (возвращаются в виде массива в одноименном поле);
135133
- `$fields` - набор полей сделки;
136134
- `$params` - набор параметров сделки;
137135
- `$filter` - параметры фильтрации;
@@ -211,10 +209,10 @@ try {
211209
]
212210
]
213211
]);
214-
print_r($ids);
212+
print_r($dealIds);
215213

216214
// Пакетно удаляем сделки
217-
$bx24->deleteDeals($dealIds);
215+
$bx24->deleteDeals($dealIds);
218216

219217
} catch (\App\Bitrix24\Bitrix24APIException | \App\AppException $e) {
220218
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
@@ -226,13 +224,188 @@ try {
226224

227225
Методы для работы с контактами находятся в трейте `\App\Bitrix24\Contact`:
228226

227+
- `getContact($contactId, array $with = []) :array` Возвращает контакт по его ID.
228+
- `addContact(array $fields = [], array $params = []) :int` Добавляет контакт и возвращает его ID.
229+
- `updateContact($contactId, array $fields = [], array $params = []) :int` Обновляет контакт и возвращает его ID.
230+
- `deleteContact($contactId) :int` Удаляет контакт и возвращает его ID.
231+
- `getContactList(array $filter = [], array $select = [], array $order = []) :\Generator`
232+
Загружает все контакты с возможностью фильтрации, сортировки и выборки полей.
233+
- `fetchContactList(array $filter = [], array $select = [], array $order = []) :\Generator`
234+
Загружает все контакты с возможностью фильтрации, сортировки и выборки полей.
235+
Реализует [быстрый метод](https://dev.1c-bitrix.ru/rest_help/rest_sum/start.php) загрузки при работе с большими объемами данных.
236+
- `addContacts(array $contacts = [], array $params = []) :array` Пакетно добавляет контакты.
237+
- `updateContacts(array $contacts = [], array $params = []) :array` Пакетно обновляет контакты.
238+
- `deleteContacts(array $contactIds = []) :array` Пакетно удаляет контакты.
239+
- `getContactCompanyItems($contactId) :array` Возвращает компании, связанные с контактом по ID.
240+
- `setContactCompanyItems($contactId, array $companies) :array` Устанавливает компании, связанные с контактом по ID.
241+
- `getContactFields() :array` Возвращает описание полей контакта.
242+
243+
Параметры методов:
244+
245+
+ `$contaxctId` - ID контакта;
246+
+ `$contactIds` - массив ID сделок;
247+
+ `$with` - имена связанных сущностей, возвращаемых вместе с контактом:
248+
* `COMPANIES` - компании (возвращаются в виде массива в одноименном поле);
249+
- `$fields` - набор полей сделки;
250+
- `$params` - набор параметров сделки;
251+
- `$filter` - параметры фильтрации;
252+
- `$order` - параметры сортировки;
253+
- `$select` - параметры выборки полей;
254+
- `$contacts` - массив параметров контактов;
255+
- `$companies` - массив параметров компаний.
256+
257+
```php
258+
use \App\Bitrix24\Bitrix24API;
259+
260+
try {
261+
262+
$webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/';
263+
$bx24 = new Bitrix24API($webhookURL);
264+
265+
// Добавляем новый контакт
266+
$contactId = $bx24->addContact([
267+
'NAME' => 'Иван',
268+
'COMPANY_ID' => 332,
269+
'SECOND_NAME' => 'Васильевич',
270+
'LAST_NAME' => 'Петров'
271+
]);
272+
print_r($contactId);
273+
274+
// Устанавливаем набор связанных компаний
275+
$bx24->setContactCompanyItems($contactId, [
276+
[ 'COMPANY_ID' => 8483 ],
277+
[ 'CONPANY_ID' => 4094 ]
278+
]);
279+
280+
// Обновляем существующий контакт
281+
$bx24->updateContact($contactId, [
282+
'NAME' => 'Фёдор'
283+
]);
284+
285+
// Загружаем контакт по ID вместе со связанными компаниями
286+
$contact = $bx24->getContact($contactId, [ 'COMPANIES' ]);
287+
print_r($contact);
288+
289+
// Удаляем существующий контакт
290+
$bx24->deleteContact($contactId);
291+
292+
// Загружаем все контакты используя быстрый метод при работе с большими объемами данных
293+
$generator = $bx24->fetchContactList();
294+
foreach ($generator as $contacts) {
295+
foreach($contacts as $contact) {
296+
print_r($contact);
297+
}
298+
}
299+
300+
// Пакетно добавляем контакты
301+
$contactIds = $bx24->addContacts([
302+
[
303+
'NAME' => 'Владимир',
304+
'COMPANY_ID' => 3322,
305+
'SECOND_NAME' => 'Вадимович',
306+
'LAST_NAME' => 'Владимиров'
307+
],
308+
[
309+
'NAME' => 'Андрей',
310+
'COMPANY_ID' => 1332,
311+
'SECOND_NAME' => 'Васильевич',
312+
'LAST_NAME' => 'Иванов'
313+
]
314+
]);
315+
print_r($contactIds);
316+
317+
// Пакетно удаляем контакты
318+
$bx24->deleteContacts($contactIds);
319+
320+
} catch (\App\Bitrix24\Bitrix24APIException | \App\AppException $e) {
321+
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
322+
}
323+
```
229324

230325
<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%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D1%8F%D0%BC%D0%B8"></a>
231326
### Методы для работы с компаниями
232327

233328
Методы для работы с компаниями находятся в трейте `\App\Bitrix24\Company`:
234329

330+
- `getCompany($companyId, array $with = [])` Возвращает компанию по ID.
331+
- `addCompany(array $fields = [], array $params = []) :int` Добавляет компанию и возвращает ее ID.
332+
- `updateCompany($companyId, array $fields = [], array $params = []) :int` Обновляет компанию и возвращает ее ID.
333+
- `deleteCompany($companyId) :int` Удаляет компанию и возвращает ее ID.
334+
- `getCompanyList(array $filter = [], array $select = [], array $order = []) :\Generator`
335+
Загружает все компании с возможностью фильтрации, сортировки и выборки полей.
336+
- `fetchCompanyList(array $filter = [], array $select = [], array $order = []) :\Generator`
337+
Загружает все компании с возможностью фильтрации, сортировки и выборки полей.
338+
Реализует [быстрый метод](https://dev.1c-bitrix.ru/rest_help/rest_sum/start.php) загрузки при работе с большими объемами данных.
339+
- `addCompanies(array $companies = [], array $params = []) :array` Пакетно добавляет компании.
340+
- `updateCompanies(array $companies = [], array $params = []) :array` Пакетно обновляет компании.
341+
- `deleteCompanies(array $companyIds = []) :array` Пакетно удаляет компании.
342+
- `getCompanyContactItems($companyId) :array` Возвращает контакты, связанные с компанией.
343+
- `setCompanyContactItems($companyId, array $contacts) :array` Устанавливает контакты, связанные с компанией.
344+
345+
Параметры методов:
346+
347+
- `$companyId` - ID компании;
348+
- `$companyIds` - массив ID компаний;
349+
+ `$filter` - параметры фильтрации;
350+
+ `$order` - параметры сортировки;
351+
+ `$select` - параметры выборки полей;
352+
- `$contacts` - массив параметров контактов;
353+
- `$companies` - массив параметров компаний.
354+
355+
```php
356+
use \App\Bitrix24\Bitrix24API;
357+
358+
try {
359+
360+
$webhookURL = 'https://www.example.com/rest/1/u7ngxagzrhpuj31a/';
361+
$bx24 = new Bitrix24API($webhookURL);
362+
363+
// Добавляем новую компанию
364+
$companyId = $bx24->addCompany([
365+
'TITLE' => 'OOO Рога и Копыта'
366+
]);
367+
print_r($companyId);
368+
369+
// Устанавливаем набор связанных контактов
370+
$bx24->setCompanyContactItems($companyId, [
371+
[ 'CONTACT_ID' => 4838 ],
372+
[ 'CONTACT_ID' => 8583 ]
373+
]);
374+
375+
// Обновляем существующую компанию
376+
$bx24->updateCompany($companyId, [
377+
'TITLE' => 'ИП Рога и Копыта'
378+
]);
379+
380+
// Загружаем компанию по ID вместе со связанными контактами
381+
$company = $bx24->getCompany($companyId, [ 'CONTACTS' ]);
382+
print_r($company);
235383

384+
// Удаляем существующую компанию
385+
$bx24->deleteCompany($companyId);
386+
387+
// Загружаем все компании используя быстрый метод при работе с большими объемами данных
388+
$generator = $bx24->fetchCompanyList();
389+
foreach ($generator as $companies) {
390+
foreach($companies as $company) {
391+
print_r($company);
392+
}
393+
}
394+
395+
// Пакетно добавляем компании
396+
$companyIds = $bx24->addCompanies([
397+
[ 'TITLE' => 'ПАО Абракадабра' ],
398+
[ 'TITLE' => 'ЗАО Моя компания' ]
399+
]);
400+
print_r($companyIds);
401+
402+
// Пакетно удаляем компании
403+
$bx24->deleteCompanies($companyIds);
404+
405+
} catch (\App\Bitrix24\Bitrix24APIException | \App\AppException $e) {
406+
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
407+
}
408+
```
236409

237410
<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>
238411
### Методы для работы с каталогами

src/App/Bitrix24/Contact.php

Lines changed: 5 additions & 4 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.1
1212
*
1313
* v1.0.0 (14.10.2019) Начальная версия
1414
* v1.1.0 (15.11.2019) Добавлен метод getContactFields()
1515
* v1.2.0 (09.06.2020) Изменен метод getContact(), добавлен метод fetchContactList()
16+
* v1.2.1 (11.06.2020) Исправлен метод deleteContacts()
1617
*
1718
*/
1819
declare(strict_types = 1);
@@ -36,7 +37,7 @@ public function getContactFields()
3637
* @param array $with Список связанных сущностей, возвращаемых вместе с контактом [ 'COMPANIES' ]
3738
* @return array
3839
*/
39-
public function getContact($contactId, $with = [])
40+
public function getContact($contactId, array $with = [])
4041
{
4142
$with = array_map('strtoupper', $with);
4243

@@ -281,12 +282,12 @@ public function updateContacts(array $contacts = [], array $params = []) :array
281282
* @param array $contactIds Массив Id контактов
282283
* @return array Массив Id контактов
283284
*/
284-
public function deleteContacts(array $contacts = [], array $params = []) :array
285+
public function deleteContacts(array $contactIds = []) :array
285286
{
286287
// Id удаленных контактов
287288
$contactResults = [];
288289

289-
while ($contactsChunk = array_splice($contacts, 0, $this->batchSize)) {
290+
while ($contactsChunk = array_splice($contactIds, 0, $this->batchSize)) {
290291
$commandParams = [];
291292
foreach ($contactsChunk as $index => $contactId) {
292293
$commandParams[ $index ] = [ 'id' => $contactId ];

0 commit comments

Comments
 (0)