odata-1c
OData ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄Π»Ρ 1C, (*1)
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ 1Π‘ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° OData: https://its.1c.ru/db/v838doc#bookmark:dev:TI000001358, (*2)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΡΠ΅Π·
Composer:, (*3)
$ composer require kilylabs/odata-1c
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
<?php
use Kily\Tools1C\OData\Client;
require __DIR__.'/vendor/autoload.php';
$client = new Client('http://HOSTNAME/BASE/odata/standard.odata/',[
'auth' => [
'YOUR LOGIN',
'YOUR PASSWORD'
],
'timeout' => 300,
]);
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ· 1Π‘
<?php
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ· ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠ° "ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°" 1Π‘
$data = $client->{'Catalog_ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°'}->get()->values();
var_dump($data);
/*
array(1) {
[0]=>
array(105) {
["Ref_Key"]=>
string(36) "3ca886b6-aabd-11e7-1a8d-021c5dd9fc20"
["Description"]=>
string(51) "ΠΠΠΠ¬Π’Π ΠΠ£Π₯ ΠΠΠ HATANGA V2 ΠΠΠ ΠΠ 46"
,,,
*/
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΠΎΡΠΈΠ±ΠΎΠΊ
$data = $client->{'Catalog_ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°'}->get();
if(!$client->isOk()) {
var_dump('Something went wrong: ',$client->getHttpErrorCode(),$client->getHttpErrorMessage(),$client->getErrorCode(),$client->getErrorMessage(),$data->toArray());
die();
}
var_dump($data->values());
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ UUID (ID ΠΈΠ»ΠΈ Ref_Key)
$data = $client->{'Catalog_ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°'}->get("40366f94-cded-11e6-e880-00155dd9fc47")->first();
$data = $client->{'Catalog_ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°'}->id("40366f94-cded-11e6-e880-00155dd9fc47")->get()->first();
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΈΠ»ΡΡΡΡ
$data = $client->{'Catalog_ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°'}->get("ΠΡΡΠΈΠΊΡΠ» eq 'ΠΠ Π’-1'")->values();
$data = $client->{'Catalog_ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°'}->filter("ΠΡΡΠΈΠΊΡΠ» eq 'ΠΠ Π’-1'")->get()->values();
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ
$data = $client->{'Catalog_ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°'}->expand('ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ,ΠΠ°ΡΠΊΠ°')->get()->values();
$data = $client->{'Catalog_ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°'}->expand('ΠΠΈΠ΄ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΡ')->get()->values();
// ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π² Π·Π°ΠΏΡΠΎΡΠ΅
$data = $client->{'Catalog_ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°'}->top(10)->get()->values();
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² 1Π‘
<?php
// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅
$data = $client->{'Catalog_ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°'}->create([
'ΠΡΡΠΈΠΊΡΠ»'=>'CERTANLY_NONEXISTENT',
'Description'=>'test test test nonexistent',
]);
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ID ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
echo $data->getLastId()
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² 1Π‘
<?php
// ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅
$data = $client->{'Catalog_ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°'}->update('40366f94-cded-11e6-e880-00155dd9fc47',[
'Description'=>'Test description',
]);
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ· 1Π‘
<?php
// ΠΠΎΠΌΠ΅ΡΠΊΠ° Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅
$data = $client->{'Catalog_ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°'}->update('40366f94-cded-11e6-e880-00155dd9fc47',{
'DeletionMark'=>true,
});
// ΠΠΎΠ»Π½ΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΠ° ΠΈΠ· 1Π‘ (Ρ Π±Ρ Π½Π΅ ΡΡΠ°Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ...)
$data = $client->{'Catalog_ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°ΡΡΡΠ°'}->delete('40366f94-cded-11e6-e880-00155dd9fc47');
ΠΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΌΠ΅Π½Π° ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ²
<?php
// ΠΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
$data = $client->{'Document_ΠΠΊΡΠΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ
Π Π°Π±ΠΎΡ'}->id("40366f94-cded-11e6-e880-00155dd9fc47")->post();
// ΠΡΠΌΠ΅Π½Π° ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°
$data = $client->{'Document_ΠΠΊΡΠΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ
Π Π°Π±ΠΎΡ'}->id("40366f94-cded-11e6-e880-00155dd9fc47")->unpost();
TODO
- ~~ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ getLastId();~~
- ~~fluent ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ~~
- ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° XML?