PHPackages                             dakword/odata1c-client - 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. [API Development](/categories/api)
4. /
5. dakword/odata1c-client

ActiveLibrary[API Development](/categories/api)

dakword/odata1c-client
======================

OData 1C Client

0.1.1(1y ago)3431[1 PRs](https://github.com/Dakword/odata1c-client/pulls)PHP

Since Nov 12Pushed 1y ago1 watchersCompare

[ Source](https://github.com/Dakword/odata1c-client)[ Packagist](https://packagist.org/packages/dakword/odata1c-client)[ RSS](/packages/dakword-odata1c-client/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (3)Used By (0)

```
use \Dakword\OData1C\Client\ODataClient;

// клиент
$oData = new ODataClient($baseUri, 'login', 'password');

// дополнительные опциональные настройки клиента
$oData->setProxy('http://123.123.123.123:8080');
$oData->setTimeout(600);

// получить массив объектов метаданных,
// которые _включены_ в стандартный OData
$objects = $oData->getObjects();

// получить описание стандартного интерфейса OData в формате atom-xml
$metadata = $oData->getMetadata();
```

Построение запроса
------------------

[](#построение-запроса)

### query()

[](#query)

```
// запрос к справочнику «Номенклатура»
$oData->query('Справочник_Номенклатура');
$oData->query('Catalog_Номенклатура');

// запрос к табличной части «Контактная информация» справочника «Склады»
$oData->query('Справочник', 'Склады_КонтактнаяИнформация');
$oData->query('Справочник', 'Склады', 'КонтактнаяИнформация');

// запрос к записям регистра сведений «Цены номенклатуры»
$oData->query(['Регистр сведений', 'ЦеныНоменклатуры', 'RecordType']);
```

### $select

[](#select)

```
$oData->query('Справочник_Номенклатура')
    ->select(
        'Ref_Key, Parent_Key',
        'Description',
        'IsFolder'
    );

$oData->query('Справочник_Номенклатура')
    ->select('Ref_Key, Parent_Key, Presentation, IsFolder');

$oData->query('Справочник_Номенклатура')
    ->select(['Ref_Key', 'Parent_Key', 'Description', 'IsFolder']);

$oData->query('Справочник_Номенклатура')
    ->select('Ref_Key, Parent_Key, IsFolder')
    ->select('Description');

$oData->query('Документ_ЗаказКлиента')
    ->select(
        '*',
        ['Товары' => 'Номенклатура_Key, Характеристика_Key, Количество'],
    );
```

### $expand

[](#expand)

```
$oData->query('Документ_ЗаказКлиента')
    ->expand('Организация', 'Контрагент/*');

$oData->query('Справочник_ВидыЦен')
    ->expand('ВалютаЦены')
    ->select(
        'Ref_Key, Description',
        ['ВалютаЦены' => 'Ref_Key, Description, Code'],
    );
```

### $order

[](#order)

```
$oData->query('Справочник_Номенклатура')
    ->orderBy('IsFolder', 'Description');

$oData->query('Документ_ЗаказКлиента')
    ->orderBy('Контрагент/ИНН')
    ->orderByDesc('Date');

$oData->query('Справочник_Номенклатура')
    ->orderBy([
        ['Description', 'desc'],
        'IsFolder',
    ]);
```

### $skip, $top

[](#skip-top)

```
// вернуть первые 50 результатов
$oData->query('Справочник_Номенклатура')->top(50);

// исключить из результатов первые 10 записей
$oData->query('Справочник_Номенклатура')->skip(10);

// исключить из результатов первые 20 записей и вернуть 50 записей
$oData->query('Справочник_Номенклатура')->skip(20)->top(50);

// вернуть 3-ю сотню результатов
$oData->query('Справочник_Номенклатура')->page(3);

// вернуть 3-ю тысячу результатов
$oData->query('Справочник_Номенклатура')->page(3, 1000);
```

### count(), $inlinecount

[](#count-inlinecount)

```
// количество записей в справочнике «Номенклатура»
$count = $oData->query('Справочник_Номенклатура')->count();

// количество записей в справочнике «Номенклатура» удовлетворяющих отбору
$count = $oData->query('Справочник_Номенклатура')->...filter...->count();

// получить 2-ю страницу результатов и добавить к ним общее количество результатов
$oData->query('Справочник_Номенклатура')->...filter...->page(2)->addCount();
```

### call()

[](#call)

```
// выполнение функций

// "InformationRegister_КурсыВалют/SliceFirst()",
$oData->query('Регистр сведений', 'КурсыВалют')
    ->call('SliceFirst');

// "InformationRegister_КурсыВалют/SliceFirst(Period=datetime'2024-09-01T00:00:00')",
$oData->query('Регистр сведений', 'КурсыВалют')
    ->call('SliceFirst', [
        'Period' => "datetime'2024-09-01T00:00:00'",
    ]);
```

### $filter

[](#filter)

```
// where()
$oData->query('Документ_ЗаказКлиента')
    ->where('IsFolder', '=', true)
    ->where('IsFolder', true)
    ->where('ХозяйственнаяОперация', '', 'РеализацияКлиенту')
    ->where('СуммаДокумента', '=', 2000);

// группировка условий
// Document_ЗаказКлиента?$filter=(ФормаОплаты eq 'ПлатежнаяКарта' or ФормаОплаты eq 'Безналичная') and СуммаДокумента gt 2000
$oData->query('Документ_ЗаказКлиента')
    ->where(fn($query) => $query
        ->where('ФормаОплаты', 'ПлатежнаяКарта')
        ->orWhere('ФормаОплаты', 'Безналичная')
    )
    ->where('СуммаДокумента', '>', 2000);
```

Выполнение запроса
------------------

[](#выполнение-запроса)

### получение набора сущностей

[](#получение-набора-сущностей)

```
// get()
$items = $oData->query('Справочник_Номенклатура')
    ->select('Ref_Key', 'Parent_Key', 'Description', 'IsFolder');
    ->orderBy(['IsFolder', 'desc'], 'Description');
    ->get();
if ($items->isOK()) {
    echo $items->count();
    foreach ($items as $item) {
        echo $item->Ref_Key . "\t" . $item->Description . "\n";
    }
    $folders = array_filter($items->values(), fn($item) => $item->IsFolder);
} else {
    echo $items->getOdataErrorCode() . ': ' . $items->getOdataErrorMessage();
}

// getValues()
try {
    $orders = $oData->query('Документ_ЗаказКлиента')
        ->where('Статус', 'Закрыт')
        ->getValues();
} catch (\Dakword\OData1C\Client\Exception\ODataClientException) {
    //
}
```

### получение одной сущности

[](#получение-одной-сущности)

```
$item = $oData->query('Документ_ЗаказКлиента')->get('cbcf493e-55bc-11d9-848a-00112f43529a');

echo $item->Статус;

// описание набора ключевых значений для получения сущности
// "InformationRegister_ДополнительныеСведения(Объект=fad620c2-c719-11e4-8ec3-bcaec56cc144, Объект_Type=StandardODATA.Catalog_Товары, Свойство_Key=guid'bd72d926-55bc-11d9-848a-00112f43529a')"
$item = $oData->query('Регистр сведений_ДополнительныеСведения')
    ->get([
        'Объект' => 'fad620c2-c719-11e4-8ec3-bcaec56cc144',
        'Объект_Type' => 'StandardODATA.Catalog_Товары',
        'Свойство_Key' => "guid'bd72d926-55bc-11d9-848a-00112f43529a'",
    ]);

// "InformationRegister_КурсыВалют(Period=datetime'2024-12-05T00:00:00',Валюта_Key=guid'9d5c4222-8c4c-11db-a9b0-00055d49b45e')"
$item = $oData->query('Регистр сведений_КурсыВалют')
    ->get([
        'Period' => "datetime'2028-12-05T00:00:00'",
        'Валюта_Key' => "guid'9d5c4222-8c4c-11db-a9b0-00055d49b45e'",
    ]);

// getFirst()
$file = $oData->query('Регистр сведений', 'ДвоичныеДанныеФайлов')
    ->whereEq('Файл', Func::cast(Func::guid($fileRefKey), $ownerType))
->getFirst();
$file = $file ? base64_decode($file->ДвоичныеДанныеФайла_Base64Data) : false;
```

---

### create(), update(), delete(), markDelete()

[](#create-update-delete-markdelete)

```
// создание объекта
$item = $oData->query('Справочник_Номенклатура')
    ->create([
        'IsFolder' => true,
        'Parent_Key' => 'baf54db6-7029-11e6-accf-0050568b35ac',
        'Description' => 'Макаронные изделия',
    ]);

// обновление объекта
$oData->query('Документ_ЗаказКлиента')
    ->update('bd72d924-55bc-11d9-848a-00112f43529a', [
        'Согласован' => true,
        'ДатаСогласования' => '2024-12-10T00:00:00',
        'ДатаОтгрузки' => '2024-12-24T00:00:00',
    ]);

// непосредственное удаление
$oData->query('Документ_ЗаказКлиента')
    ->delete('bd72d924-55bc-11d9-848a-00112f43529a');

// пометить на удаление
$oData->query('Документ_ЗаказКлиента')
    ->markDelete('bd72d924-55bc-11d9-848a-00112f43529a', true);
$oData->query('Документ_ЗаказКлиента')
    ->markDelete('bd72d924-55bc-11d9-848a-00112f43529a');

// снять пометку на удаление
$oData->query('Документ_ЗаказКлиента')
    ->markDelete('bd72d924-55bc-11d9-848a-00112f43529a', false);
$oData->query('Документ_ЗаказКлиента')
    ->unmarkDelete('bd72d924-55bc-11d9-848a-00112f43529a');
```

### post(), unPost()

[](#post-unpost)

```
// неоперативное проведение
$oData->query('Документ_ЗаказКлиента')
    ->post('bd72d924-55bc-11d9-848a-00112f43529a');

// оперативное проведение
$oData->query('Документ_ЗаказКлиента')
    ->post('bd72d924-55bc-11d9-848a-00112f43529a', true);

// отмена проведения
$oData->query('Документ_ЗаказКлиента')
    ->unPost('bd72d924-55bc-11d9-848a-00112f43529a');
```

Функции
-------

[](#функции)

```
use \Dakword\OData1C\Client\Func;

$item = $oData->query('Регистр сведений_КурсыВалют')
    ->get([
        // 'Period' => "datetime'2028-12-05T00:00:00'",
        'Period' => Func::datetime(new \DateTime('2028-12-05')),
        // 'Валюта_Key' => "guid'9d5c4222-8c4c-11db-a9b0-00055d49b45e'",
        'Валюта_Key' => Func::guid('9d5c4222-8c4c-11db-a9b0-00055d49b45e'),
    ]);

$oData
    ->where(Func::subString('ИНН', 1, 2), '77')
    ->where(fn($query) => $query
        ->where(Func::startsWith('Производитель', 'ООО'), true)
        ->orWhere(Func::endsWith('Производитель', 'ООО'), true)
    )
    ->where('Объект', Func::cast(Func::guid($ownerRefKey), 'Document_ЗаказКлиента'))

    // ->whereGUID('Parent_Key', '00000000-0000-0000-0000-000000000000')
    ->whereGUID('Parent_Key', Func::guid())
    ->whereGUID('Parent_Key', Func::EMPTYGUID);
```

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance42

Moderate activity, may be stable

Popularity12

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity30

Early-stage or recently created project

 Bus Factor1

Top contributor holds 75% 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 ~69 days

Total

2

Last Release

473d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2d7767ebb9d34cc72a528e81d16838c85acc71476cf4c51ae981c6e013454d83?d=identicon)[Dakword](/maintainers/Dakword)

---

Top Contributors

[![Dakword](https://avatars.githubusercontent.com/u/9961503?v=4)](https://github.com/Dakword "Dakword (3 commits)")[![DmitrYs-1](https://avatars.githubusercontent.com/u/21289849?v=4)](https://github.com/DmitrYs-1 "DmitrYs-1 (1 commits)")

---

Tags

1cclientodataphp

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/dakword-odata1c-client/health.svg)

```
[![Health](https://phpackages.com/badges/dakword-odata1c-client/health.svg)](https://phpackages.com/packages/dakword-odata1c-client)
```

###  Alternatives

[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3731.2M42](/packages/tencentcloud-tencentcloud-sdk-php)[convertkit/convertkitapi

Kit PHP SDK for the Kit API

2167.1k1](/packages/convertkit-convertkitapi)[mapado/rest-client-sdk

Rest Client SDK for hydra API

1125.9k2](/packages/mapado-rest-client-sdk)

PHPackages © 2026

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