PHPackages                             beta/bx.data.provider - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. beta/bx.data.provider

ActiveBitrix-module[Utility &amp; Helpers](/categories/utility)

beta/bx.data.provider
=====================

Data provider for bitrix

1.20.3(11mo ago)22.8k↑46.7%4[2 issues](https://github.com/beta-eto-code/bx.data.provider/issues)[1 PRs](https://github.com/beta-eto-code/bx.data.provider/pulls)3MITPHPPHP &gt;=7.2CI failing

Since Oct 8Pushed 11mo ago2 watchersCompare

[ Source](https://github.com/beta-eto-code/bx.data.provider)[ Packagist](https://packagist.org/packages/beta/bx.data.provider)[ RSS](/packages/beta-bxdataprovider/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (6)Versions (55)Used By (3)

Bitrix data provider
====================

[](#bitrix-data-provider)

Расширение библиотеки beta/data.provider для Bitrix. Данный модуль включает в себя реализацию след. провайдеров:

- IblockDataProvider - провайдер для работы с данными инфоблоков
- SectionIblockDataProvider - провайдер для работы с данными разделов инфоблоков
- HlBlockDataProvider - провайдер для работы с данными hl блоков
- DataManagerDataProvider - провайдер для работы с произвольными менеджерами данных bitrix (наследники класса DataManager)
- BxConnectionDataProvider - провайдер для работы с данными через подключения bitrix, необходимо указать конструктор запросов и имя подключения
- UserDataProvider - провайдер для работы с пользователями bitrix

Пример экспорта данных инфоблока в json файл
--------------------------------------------

[](#пример-экспорта-данных-инфоблока-в-json-файл)

```
use BX\Data\Provider\IblockDataProvider;
use Data\Provider\Providers\JsonDataProvider;
use Data\Provider\DefaultDataMigrator;
use Data\Provider\QueryCriteria;
use Data\Provider\Interfaces\QueryCriteriaInterface;
use Data\Provider\Interfaces\CompareRuleInterface;

$newsProvider = new IblockDataProvider(
    'content',                              // передаем тип инфоблока
    'news'                                  // передаем символьный код инфоблока
);

$newsProvider->setMapperForRead(function (array $data): array {     // задаем маппер данных при запросе данных от провайдера
    return [
        'id' => (int)$data['ID'],
        'name' => $data['NAME'],
        'code' => $data['CODE'],
        'content' => $data['DETAIL_TEXT'],
    ];
});

$targetJsonProvider = new JsonDataProvider(
    $_SERVER['DOCUMENT_ROOT'].'/upload/news.json',  // указываем путь к файлу для сохранения
    'id'                                            // указываем имя первичного ключа
);

$migrator = new DefaultDataMigrator(                // создаем объект для обмена данными
    $newsProvider,                                  // источник данных
    $targetJsonProvider                             // приемник данных
);

$queryNews = new QueryCriteria();
$queryNews->addCriteria('ACTIVE', CompareRuleInterface::EQUAL, 'Y');    // сохранять в json файл будем только активные элементы
$exportResult = $migrator->runUpdate(
    $queryNews,         // передаем фильтр для источника данных
    'ID'                // здесь указываем либо ключ для сопоставления данных с первичным ключом приемника данных или же анонимную функцию вида function(array $dataItem): QueryCriteriaInterface
);

$exportResult->hasErrors();             // есть ли ошибки
$exportResult->getErrors();             // список ошибок
$exportResult->getSourceData();         // данные для экспорта полученные от источника
$exportResult->getUnimportedDataList(); // данные которые не удалось сохранить в json файл
```

BxQueryAdapter - адаптер параметров запроса Bitrix, пример использования
------------------------------------------------------------------------

[](#bxqueryadapter---адаптер-параметров-запроса-bitrix-пример-использования)

```
use BX\Data\Provider\BxQueryAdapter;
use Data\Provider\QueryCriteria;
use Data\Provider\Providers\JsonDataProvider;
use Data\Provider\Interfaces\CompareRuleInterface;

$bxParams = [
    'select' => ['NAME', 'CODE', 'ID'],
    'filter' => [
        '=ACTIVE' => 'Y',
        [
            'LOGIC' => 'OR',
            [
                '=NAME' => 'test',
            ],
            [
                '=NAME' => 'other',
            ],
        ],
    ],
    'limit' => 10,
];

$bxQuery = BxQueryAdapter::initFromArray($bxParams);
$jsonProvider = new JsonDataProvider(
    $_SERVER['DOCUMENT_ROOT'].'/users.json',    // указываем путь к json файлу
    'id'                                        // указываем первичный ключ
);

$jsonProvider->getData($bxQuery->getQuery());   // данные из json файла

$newQuery = new QueryCriteria();
$newQuery->setSelect(['NAME', 'CODE', 'ID']);
$newQuery->setLimit(10);
$compareRule = $newQuery->addCriteria('ACTIVE', CompareRuleInterface::EQUAL, 'Y');
$compareRule->and('NAME', CompareRuleInterface::EQUAL, 'test')
    ->or('NAME', CompareRuleInterface::EQUAL, 'other');

$newBxQuery = BxQueryAdapter::init($newQuery);
$newBxQuery->toArray();     // результат будет аналогичен $bxParams
```

CLI
---

[](#cli)

После установки модуля в корене проекта добавиться исполняемый файл dpcli (в том случае если в проекте не был ранее установлен модуль beta/bx.cli, в этом случае команды будут добавлены к общему исполняемому файлу - bxcli).

Данный интерфейс предоставляет команды для генерации файлов выполняющих задачи импорта, экспорта и генерации данных. Сами файлы представляют из себя шаблоны, то есть код генерируемый в файлах следует редактировать под свои нужды и требования.

Команды для создания задач экспорта:

- ./dpcli dp:hlexport \[код hl блока\] \[путь к файлу для экспорта данных.json|csv|xml\] - экспорт данных указанного hl блока, экспорт поддерживается в json, csv и xml форматах
- ./dpcli dp:iblockexport \[тип инфоблока\] \[код инфоблока\] \[путь к файлу для экспорта данных.json|csv|xml\] - экспорт элементов указанного инфоблока, экспорт поддерживается в json, csv и xml форматах
- ./dpcli dp:sectionexport \[тип инфоблока\] \[код инфоблока\] \[путь к файлу для экспорта данных.json|csv|xml\] - экспорт разделов указанного инфоблока, экспорт поддерживается в json, csv и xml форматах
- ./dpcli dp:tableexport \[имя таблицы\] \[путь к файлу для экспорта данных.json|csv|xml\] - экспорт записей из указанной таблицы, экспорт поддерживается в json, csv и xml форматах
- ./dpcli dp:userexport \[путь к файлу для экспорта данных.json|csv|xml\] - экспорт пользователей bitrix, экспорт поддерживается в json, csv и xml форматах

Команды для создания задач импорта:

- ./dpcli dp:hlimport \[код hl блока\] \[путь к файлу для импорта данных.json|csv|xml\] - импорт данных в указанный hl блок из указанного файла, импорт поддерживается из json, csv и xml форматов
- ./dpcli dp:iblockimport \[тип инфоблока\] \[код инфоблока\] \[путь к файлу для импорта данных.json|csv|xml\] - импорт элементов в указанный инфоблок из указанного файла, импорт поддерживается из json, csv и xml форматов
- ./dpcli dp:sectionimport \[тип инфоблока\] \[код инфоблока\] \[путь к файлу для импорта данных.json|csv|xml\] - импорт разделов в указанный инфоблок из указанного файла, импорт поддерживается из json, csv и xml форматов
- ./dpcli dp:tableimport \[имя таблицы\] \[путь к файлу для импорта данных.json|csv|xml\] - импорт записей в указанную таблицу из указанного файла, импорт поддерживается из json, csv и xml форматов
- ./dpcli dp:userimport \[код hl блока\] \[путь к файлу для импорта данных.json|csv|xml\] - импорт пользователей из указанного файла, импорт поддерживается из json, csv и xml форматов

Команды для создания задач генерации данных (в проекте должна быть установлена dev зависимость fzaninotto/faker):

- ./dpcli dp:hlgen \[код hl блока\] \[количество генерируемых записей\] - генерация данных для указанного hl блока
- ./dpcli dp:iblockgen \[тип инфоблока\] \[код инфоблока\] \[количество генерируемых записей\] - генерация элементов для указанного инфоблока
- ./dpcli dp:sectiongen \[тип инфоблока\] \[код инфоблока\] \[количество генерируемых записей\] - генерация разделов для указанного инфоблока
- ./dpcli dp:tablegen \[имя таблицы\] \[количество генерируемых записей\] - генерация записей для указанной таблицы
- ./dpcli dp:usergen \[количество генерируемых записей\] - генерация пользователей

Все файлы задач сохраняются в директории local/dp/tasks. Для запуска задач можно использовать команду вида:

```
./dpcli dp:run --type=export -c UserGen -v --new
```

Где:

- --type=export - не обязательный параметр, указывает на тип выполняемых задач, может принимать значения: export, import и generate, если параметр не указан будут исполняться все типы задач
- -c UserGen - не обязательный параметр, имя класса выполняемой задачи, данный параметр позволяет выполнить определенную задачу
- -v или --verbose - не обязательный параметр, подробный вывод результата задачи
- --new - не обязательный параметр, если он указан выполянться только новые задачи (которые ранее не выполнялись в текущем окружении)

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance30

Infrequent updates — may be unmaintained

Popularity27

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 83.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~26 days

Recently: every ~100 days

Total

54

Last Release

352d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c75fd54c926c6b835a6b6cd92514d60d55a285d35847b9f22aefcc7ad5ef9ae7?d=identicon)[nnagornyy](/maintainers/nnagornyy)

---

Top Contributors

[![alex19pov31](https://avatars.githubusercontent.com/u/786683?v=4)](https://github.com/alex19pov31 "alex19pov31 (66 commits)")[![Teclor](https://avatars.githubusercontent.com/u/56650175?v=4)](https://github.com/Teclor "Teclor (11 commits)")[![AnastasiyaDefa](https://avatars.githubusercontent.com/u/69621153?v=4)](https://github.com/AnastasiyaDefa "AnastasiyaDefa (1 commits)")[![kys](https://avatars.githubusercontent.com/u/760417?v=4)](https://github.com/kys "kys (1 commits)")

###  Code Quality

Static AnalysisPsalm

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/beta-bxdataprovider/health.svg)

```
[![Health](https://phpackages.com/badges/beta-bxdataprovider/health.svg)](https://phpackages.com/packages/beta-bxdataprovider)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k53](/packages/friendsoftypo3-content-blocks)[phel-lang/phel-lang

Phel is a functional programming language that compiles to PHP

5186.0k18](/packages/phel-lang-phel-lang)[dagger/dagger

Dagger PHP SDK

261.1k](/packages/dagger-dagger)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
