GithubHelp home page GithubHelp logo

kilylabs / odata-1c Goto Github PK

View Code? Open in Web Editor NEW
70.0 6.0 27.0 47 KB

PHP oDATA protocol client adopted to use with 1C (1С Enterprise 8.3)

License: MIT License

PHP 100.00%
odata-1c php 1c-enterprise 1c odata

odata-1c's Introduction

odata-1c

OData клиент для 1C

Документация 1С для интерфейса OData: https://its.1c.ru/db/v838doc#bookmark:dev:TI000001358

Установка

Рекомендуемый способ установки через Composer:

$ 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?

odata-1c's People

Contributors

ab-kily avatar yerlenzhubangaliyev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

odata-1c's Issues

Прошу помочь с регистром сведений

Здравствуйте!
Большое спасибо за библиотеку, использую уже некоторое время.
Не подскажете, как удалить запись из регистра сведений?
Добавить запись получается, код ниже.
А каким образом удалить запись, не могу понять. Если просто поменять create на delete выдает ошибку "Не удалось разобрать строку 'Array' как значение типа Edm.DateTime!"

$data = $client->{'InformationRegister_ЦеныНоменклатуры'}->create([
'ВидЦен_Key' => '7c647a18-e471-11e6-80e0-0050569c4e30',
'Номенклатура_Key' => $nomen,
'Характеристика_Key' => $char,
'Цена' => $price,
'ЕдиницаИзмерения' => 'f7dd78f9-e471-11e6-80e0-0050569c4e30',
'ЕдиницаИзмерения_Type' => 'StandardODATA.Catalog_КлассификаторЕдиницИзмерения',
'Актуальность' => true,
'Period' => '2018-02-26T00:00:00'
]);

не работает filter()

Добрый день!
Использую данную библиотеку в Битриксе, версия платформы 1С 8.3.15.1830, режим совместимости 8.2.13.
Просто подключиться и получить данные из справочника получается без проблем, а вот при использовании фильтра возвращается пустота.
Подскажите что с этим делать.

Не получается отправить заказ с сайт в 1с

$data = $client->{'Document_ЗаказКлиента'}->get()->values();//получаю заказ, ниже его привожу

//далее удаляю ключи
unset($data[0]['Ref_Key']);
unset($data[0]['Товары'][0]['Ref_Key']);
unset($data[0]['DataVersion']);
unset($data[0]['ЭтапыГрафикаОплаты'][0]['Ref_Key']);

//отправляю
$result = $client->{'Document_ЗаказКлиента'}->create($data[0]);
// отвечает 500
/*
"odata.error": {
"code": "-1",
"message": {
"lang": "ru",
"value": "Ошибка при выполнении обработчика - 'ОбработкаЗаполнения'"
}
}
*/
Цель создать заказ в 1с. Что делаю не так?

Array
(
[Ref_Key] => 1711a01c-b507-11e7-82e4-dc85de068416
[DataVersion] => AAAAAAAERK0=
[DeletionMark] =>
[Number] => 0000-000001
[Date] => 2017-10-19T22:52:52
[Posted] => 1
[Партнер_Key] => f086a25f-e54d-11e6-be4c-c4aaa95c8a87
[Контрагент_Key] => f086a260-e54d-11e6-be4c-c4aaa95c8a87
[Организация_Key] => 7023ff84-e51f-11e6-be4c-c4aaa95c8a87
[Соглашение_Key] => d83f0987-b4fd-11e7-82e4-dc85de068416
[Сделка_Key] => 00000000-0000-0000-0000-000000000000
[Валюта_Key] => 51c5ae5c-e3ff-11e6-b7ce-db9992ffcc86
[СуммаДокумента] => 1
[ГрафикОплаты_Key] => 00000000-0000-0000-0000-000000000000
[ЖелаемаяДатаОтгрузки] => 0001-01-01T00:00:00
[Склад_Key] => 93235842-57fc-11e7-82db-dc85de068416
[ЦенаВключаетНДС] =>
[Менеджер_Key] => f086a25a-e54d-11e6-be4c-c4aaa95c8a87
[ДополнительнаяИнформация] =>
[ДокументОснование] =>
[ДокументОснование_Type] => StandardODATA.Undefined
[НеОтгружатьЧастями] => 1
[Статус] => КОбеспечению
[МаксимальныйКодСтроки] => 1
[ДатаСогласования] => 2017-10-19T00:00:00
[Согласован] => 1
[ФормаОплаты] =>
[БанковскийСчет_Key] => 5207248a-e70d-11e6-82d3-dc85de068416
[БанковскийСчетКонтрагента_Key] => 00000000-0000-0000-0000-000000000000
[Касса_Key] => 00000000-0000-0000-0000-000000000000
[СуммаАвансаДоОбеспечения] => 0
[СуммаПредоплатыДоОтгрузки] => 1
[ДатаОтгрузки] => 2017-10-20T00:00:00
[АдресДоставки] =>
[НалогообложениеНДС] => ПродажаНеОблагаетсяНДС
[СкидкиРассчитаны] => 1
[ХозяйственнаяОперация] => РеализацияКлиенту
[Комментарий] =>
[НомерПоДаннымКлиента] =>
[ДатаПоДаннымКлиента] => 0001-01-01T00:00:00
[Грузоотправитель_Key] => 00000000-0000-0000-0000-000000000000
[Грузополучатель_Key] => 00000000-0000-0000-0000-000000000000
[БанковскийСчетГрузоотправителя_Key] => 00000000-0000-0000-0000-000000000000
[БанковскийСчетГрузополучателя_Key] => 00000000-0000-0000-0000-000000000000
[ГруппаФинансовогоУчета_Key] => 00000000-0000-0000-0000-000000000000
[КартаЛояльности_Key] => 00000000-0000-0000-0000-000000000000
[Договор_Key] => 00000000-0000-0000-0000-000000000000
[Подразделение_Key] => 00000000-0000-0000-0000-000000000000
[Автор] => f086a25a-e54d-11e6-be4c-c4aaa95c8a87
[Автор_Type] => UnavailableEntities.UnavailableEntity_604931cd-d4a8-48d0-bc59-2ac90e044abb
[ПорядокРасчетов] => ПоЗаказамНакладным
[Назначение_Key] => 00000000-0000-0000-0000-000000000000
[СпособДоставки] => Самовывоз
[ПеревозчикПартнер_Key] => 00000000-0000-0000-0000-000000000000
[ЗонаДоставки_Key] => 00000000-0000-0000-0000-000000000000
[ВремяДоставкиС] => 0001-01-01T00:00:00
[ВремяДоставкиПо] => 0001-01-01T00:00:00
[АдресДоставкиПеревозчика] =>
[АдресДоставкиЗначенияПолей] =>
[АдресДоставкиПеревозчикаЗначенияПолей] =>
[ДополнительнаяИнформацияПоДоставке] =>
[КонтактноеЛицо_Key] => 00000000-0000-0000-0000-000000000000
[Руководитель_Key] => 00000000-0000-0000-0000-000000000000
[ГлавныйБухгалтер_Key] => 00000000-0000-0000-0000-000000000000
[ВернутьМногооборотнуюТару] =>
[СрокВозвратаМногооборотнойТары] => 0
[СостояниеЗаполненияМногооборотнойТары] =>
[СуммаВозвратнойТары] => 0
[НазначениеПлатежа] =>
[ТребуетсяЗалогЗаТару] =>
[Приоритет_Key] => 743a8857-e3ff-11e6-b7ce-db9992ffcc86
[ИдентификаторПлатежа] => ЗК171000000000010006
[ОсобыеУсловияПеревозки] =>
[ОсобыеУсловияПеревозкиОписание] =>
[НаправлениеДеятельности_Key] => 00000000-0000-0000-0000-000000000000
[ПорядокОплаты] => РасчетыВРубляхОплатаВРублях
[Товары] => Array
(
[0] => Array
(
[Ref_Key] => 1711a01c-b507-11e7-82e4-dc85de068416
[LineNumber] => 1
[ДатаОтгрузки] => 2017-10-20T00:00:00
[Номенклатура_Key] => 235e1343-5ca0-11e7-82df-dc85de068416
[Характеристика_Key] => 00000000-0000-0000-0000-000000000000
[Упаковка_Key] => 00000000-0000-0000-0000-000000000000
[КоличествоУпаковок] => 1
[Количество] => 1
[ВидЦены_Key] => 00000000-0000-0000-0000-000000000000
[Цена] => 1
[Сумма] => 1
[СтавкаНДС] => БезНДС
[СуммаНДС] => 0
[СуммаСНДС] => 1
[ПроцентРучнойСкидки] => 0
[СуммаРучнойСкидки] => 0
[ПроцентАвтоматическойСкидки] => 0
[СуммаАвтоматическойСкидки] => 0
[ПричинаОтмены_Key] => 00000000-0000-0000-0000-000000000000
[КодСтроки] => 1
[Отменено] =>
[КлючСвязи] => 1
[Склад_Key] => 93235842-57fc-11e7-82db-dc85de068416
[СрокПоставки] => 0
[Содержание] =>
[СтатусУказанияСерий] => 0
[ВариантОбеспечения] => Требуется
[Серия_Key] => 00000000-0000-0000-0000-000000000000
[НоменклатураНабора_Key] => 00000000-0000-0000-0000-000000000000
[ХарактеристикаНабора_Key] => 00000000-0000-0000-0000-000000000000
[ЦенаСоСкидкой] => 0
[Скидка] => 0
)

    )

[ЭтапыГрафикаОплаты] => Array
    (
        [0] => Array
            (
                [Ref_Key] => 1711a01c-b507-11e7-82e4-dc85de068416
                [LineNumber] => 1
                [ВариантОплаты] => ПредоплатаДоОтгрузки
                [ДатаПлатежа] => 2017-10-19T00:00:00
                [ПроцентПлатежа] => 100
                [СуммаПлатежа] => 1
                [ПроцентЗалогаЗаТару] => 0
                [СуммаЗалогаЗаТару] => 0
                [СуммаОтклоненияМерныхТоваров] => 0
            )

    )

[СкидкиНаценки] => Array
    (
    )

[ДополнительныеРеквизиты] => Array
    (
    )

)

Alfa?

Привет! Хочу использовать твою работу, на сколько она сырая для интеграции с крупным проектом на продакшене?

Исключение как обработать?

Ребята, спасибо за библиотеку !!!

Подскажите как обработать исключение когда нет доступа к серверу 1с

После указанного таймаута вываливается в 500 ошибку

\vendor\kilylabs\odata-1c\src\OData\Client.php on line 216

Как отловить что нет связи с сервером 1с

как добавить select и orderby?

Здравствуйте!
Большое спасибо за библиотеку, пробую использовать для интеграции.
Подскажете, как ограничить выборку по полям? (например как можно отобрать только поля Data,КрайнийСрокУстранения &$select=Data,КрайнийСрокУстранения
и как сделать сортировку (&$orderby=Контрагент/ИНН asc )?

Ошибка при установке composer

Очевидно что версия установленного у меня guzzlehttp/guzzle выше чем при установке kilylabs/odata-1c 0.2 requires guzzlehttp/guzzle ^6.2

Скажите как быть, как поставить ваш пакет на версию guzzlehttp/guzzle ^7.0

Ошибка при установке
Your requirements could not be resolved to an installable set of packages.

Problem 1
- Installation request for kilylabs/odata-1c ^0.2.0 -> satisfiable by kilylabs/odata-1c[0.2].
- kilylabs/odata-1c 0.2 requires guzzlehttp/guzzle ^6.2 -> satisfiable by guzzlehttp/guzzle[6.2.0, 6.2.1, 6.2.2, 6.2.3, 6.3.0, 6.3.1, 6.3.2, 6.3.3, 6.4.0, 6.4.1, 6.5.0, 6.5.1, 6.5.2, 6.5.3, 6.5.4,6.5.5, 6.5.x-dev] but these conflict with your requirements or minimum-stability.

Спасибо!

Возможно ли составить запрос для изменения в табличной документа

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.